Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [...] Flare3D и мышиные события (http://www.flasher.ru/forum/showthread.php?t=205120)

PainKiller 19.11.2013 17:05

Flare3D и мышиные события
 
Делал поиск по данному разделу форума и не нашел ни одной темы посвященной Flare3D. Мне он показался очень качественным и удобным движком, однако при создании первого же тестового проекта столкнулся с проблемой - не удается поймать мышиное событие (вообще никакое ни клик на модель, ни клик на сцену). Демки изучил, все делаю как там.
Код класса прилагаю:
Код AS3:

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 минут
Да небольшое уточнение - поковырявшись в их демках, я обнаружил что в демках события отлавливаются только на примитивах, примеров с загруженными моделями нет. Можно ли заставить слушать мышиное событие модель, наверняка ведь можно!!!

men 22.12.2013 17:10

Код AS3:

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");
                }
        }
}

все просто напросто :)

PainKiller 23.12.2013 10:44

просто то просто, только приведенный код мою проблему бы не решил. Иногда модель как то странно экспортируется - не видно детей, и не ловит клики, я в самом начале работы с движком с этим столкнулся, но сейчас вроде все нормально.

men 23.12.2013 17:04

Экспортируются простые объекты, более сложные - целые сцены и анимация.
Экспорт - экспортом, а события - событиями ! :D

PainKiller 24.12.2013 10:55

ну вам виднее :-))))


Часовой пояс GMT +4, время: 22:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.