123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- // javascript Proxy
- import com.macromedia.javascript.JavaScriptProxy;
- var JS_proxy:JavaScriptProxy = new JavaScriptProxy();
- System.useCodepage = true;
- // get id from querystring
- myURL = this._url;
- //myURL = "http://localhost/dokeosSVN/main/plugin/hotspot/hotspot_solution.swf?modifyAnswers=1&exe_id=2&from_db=3";
- tmpAr = myURL.split("?");
- tmpAr = tmpAr[1].split("&");
- id = tmpAr[0].split("=");
- id = id[1];
- exe_id = tmpAr[1].split("=");
- exe_id = exe_id[1];
- from_db = tmpAr[2].split("=");
- from_db = from_db[1];
- // get URL to load lang and hotspot variables
- //myURL = this._url;
- myPos = myURL.lastIndexOf("/");
- myURL = myURL.substring(0, myPos);
- myPos = myURL.lastIndexOf("/");
- myURL = myURL.substring(0, myPos);
- myPos = myURL.lastIndexOf("/");
- myURL = myURL.substring(0, myPos);
- // movie properties
- var movieWidth:Number = 380;
- var movieHeight:Number = 400;
- // hotspot properties
- var startWidth:Number = 0; // \__ if these values are set, shape will be drawn right and down from the mouse;
- var startHeight:Number = 0; // /
- var pType:String = ""; // possible values: circle, square, poly;
- // other settings
- var i:Number = 1;
- var isDrawing:Boolean = false;
- var hotspots_c:Array = new Array('0x4271B5','0xFE8E16','0x45C7F0','0xBCD631','0xD63173','0xD7D7D7','0x90AFDD','0xAF8640','0x4F9242','0xF4EB24','0xED2024','0x3B3B3B');
- // make array with all elements
- var hotspots:Array = new Array();
- // get data from database
- this.createEmptyMovieClip("target_mc", 2000);
- //_answers
- loadVariables(myURL + "/exercice/hotspot_answers.as.php?modifyAnswers="+id+"&exe_id="+exe_id+"&from_db="+from_db, target_mc);
- var param_interval:Number = setInterval(checkParamsLoaded, 100);
- // language variables
- var str_choose:String = "";
- var lang_interval:Number
- // counter for language (if language can't be loaded after 2 sec,
- // english will be loaded
- var counter:Number = 0;
- // booleans for loading
- var langLoaded:Boolean = false;
- var varsLoaded:Boolean = false;
- var imageLoaded:Boolean = false;
- // image preloader
- var loadListener:Object = new Object();
- loadListener.onLoadComplete = function(){
- _root.imageLoaded = true;
- _root.showInterface();
- }
- var mcLoader:MovieClipLoader = new MovieClipLoader();
- mcLoader.addListener(loadListener);
- var mc:MovieClip = _root.image_mc;
- /////////////////////////////////////////////////////////////////////////////////
- // FUNCTIONS
- /////////////////////////////////////////////////////////////////////////////////
- // show hotspots, user can't click anymore
- function showHotspots(num){
- for(j=1;j<=_root.hotspots.length;j++){
- _root.map_mc["hotspot"+j]._alpha = num;
- }
- }
- function showUserpoints(num){
- for(j=1;j<=_root.hotspots.length;j++){
- _root["hotspot_answer"+j]._alpha = num;
- if(num==0){
- _root["hotspot_answer"+j].hotspot_mc._visible = false;
- }else{
- _root["hotspot_answer"+j].hotspot_mc._visible = true;
- }
- }
- }
- function showInterface(){
- if((_root.langLoaded == true) and (_root.varsLoaded == true) and (_root.imageLoaded == true)){
- _root.showUserpoints(100);
- _root.showHotspots(100);
- _root.loading_mc._visible = false;
- }
- }
- // get language file
- function getLang(){
- counter++;
- if (_root.lang_mc.done != undefined) {
- _root.show_userPoints_btn.label = _root.lang_mc.showUserPoints;
- _root.show_hotspots_btn.label = _root.lang_mc.showHotspots;
-
- // check if interface can be showed (if everything else is loaded)
- _root.langLoaded = true;
- _root.showInterface();
-
- // clear interval
- clearInterval(_root.lang_interval);
- }else if(counter==20){
- // clear interval
- clearInterval(_root.lang_interval);
-
- // set counter to zero
- _root.counter = 0;
-
- // set new interval (get english version)
- loadVariables(myURL + "/lang/english/hotspot.inc.php", _root.lang_mc);
- _root.lang_interval = setInterval(getLang, 100);
-
- }
- }
- function checkParamsLoaded() {
- if (target_mc.done != undefined) {
- // once we know the language, get language-variables from language file
- language = target_mc["hotspot_lang"];
- _root.createEmptyMovieClip("lang_mc", 2001);
-
- //loadVariables(myURL + "/lang/" + language + "/hotspot.inc.php", _root.lang_mc);
- loadVariables(myURL + "/exercice/hotspot.inc.php", _root.lang_mc);
-
- _root.lang_interval = setInterval(getLang, 100);
-
- // start loading external image
- _root.mcLoader.loadClip("../../courses/" + target_mc["courseCode"] + "/document/images/" + target_mc["hotspot_image"], mc);
-
- // make needed array's: filled if hotspot exists, empty if not
- for(m = 1; m <= 12; m++){
- // make seperate lists
- if(target_mc["hotspot_" + m]=="true"){
- // add to general list
- tmpAr = Array();
- tmpAr.push(m);
- tmpAr.push(target_mc["hotspot_" + m + "_type"]);
- _root.hotspots.push(tmpAr);
-
- if (target_mc["hotspot_" + m + "_type"] != 'poly' && target_mc["hotspot_" + m + "_type"] != 'delineation'){
- // x;y|height|width
- _root["p_hotspot_" + m] = new Array;
- $coordinates = target_mc["hotspot_" + m + "_coord"].split("|");
- $tmp_xy = $coordinates[0].split(";");
- $x = $tmp_xy[0];
- $y = $tmp_xy[1];
- $height = $coordinates[1];
- $widht = $coordinates[2];
- _root["p_hotspot_" + m].push($x);
- _root["p_hotspot_" + m].push($y);
- _root["p_hotspot_" + m].push($height);
- _root["p_hotspot_" + m].push($widht);
- }else{
- // p1_x;p1_y|p2_x;p2_y|...
- _root["p_hotspot_" + m] = new Array();
- $coordinates = target_mc["hotspot_" + m + "_coord"].split("|");
-
- for(k=0;k<$coordinates.length;k++){
- $tmp_xy = $coordinates[k].split(";");
- tempArray = Array();
- tempArray.push($tmp_xy[0]);
- tempArray.push($tmp_xy[1]);
- _root["p_hotspot_" + m].push(tempArray);
- }
- }
- }else{
- _root["p_hotspot_" + m] = Array();
- }
- }
-
- // set border around image
- _root.map_mc._width = int(target_mc.hotspot_image_width) + 1;
- _root.map_mc._height = int(target_mc.hotspot_image_height) + 1;
-
- // draw the hotspots
- drawShapes();
-
- // check if interface can be showed (if everything else is loaded)
- _root.varsLoaded = true;
- _root.showInterface();
-
- // clear interval
- clearInterval(param_interval);
- }
- }
- // draw the shapes that are given from the database
- function drawShapes(){
- // draw points where user clicked
- _root.drawPoints();
-
- // draw hotspots
- for (var j:String in hotspots) {
- if(j <> ""){
- // +1 because array names starts from 1
- _root.i = int(j) + 1;
- // -1 because array values starts from 0
- _root.pType = _root.hotspots[_root.i - 1][1];
- if(_root.pType=="poly" || _root.pType=="delineation"){
- drawPoly();
- }
- else{
- drawShape(true);
- }
- _root.map_mc["hotspot" + _root.i]._alpha = 0;
- }
- }
- }
- function drawPoints(){
- answers = _root.target_mc.p_hotspot_answers.split("|");
-
- if(answers[0]!=''){
- j = 1;
- k = 500;
-
- for(var z:String in answers){
- if(target_mc["hotspot_"+j+"_type"]=="delineation")
- {
- // trace poly
- delineation_coords = answers[j-1].split("/");
- drawDelineation(j, delineation_coords);
- }
- else
- {
-
- xy = answers[j-1].split(";");
- $x = xy[0];
- $y = xy[1];
-
- // create new hotspot
- _root.createEmptyMovieClip("hotspot_answer" + j, k);
-
- // attach correct type of hotspot
- _root["hotspot_answer" + j].attachMovie("numbers", "hotspot_mc", _root["hotspot_answer" + j].getNextHighestDepth());
-
- _root["hotspot_answer" + j].hotspot_mc._width = 33;
- _root["hotspot_answer" + j].hotspot_mc._height = 22;
-
- _root["hotspot_answer" + j].hotspot_mc._x = int($x) + _root.map_mc._x;
- _root["hotspot_answer" + j].hotspot_mc._y = int($y) + _root.map_mc._y;
-
- _root["hotspot_answer" + j].hotspot_mc.order_txt.text = int(j);
- _root["hotspot_answer" + j].hotspot_mc._visible = false;
-
- _root["hotspot_answer" + j]._alpha = 0;
- }
-
- j++;
- k++;
- }
- }
-
-
- }
- function drawShape(userDrawing){
- // create new hotspot
- _root.map_mc.createEmptyMovieClip("hotspot" + _root.i, _root.i);
-
- // attach correct type of hotspot
- _root.map_mc["hotspot" + _root.i].attachMovie(_root.pType, "hotspot_mc", _root.map_mc["hotspot" + _root.i].getNextHighestDepth());
-
- _root.map_mc["hotspot" + _root.i].hotspot_mc._visible = true;
- _root.map_mc["hotspot" + _root.i].hotspot_mc.center_mc._alpha = 60;
- _root.map_mc["hotspot" + _root.i].hotspot_mc._x = _root["p_hotspot_"+ _root.i][0];
- _root.map_mc["hotspot" + _root.i].hotspot_mc._y = _root["p_hotspot_"+ _root.i][1];
- _root.map_mc["hotspot" + _root.i].hotspot_mc._width = _root["p_hotspot_"+ _root.i][2];
- _root.map_mc["hotspot" + _root.i].hotspot_mc._height = _root["p_hotspot_"+ _root.i][3];
-
- colorchange = new Color(_root.map_mc["hotspot" + _root.i].hotspot_mc);
- colorchange.setRGB(_root.hotspots_c[_root.i - 1]);
- }
- // when black lines of hotspots are deleted, draw the exact same poly with coordinates
- // that are saved in the array
- function drawPoly(){
- // create empty movieclip
- _root.map_mc.createEmptyMovieClip("hotspot" + _root.i, _root.i);
-
- // begin filling the movieclip
- _root.map_mc["hotspot" + _root.i].beginFill(_root.hotspots_c[_root.i - 1], 60);
-
- // set linestyle
- _root.map_mc["hotspot" + _root.i].lineStyle(1, _root.hotspots_c[_root.i - 1], 100);
-
- // move mouse to first coordinate
- _root.map_mc["hotspot" + _root.i].moveTo(_root["p_hotspot_"+_root.i][0][0],_root["p_hotspot_"+_root.i][0][1]);
-
- // draw lines to all coordinates
- v = _root["p_hotspot_"+_root.i].length;
- for (k=1;k<v;k++){
- _root.map_mc["hotspot" + _root.i].lineTo(_root["p_hotspot_"+_root.i][k][0],_root["p_hotspot_"+_root.i][k][1]);
- }
-
- // attach first and last coordinates
- _root.map_mc["hotspot" + _root.i].lineTo(_root["p_hotspot_"+_root.i][0][0],_root["p_hotspot_"+_root.i][0][1]);
-
- // stop filling the movieclip
- _root.map_mc["hotspot" + _root.i].endFill();
- }
- function drawDelineation(level, coords){
-
- // create empty movieclip
- _root.map_mc.createEmptyMovieClip("hotspot_delineation" + level, 2000+level);
- // begin filling the movieclip
- _root.map_mc["hotspot_delineation" + level].beginFill(0xFFFFFF, 60);
-
- // set linestyle
- _root.map_mc["hotspot_delineation" + level].lineStyle(1,0x000000, 100);
-
- // move mouse to first coordinate
- xy_origin = coords[0].split(";");
- _root.map_mc["hotspot_delineation" + level].moveTo(xy_origin[0],xy_origin[1]);
-
- // draw lines to all coordinates
- v = coords.length;
- for (k=1;k<v;k++){
- xy = coords[k].split(";");
- _root.map_mc["hotspot_delineation" + level].lineTo(xy[0],xy[1]);
- }
-
- // attach first and last coordinates
- _root.map_mc["hotspot_delineation" + level].lineTo(xy_origin[0],xy_origin[1]);
-
- // stop filling the movieclip
- _root.map_mc["hotspot_delineation" + level].endFill();
- }
- function jsdebug(debug_string){
- _root.JS_proxy.jsdebug(debug_string);
- }
|