// 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