Ah, oui tu as raison, j'ai peut être été un peu bourrin, désolé ^^ :
- j'ai mis un exemple plus bas, ici le deuxième pointeur est controlé
par un Timer,
- le but est que le roll-over fonctionne au passage du gros curseur
droit au-dessus du Plane, pour l'instant seule la souris fonctionne,
- AS3/FP9/Flex SDK3 (= FlashDevelop)

Merci, merci


package
{
        import org.papervision3d.events.InteractiveScene3DEvent;
        import org.papervision3d.materials.ColorMaterial;
        import org.papervision3d.objects.primitives.Cube;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.cameras.*;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.render.BasicRenderEngine;
        import org.papervision3d.objects.primitives.Plane;
        import org.papervision3d.core.utils.Mouse3D;
        import org.papervision3d.core.utils.virtualmouse.VirtualMouse;
        import
org.papervision3d.core.utils.virtualmouse.VirtualMouseMouseEvent
        import org.papervision3d.materials.utils.MaterialsList;

        import flash.events.*;
        import flash.display.*;
        import flash.utils.Timer;
        import flash.text.TextField;

        public class Main extends Sprite
        {
                private const REFRESH_FREQ:int = 30;

                private var _container:DisplayObjectContainer;

                protected var _viewport:Viewport3D;
                protected var _renderer:BasicRenderEngine;
                protected var _scene:Scene3D;
                protected var _camera:Camera3D;
                protected var _refreshBeacon:Timer;
                protected var _plane:Plane;
                protected var _mouse:VirtualMouse;
                protected var _gizmo:Cube;
                protected var _offset:int = 3;
                protected var _output:TextField;

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

                        // container général
                        _container = new Sprite();
                        stage.addChild(_container);

                        // initialisation PV3D
                        _viewport = new Viewport3D(800, 600, false, true, 
false);
                        _viewport.buttonMode = true;
                        _container.addChild(_viewport);
                        _renderer = new BasicRenderEngine();
                        _scene = new Scene3D();
                        _camera = new Camera3D();
                        _camera.zoom = 1;
                        _camera.focus = 1000;

                        // récupére une VirtualMouse
                        _mouse = _viewport.interactiveSceneManager.virtualMouse;

                        // ajout objet interactif
                        _plane = new Plane(new ColorMaterial(), 200, 200);
                        _plane.material.interactive = true;
                        
_plane.addEventListener(InteractiveScene3DEvent.OBJECT_OVER,
onPlaneOver);
                        
_plane.addEventListener(InteractiveScene3DEvent.OBJECT_OUT,
onPlaneOut);

                        _scene.addChild(_plane);

                        // ajout curseur secondaire
                        _gizmo = new Cube( new MaterialsList({all:new
ColorMaterial(0x888888)}), 10, 10, 10 );
                        _gizmo.z -= 200;
                        _scene.addChild(_gizmo);

                        var bx:Cube = new Cube( new MaterialsList({all:new
ColorMaterial(0xFF0000)}), 10, 10, 10 );
                        var by:Cube = new Cube( new MaterialsList({all:new
ColorMaterial(0x00FF00)}), 10, 10, 10 );
                        var bz:Cube = new Cube( new MaterialsList({all:new
ColorMaterial(0x0000FF)}), 10, 10, 10 );

                        bx.x = 100;
                        by.y = 100;
                        bz.z = 100;

                        bx.scaleX = 15;
                        by.scaleY = 15;
                        bz.scaleZ = 15;

                        _gizmo.addChild(bx);
                        _gizmo.addChild(by);
                        _gizmo.addChild(bz);

                        // boucle principale
                        _refreshBeacon = new Timer(1000 / REFRESH_FREQ);
                        _refreshBeacon.addEventListener(TimerEvent.TIMER, 
onRefresh);
                        _refreshBeacon.start();

                        _output = stage.addChild(new TextField()) as TextField;
                        _output.multiline = true;
                        _output.mouseEnabled = false;
                        _output.text = '---\n';
                        _output.height = 600;
                        _output.width = 800;
                }

                private function onVirtualMouseOver(e:MouseEvent):void
                {
                        _output.appendText('Main::onVirtualMouseOver\n');
                }

                private function onVirtualMouseOut(e:MouseEvent):void
                {
                        _output.appendText('Main::onVirtualMouseOut\n');
                }

                private function onPlaneOver(e:InteractiveScene3DEvent):void
                {
                        _output.appendText('Main::onPlaneOver\n');
                }

                private function onPlaneOut(e:InteractiveScene3DEvent):void
                {
                        _output.appendText('Main::onPlaneOut\n');
                }

                private function onRefresh(e:TimerEvent):void
                {
                        // fais bouger le curseur virtuel
                        if (_gizmo.x + _offset > 300 || _gizmo.x + _offset < 
-300)
                                _offset *= -1;
                        _gizmo.x += _offset;
                        _gizmo.y += _offset;
                        _mouse.x += _offset;
                        _mouse.y += _offset;

                        _renderer.renderScene(_scene, _camera, _viewport);
                }
        }
}




