логично

Код AS1/AS2:
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.net.URLLoader;
import flash.net.URLRequest;
import mx.controls.Image;
import mx.core.UIComponent;
import mx.managers.PopUpManager;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.http.HTTPService;
import AdressItem;
private var alert:Alert;
private var needInit:Boolean = true;
private var items:Array = new Array();
private var xmlLoader:URLLoader = new URLLoader();
public var adresses:XML = new XML();
public var ui:UIComponent = new UIComponent();
public var showSprite:Sprite = new Sprite();
public var backgroundSprite:Image;
public var pictureSprite:Image;
public var closeButton:Image;
public var pm:PopUpManager = new PopUpManager();
private function http_fault(event:FaultEvent):void
{
var title:String = event.type + " (" + event.fault.faultCode + ")";
var text:String = "Fault load XML"; //event.fault.faultString
alert = Alert.show(text, title);
}
private function loadXML( event:Event ):void
{
//OK
adresses = XML(event.target.data);
trace( "start reed XML:" );
trace( adresses );
for ( var i:int = 0; i < adresses.node.length(); i++ )
{
/*
var item:AdressItem = new AdressItem( adresses.node[i].text[0],
adresses.node[i].text[1],
adresses.node[i].text[2],
adresses.node[i].picture,
adresses.node[i].coord.@x,
adresses.node[i].coord.@y );
item.visible = true;
*/
var item:Image = new Image();
item.id = i.toString();
item.x = adresses.node[i].coord.@x;
item.y = adresses.node[i].coord.@y;
item.source = "point.png";
var pic:String = adresses.node[i].picture;
trace( item );
item.addEventListener(MouseEvent.CLICK, function(event:Event):void
{
//mouse click, need show image
trace( event );
/*
uic.x = item.x;
uic.y = item.y+200;
pictureSprite.source = adresses.node[this.id].picture;
showSprite.addChild(pictureSprite);
addChild( uic );
trace( showSprite.x, showSprite.y, pictureSprite.source, this.id );
*/
});
this.addChild( item );
}
//Alert.show(XML(event.result));
}
public function start_prog(event:Event):void
{
if ( needInit )
{
trace( "Need init" );
var background:Image = new Image();
background.source = "map.jpg";
backgroundSprite = new Image();
backgroundSprite.source = "rect.png";
closeButton = new Image();
closeButton.source = "close.png";
closeButton.addEventListener(MouseEvent.CLICK, function( event:Event ):void
{
//
});
pictureSprite = new Image();
pictureSprite.source = "no_image.png";
ui.addChild( backgroundSprite );
ui.addChild( pictureSprite );
ui.addChild( closeButton );
ui.x = 200;
ui.y = 100;
this.addChild( background );
this.addChild( ui );
needInit = false;
//resultFormat="e4x" fault="http_fault(event);" result="http_result(event)"
xmlLoader.addEventListener( Event.COMPLETE, loadXML );
try
{
xmlLoader.load( new URLRequest( "adress_map.xml" ) );
}
catch (error:ArgumentError)
{
Alert.show("An ArgumentError has occurred.");
}
catch (error:SecurityError)
{
Alert.show("A SecurityError has occurred.");
}
}
}
Добавлено через 6 минут
не обязательно использовать данный код, просто покажите тривиальный пример включающий в себя основную картинку, картинку с превьюшкой ( к которую я смогу менять через код ), и закрывающую часть, этого будет вполне достаточно.
Добавлено через 2 часа 3 минуты
сделал самым смешным способом, тупо добавляю все картинки с позиционированием по клику и убираю (removeChild) после нажатия кнопки закрыть.
но всё таки, если кто знает другие варианты, буду рад...