![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Feb 2012
Сообщений: 205
|
Здравствуйте!
наверняка, не в эту тему нужно, но даже не знаю, куда Сегодня с утра пытаюсь вникать в азы создания изометрических флеш-приложений посредствам библиотек 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 { 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(); } } } |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
Вы присваиваете спрайт какому-то скину? Этого видимо нельзя делать.
|
|
|||||
|
Регистрация: Feb 2012
Сообщений: 205
|
весь этот скрипт отлично работал, теперь внезапно перестал=(
Skin'ом здесь считается .swf, подключенный для заливки объекта. Это у меня есть и какое-то время всё компилировалось отлично. Добавлено через 13 минут полная ошибка: Error: skin asset is not of the following types: BitmapData, DisplayObject, ISpriteAsset, IFactory or Class cast as DisplayOject. at as3isolib.display::IsoSprite/renderSprites()[\as3isolib.v1.core\src\as3isolib\display\IsoSprite.as:176] at as3isolib.display::IsoSprite/renderLogic()[\as3isolib.v1.core\src\as3isolib\display\IsoSprite.as:128] at as3isolib.core::IsoContainer/render()[\as3isolib.v1.core\src\as3isolib\core\IsoContainer.as:297] at as3isolib.core::IsoContainer/renderChild()[\as3isolib.v1.core\src\as3isolib\core\IsoContainer.as:357] at as3isolib.core::IsoContainer/renderLogic()[\as3isolib.v1.core\src\as3isolib\core\IsoContainer.as:343] at as3isolib.display.scene::IsoScene/renderLogic()[\as3isolib.v1.core\src\as3isolib\display\scene\IsoScene.as:327] at as3isolib.core::IsoContainer/render()[\as3isolib.v1.core\src\as3isolib\core\IsoContainer.as:297] at Iso()[\Adobe Flash Builder 4.5\Iso\src\Iso.as:75] - эта строка - размещение сцены в окне просмотра. Добавлено через 1 час 53 минуты я, похоже, поняла в чём проблема. "ошибка версии компилятора. Возможно, необходимоа переустановка приложения" сам билдер выдал после переустановки - заработало Добавлено через 3 часа 55 минут и вот ещё: если однажды проект скомпилировался с ошибкой - как его не исправляй - ошибка продолжит появляться. нужно найти скомпилированный .swf своего проекта - и удалить ![]() |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
Попробуйте выбрать компиляцию под другую версию плеера, может as3isolib не подходит для компиляции плеера которая у вас выбрана.
|
|
|||||
|
Если запускаете в браузере, нужно чистить кэш (для фф вроде бы можно сделать так, чтобы не сохранял историю) Ну и Project->Clean. Это на всякий случай, если не знали или запамятовали.
__________________
Nothing last forever, even cold november rain. |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:42. |
|
|
« Предыдущая тема | Следующая тема » |
|
|