You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							349 lines
						
					
					
						
							11 KiB
						
					
					
				
			
		
		
	
	
							349 lines
						
					
					
						
							11 KiB
						
					
					
				// 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);
 | 
						|
}
 | 
						|
 |