Добавление внешних объектов на isoScene
Создал сцену ( isoScene ) и добавил на неё сетку при помощи библиотеки as3isolib (actionScript 3), Все работает отлично, но когда загружаю внешний файл (карту в формате *.swf), то при добавлении карты как ребенка ( addChild() ) к этой изометрической сцене выбивает ошибку " Неявное приведение значения типа Flash.Display:loader к несоответствующему типу as3isolib.data:iNode ". Если делать addChild просто к сцене, то карта нормально добавляется, но при перетаскивании сцены, она не шевелится. Подскажите, может както конвертировать надо или приём какой применить чтобы добавить объект в IsoScene?
Код AS3:
package src
{
import as3isolib.geom.Pt;
import flash.display.Loader;
import flash.display.MovieClip;
import as3isolib.display.scene.IsoGrid;
import as3isolib.display.primitive.IsoBox;
import as3isolib.display.scene.IsoScene;
import as3isolib.display.IsoView;
import as3isolib.graphics.SolidColorFill;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
/**
* ...
* @author KajeNick
*/
public class Map extends MovieClip
{
private var grid:IsoGrid;
private var scene:IsoScene;
private var viewPort:IsoView;
private var loader:Loader;
public function Map()
{
viewPort = new IsoView();
viewPort.setSize(800, 600); //размер карты
viewPort.centerOnPt(new Pt(0, 0, 0), false); //отступ от краев экрана resource/maps/map1.swf
addChildAt(viewPort, 0);
viewPort.addEventListener(MouseEvent.MOUSE_DOWN, onStartPan, false, 0, true); //таскать карту туда сюда
var loader:Loader = new Loader();
loader.load(new URLRequest("resource/maps/map1.swf"));
addChildAt(loader, 0);
scene = new IsoScene();
viewPort.addScene(scene);
viewPort.addChild(loader);
grid = new IsoGrid();
grid.setGridSize(16, 16, 1);
grid.cellSize = 30;
grid.showOrigin = false;
scene.addChild(grid);
viewPort.addChildAt(loader, numChildren - 1); //ставим землю ниже сетки
addEventListener(Event.ENTER_FRAME, onRender, false, 0, true);
}
private function onRender(e:Event):void
{
scene.render();
}
//перемещение карты
private var panPt:Pt;
private function onStartPan(e:MouseEvent):void
{
panPt = new Pt(stage.mouseX, stage.mouseY);
viewPort.removeEventListener(MouseEvent.MOUSE_DOWN, onStartPan);
viewPort.addEventListener(MouseEvent.MOUSE_MOVE, onPan, false, 0, true);
viewPort.addEventListener(MouseEvent.MOUSE_UP, onStopPan, false, 0, true);
}
private function onPan(e:MouseEvent):void
{
viewPort.panBy(panPt.x - stage.mouseX, panPt.y - stage.mouseY);
panPt.x = stage.mouseX;
panPt.y = stage.mouseY;
}
private function onStopPan(e:MouseEvent):void
{
viewPort.removeEventListener(MouseEvent.MOUSE_MOVE, onPan);
viewPort.removeEventListener(MouseEvent.MOUSE_UP, onStopPan);
viewPort.addEventListener(MouseEvent.MOUSE_DOWN, onStartPan, false, 0, true);
}
// конец перемещения карты
}
}
|