|
|
|||||
Flare3D и мышиные события
Делал поиск по данному разделу форума и не нашел ни одной темы посвященной Flare3D. Мне он показался очень качественным и удобным движком, однако при создании первого же тестового проекта столкнулся с проблемой - не удается поймать мышиное событие (вообще никакое ни клик на модель, ни клик на сцену). Демки изучил, все делаю как там.
Код класса прилагаю: package { import flare.basic.*; import flare.core.*; import flare.loaders.*; import flare.system.*; import flare.events.*; import flash.display.Sprite; import flash.events.*; /** * ... * @author PainKiller */ [SWF(frameRate = 60, width = 1080, height = 1000, backgroundColor = 0x000000)] public class Main extends Sprite { private var scene:Scene3D; private var floor:Pivot3D; private var axis:Pivot3D; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); scene = new Viewer3D(this); scene.autoResize = true; scene.camera = new Camera3D("myOwnCamera"); // we can manipulate the camera just like any 3d object. scene.camera.setPosition( 0, 10, -20 ); scene.camera.lookAt( 0, 0, 0 ); // add global scene progress and complete events. scene.addEventListener( Scene3D.PROGRESS_EVENT, progressEvent); scene.addEventListener( Scene3D.COMPLETE_EVENT, completeEvent); // loads the objects. floor = scene.addChildFromFile( "flare-europe3D-floor1.zf3d" ); //floor.forEach (traceName); floor.addEventListener (MouseEvent3D.CLICK, onClick, true); axis = scene.addChildFromFile( "axis.f3d" ); } private function traceName (child:Pivot3D):void { trace (child.name); child.addEventListener (MouseEvent3D.CLICK, onClick); } private function onClick (e:MouseEvent3D):void { trace (e.target); trace (e.currentTarget); } private function progressEvent(e:Event):void { // gets the global loading progress. trace( scene.loadProgress ); } private function completeEvent(e:Event):void { trace( "complete!" ); // just scale the model. axis.setScale( 0.5, 0.5, 0.5 ); trace (floor.children.length); floor.addEventListener (MouseEvent3D.CLICK, onClick); floor.addEventListener (MouseEvent3D.MOUSE_MOVE, onClick); scene.addEventListener (MouseEvent3D.CLICK, onClick); //floor.forEach (traceName); } } } Ну и вообще, если кто работал с движком поделитесь впечатлениями. Добавлено через 36 минут Да небольшое уточнение - поковырявшись в их демках, я обнаружил что в демках события отлавливаются только на примитивах, примеров с загруженными моделями нет. Можно ли заставить слушать мышиное событие модель, наверняка ведь можно!!! |
|
|||||
Регистрация: Aug 2001
Адрес: Украина
Сообщений: 175
|
package { import flare.basic.*; import flare.core.*; import flare.primitives.*; import flare.loaders.*; import flare.system.*; import flare.events.*; import flash.display.*; import flash.events.*; /* vse prosto */ [SWF(frameRate = 60, width = 800, height = 600, backgroundColor = 0x000000)] public class Main extends Sprite { private var scene:Scene3D; private var cube:Cube; private var floor:Plane; private var axis:Pivot3D; public function Main() { scene = new Viewer3D( this ); scene.camera = new Camera3D( "" ); scene.camera.setPosition( 0, 10, -100 ); scene.camera.lookAt( 0, 0, 0 ); scene.addEventListener( Scene3D.COMPLETE_EVENT, completeEvent); axis = scene.addChildFromFile( "axis.f3d" ); } private function completeEvent(e:Event):void { cube = new Cube(); scene.addChild(cube); cube.setPosition(0,5,0); floor = new Plane( "floor", 200, 200, 1, null, "+xz" ); floor.addEventListener (MouseEvent3D.CLICK, onClick, true); scene.addChild(floor); axis.setScale( 1.5, 1.5, 1.5 ); axis.parent = cube; cube.addEventListener( MouseEvent.CLICK, onClick); } private function onClick (e:MouseEvent3D):void { trace ("Click"); } } } |
|
|||||
просто то просто, только приведенный код мою проблему бы не решил. Иногда модель как то странно экспортируется - не видно детей, и не ловит клики, я в самом начале работы с движком с этим столкнулся, но сейчас вроде все нормально.
|
|
|||||
Регистрация: Aug 2001
Адрес: Украина
Сообщений: 175
|
Экспортируются простые объекты, более сложные - целые сцены и анимация.
Экспорт - экспортом, а события - событиями ! |
Часовой пояс GMT +4, время: 01:20. |
|
« Предыдущая тема | Следующая тема » |
|
|