On 16 sep, 16:25, ekameleon <[EMAIL PROTECTED]> wrote:
> Ah .. autant pour moi .. tu parles de Papervision dans le titre de ton
> message .. mais manque tout de même les infos sur le reste (code, etc..)
> EKA+ :)
>
> Le 16 septembre 2008 16:24, ekameleon <[EMAIL PROTECTED]> a écrit :
>
> > Hello :)
> > Nouveau sur le FCNG ? :)
>
> > Faut qu'on devine beaucoup de chose dans ta question au dessus;)
>
> > J'imagine que tu parles de Papervision ? ?
>
> > Tu sais nous ne sommes pas tous des livres ouvert sur la connaissance
> > universelle de tout ce qui existe en ActionScript ;) Faut un peu nous aider
> > quand vous posez des questions ;)
>
> > Sinon comme toujours...
>
> > 1 - isole ton problème ... fait un code simple
>
> > 2 - donne nous du code ... on peut pas t'aider si tu montres pas ton code
> > :) Et surtout pas tout ton code mais seulement celui qui va nous permettre
> > de voir ce que tu fais :)
>
> > 3 - si tu utilises Papervision ou autre.. faut nous préciser plusieurs
> > choses.. tu bosses en AS2/AS3 , avec FP9/FP10, dans FDT, FlexBuilder ? Dans
> > un projet AS3/MXML ? etc....
>
> > Tu vois.. je dois te poser pleins de questions pour arriver à cerner ton
> > problème... et c'est pas top du coup pour que de ton côté tu puisses avoir
> > une réponse précise :)
>
> > eKA+ :)
>
> > Le 16 septembre 2008 16:20, fh <[EMAIL PROTECTED]> a écrit :
>
> >> Hello,
> >> j'ai une scène qui doit gérer de manière simultanée :
> >> - la souris de manière traditionnelle,
> >> - un second pointeur, dont les données viennent de qqch de similaire à
> >> WiiFlash.
>
> >> J'arrive sans problème à gérer les mouvements en x,y,z des deux
> >> souris, mais mes objets ne dispatchent pas d'événements
> >> InteractiveScene3DEvent.OBJECT_OVER et
> >> InteractiveScene3DEvent.OBJECT_OUT quand le second pointeur est au-
> >> dessus. Ca fonctionne uniquement avec le pointeur traditionnel.
>
> >> J'ai tout retourné, incapable d'y arriver. Une piste ?
>
>
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "FCNG" de 
Google Groupes.
 Pour transmettre des messages à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour résilier votre abonnement à ce groupe, envoyez un e-mail à 
l'adresse [EMAIL PROTECTED]
 Pour afficher d'autres options, visitez ce groupe à l'adresse 
http://groups.google.com/group/FCNG?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à