Показать сообщение отдельно
Старый 12.11.2012, 21:33
Маруська вне форума Посмотреть профиль Отправить личное сообщение для Маруська Найти все сообщения от Маруська
  № 1  
Ответить с цитированием
Маруська

Регистрация: Feb 2012
Сообщений: 205
Question азы работы с as3isolib, как справиться с ошибкой?

Здравствуйте!
наверняка, не в эту тему нужно, но даже не знаю, куда
Сегодня с утра пытаюсь вникать в азы создания изометрических флеш-приложений посредствам библиотек as3isolib.
По двум распространённым в сети урокам добилась создания карты, разместила 1 дополнительный Sprite, который должен переноситься на scene в место клика мышкой (работал странно - переносил только в позицию 0,0)
потом добавила ещё один спрайт (в коде ошибок не было) - и появилась ошибка компиляции:

Error: skin asset is not of the following types: BitmapData, DisplayObject, ISpriteAsset, IFactory or Class cast as DisplayOject.

Отменила все изменения до последней сработавшей версии - ошибка продолжает появляться. не пойму - что случилось?

Ну и ещё просьба: если знаете хорошие уроки по работе в builder с движком as3isolib - дайте, пожалуйста, ссылки.

скрипт:
package
Код AS3:
{
	import as3isolib.display.IsoSprite;
	import as3isolib.display.IsoView;
	import as3isolib.display.primitive.IsoBox;
	import as3isolib.display.scene.IsoGrid;
	import as3isolib.display.scene.IsoScene;
	import as3isolib.geom.IsoMath;
	import as3isolib.geom.Pt;
 
	import eDpLib.events.ProxyEvent;
 
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
 
	[SWF(width='800', height='600', backgroundColor='#000000', framerate='30')]
 
	public class Iso extends Sprite
	{
		private static const CELL_SIZE:Number=50;
 
		private var grid:IsoGrid;
		private var scene:IsoScene;
		private var view:IsoView;
		private var pole:IsoSprite;
		private var iso:IsoSprite
 
		public function Iso ()
		{
			grid = new IsoGrid();
			grid.setGridSize(8,8,1);
			grid.cellSize= CELL_SIZE;
			grid.showOrigin=false;
			grid.addEventListener(MouseEvent.CLICK,gridClick);
 
			scene = new IsoScene();
			scene.addChild(grid);
 
			for (var i:int =0; i<8; i++)
			{
				for (var j:int =0; j<8; j++)
				{	iso = new IsoSprite();
					iso.sprites=[grass];
					if (Math.random()<0.7)
						iso.sprites=[grass];
					if (Math.random()>=0.7 && Math.random()<0.8)
						iso.sprites=[grass2];
					if (Math.random()>=0.8 && Math.random()<0.9)
						iso.sprites=[grass3];
					if (Math.random()>=0.9)
						iso.sprites=[grass4];
					iso.moveBy(j*50,i*50,0);
					scene.addChild(iso);
					//switch (Math.random()*10)             //кстати, подскажите, 
					//case 0,1,2,3:iso.sprites=[grass];     //как здесь правильно 
					//case 4,5,6:iso.sprites=[grass2];      //организовать switch
					//case 7,8:iso.sprites=[grass3];
					//case 9:iso.sprites=[grass4];
				}
			}
 
			pole=new IsoSprite();
			pole.sprites=[grad];
			pole.moveTo(150,-200,0);			
			scene.addChild(pole);
 
 
			scene.render();
 
			view= new IsoView();
			view.setSize(800,600);
			view.centerOnPt(new Pt(200,200,0))
			view.addScene(scene);
			addChild(view);
		}
 
		protected function gridClick(event:ProxyEvent):void
		{
			var me:MouseEvent= MouseEvent(event.targetEvent);
			var p:Pt=new Pt(me.localX, me.localY);
			IsoMath.screenToIso(p);
			pole.moveTo(Math.floor(p.x/CELL_SIZE)*CELL_SIZE,Math.floor(p.y/CELL_SIZE)*CELL_SIZE,1);
			scene.render();
		}
	}
}