Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème en AS3 movie clip cliquable

2 juin 2010 à 10:31:19

Bonjour à tous !!

Je viens vers vous car j'ai un petit souci en AS3 ^^
J'ai un carousel que je voudrais intégrer dans mes visites virtuelles et rendre les movie clip cliquables.
En AS2 j'avais créer un symobol pour chaque clip auquel j'avais attribué:
on (press) {
//fonction à récupérer par le plugin des visites virtuelles
}
// affichage du texte 
on (rollOver) { 
_root.ChampDeTexte = "Accueil"; 
} 

// réinitialisation du champs de texte 
on (rollOut) { 
_root.ChampDeTexte = ""; 
}


Masi j'ai depuis plancher sur la version AS3 car nécessaire pour l'intégration dans la visite virtuelle!
Et la je suis perdu ^^

Je sais en théorie qu'il faut attribuer un nom à chaque movie clip et ensuite directement coder en AS3..
Mais c'est de la théorie ^^

Si quelqu'un peux me donner des pistes car je connais très mal l'AS3 (suis resté à l'AS2 ^^)

la source du carousel ici
Et il s'agit de la version Carrousel_AS3.fla

Le fait d'avoir des clips cliquables serait déjà un bon début car après va falloir que je fasse un import du package AS3 du plugin des visites virtuelles pour le faire fonctionner avec ce dernier ^^

En gros c'est pas gagné ^^

Merci beaucoup par avance et en espérant vous lire bientôt !

Re all !

Je suis désolé d'insister mais suis vraiment un gros boulet en AS3 :(
je me suis taper tous les tutos que j'ai pu trouver mais j'arrives pas à appliquer au carousel...
Je suis sur en plus que c'est tout bête !!

Merci encore !

Re !!

J'ai trouver la fonction équivalente en AS3, mais je coince toujours sur l'attribution d'une unique fonction par Movie clip, voici ce que j'ai:

act_mc.addEventListener (MouseEvent.CLICK, onClick);
act_mc.addEventListener(MouseEvent.ROLL_OVER, mcOver);
act_mc.addEventListener(MouseEvent.ROLL_OUT, mcOut);

function mcOut( event:MouseEvent):void 
{
//fonction choisie	
}
function mcOver( event:MouseEvent):void 
{
event.target.alpha = 0.5;	
}

function onClick( event:MouseEvent):void 
{
//fonction choisie

}

  • Partager sur Facebook
  • Partager sur Twitter
4 juin 2010 à 10:17:25

Re tout le monde...

Merci à tous pour le coup de pouce,
j'apprécie vraiment !!

Pour ceux que ça intéresse, j'ai trouvé une bidouille qui marche,
voici le code:

this.getChildAt(0).addEventListener(MouseEvent.CLICK, OnClick0);
this.getChildAt(1).addEventListener(MouseEvent.CLICK, OnClick1);
this.getChildAt(2).addEventListener(MouseEvent.CLICK, OnClick2);
this.getChildAt(3).addEventListener(MouseEvent.CLICK, OnClick3);
this.getChildAt(4).addEventListener(MouseEvent.CLICK, OnClick4);


function OnClick0 ( pEvt:MouseEvent ):void
{
trace("salut1");
}
function OnClick1 ( pEvt:MouseEvent ):void
{
trace("salut1");
}
function OnClick2 ( pEvt:MouseEvent ):void
{
trace("salut2");
}
function OnClick3 ( pEvt:MouseEvent ):void
{
trace("salut3");
}
function OnClick4 ( pEvt:MouseEvent ):void
{
trace("salut4");
}


Maintenant peut être que ma requête était trop simple pour vous,
et que vous vous dites que je souhaitais obtenir les réponses sans chercher,
mais pour quelqu'un qui n'a jamais touché à l'AS3 je vous jure que c'est pas gagné...

Merci l'entraide !!
A bientôt! (ou pas..)
  • Partager sur Facebook
  • Partager sur Twitter
4 juin 2010 à 10:22:28

Ou peut-être qu'on a pas le logiciel Flash et que du coup, sans le code on peut pas t'aider, ou peut-être qu'on avait pas le temps de chercher, ou peut-être qu'on avait pas la réponse ? :-°
  • Partager sur Facebook
  • Partager sur Twitter
MysterTy a sa mysterty-cave. Vous êtes célibataire ? Wantedlove est fait pour vous. C'est 100% gratuit !
4 juin 2010 à 12:31:47

Oui effectivement ^^
Mais entre pas avoir la réponse et pas répondre quoi que ce soit :-°
Ben je publie entièrement la source alors pour ceux que ça peux intéresser,
mon premier problème étant résolu:
//var pluginobject:Object = krpano.get("plugin[textfield]");
//Rayon de rotation (en pixels) autour de l'axe y
var Rx:Number=120;

//Nombre d'icones (pas plus que 10, quoique...)
var N:Number=5;

//angle de rotation des clips autour de l'axe z
var angle:Number=0;

//Attachement des icones
var Reference:Class;
for(var i:Number=0;i
{

// extraction des références de classe
Reference = Class (getDefinitionByName ( "MonClip"+i ));

// ajout à la liste d'affichage
this.addChild ( DisplayObject ( new Reference() ) );

//Nom du clip
this.getChildAt(i).name='ID'+i;

//position initial du ieme clip en y (milieu de scene)
this.getChildAt(i).y=stage.stageHeight/2;

//Position initial du ieme clip en x
this.getChildAt(i).x=Rx*Math.cos(2*Math.PI*i/N)+stage.stageWidth/2;

//taille initiale du ieme clip
this.getChildAt(i).scaleX=0.6/2*(Math.sin(2*Math.PI*i/N)+ 1)+0.4;
this.getChildAt(i).scaleY=this.getChildAt(i).scaleX;
}

//ajout d'un ecouteur sur le ieme clip
this.getChildAt(0).addEventListener(MouseEvent.CLICK, OnClick0);
this.getChildAt(1).addEventListener(MouseEvent.CLICK, OnClick1);
this.getChildAt(2).addEventListener(MouseEvent.CLICK, OnClick2);
this.getChildAt(3).addEventListener(MouseEvent.CLICK, OnClick3);
this.getChildAt(4).addEventListener(MouseEvent.CLICK, OnClick4);

//Fonction de click sur les icones
function OnClick0 ( pEvt:MouseEvent ):void
{
trace("salut1");
}
function OnClick1 ( pEvt:MouseEvent ):void
{
trace("salut1");
}
function OnClick2 ( pEvt:MouseEvent ):void
{
trace("salut2");
}
function OnClick3 ( pEvt:MouseEvent ):void
{
trace("salut3");
}
function OnClick4 ( pEvt:MouseEvent ):void
{
trace("salut4");
}

//ecouteur enter_frame
stage.addEventListener ( Event.ENTER_FRAME, Main );

function Main ( pEvt:Event ):void
{
//variable temporaire pour la profondeur
var z:Number;

//si l'angle a fait un tour alors remise a zero de l'angle
if (angle>2*Math.PI)
{
angle=0;
}
else
{ 
for(i=0;i
{

//rotation du i_eme clip sur x
this.getChildByName('ID'+i).x=Rx*Math.cos(angle+2*Math.PI*i/N)+stage.stageWidth/2;

//mise a jour de la taille du clip (60%->premier plan, 40%->arriere plan)
this.getChildByName('ID'+i).scaleX=0.6/2*(Math.sin(angle+2*Math.PI*i/N)+ 1)+0.4;
this.getChildByName('ID'+i).scaleY=getChildByName('ID'+i).scaleX;

//mise a jour de z (profondeur);
z=(N-1)*(Math.sin(angle+2*Math.PI*i/N)+1)/2;
this.setChildIndex(this.getChildByName('ID'+i), int(z));
}

//rotation commandée par la souris
//conditions sur x
if(stage.mouseX<(stage.stageWidth/2+Rx) && stage.mouseX>(stage.stageWidth/2-Rx))
{
//conditions sur y
if(stage.mouseY0)
{
//0.7 correspond a la vitesse
angle=angle+(stage.mouseX-stage.stageWidth/2)/stage.stageWidth*0.7;
}
}

}
}


Maintenant j'ai un autre souci, intégrer tout ça avec le package du plugin flash des visites virtuelles mais là je pense pas trouver de l'aide ici ^^ (Sans vouloir offenser personne ^^)
A moins qu'une âme charitable veuille plancher sur la question mais j'en doute ^^

En tout cas merci sincèrement mystery de m'avoir au moins répondu ;)
On se sens moins seul ^^

@++

  • Partager sur Facebook
  • Partager sur Twitter
4 juin 2010 à 14:02:39

"le package du plugin flash des visites virtuelles"... :-° c'est à dire ?
  • Partager sur Facebook
  • Partager sur Twitter
MysterTy a sa mysterty-cave. Vous êtes célibataire ? Wantedlove est fait pour vous. C'est 100% gratuit !
4 juin 2010 à 16:00:33

Ca t'intéresse, c'est cool ! ^^

Hola c'est bien compliqué...

Si tu veux je fais des visites virtuelles via un lecteur flash,
et le développeur met à dispo un package en AS3 pour faire ses propres plugins.
Ceci pour permettre soit

1 - d'utiliser le plugin crée (ici le carousel) via le xml
qui gère la visite virtuelle

2- soit à l'inverse programmer le plugin crée pour
qu'il commande en externe des actions de la visite virtuelle^^

Je sais pas si je suis très clair ^^

Plugin visite virtuelle --> xml --> nouveau plugin
ou
nouveau plugin --> Plugin visite virtuelle

En gros la marche à suivre se trouve ici
si tu veux jeter un coup d'oeil.
Ici pour plus de détails

Pour moi qui débute en AS3 je crois que je me suis attaqué à un bien gros morceaux ^^
Mais c'est comme ça que l'on apprends n'est ce pas ?

Donc pour l'instant j'en suis là:
trace(0xFF,"debugmode on");

import krpano_as3_interface;

var krpano : krpano_as3_interface = null;

function startplugin(event:Event):void
{
krpano = krpano_as3_interface.getInstance();
}

function stopplugin(event:Event):void
{
}

if (stage == null)
{
// plugin startup
addEventListener(Event.ADDED_TO_STAGE, startplugin);
addEventListener(Event.REMOVED_FROM_STAGE, stopplugin);
}

this.addEventListener(Event.ADDED_TO_STAGE, startplugin);

//var pluginobject:Object = krpano.get("plugin[textfield]");

//Ici la suite du code que j'ai posté précédemment !


De base j'ai déjà un souci puisque le carousel ne s'affiche pas correctement dans la visite virtuelle
(un seul clip visible) sans même avoir ajouter ce que je viens de mettre ^^
Au moins j'ai pas d'erreur de compilation c'est déjà ça ^^

Enfin bref si ça te dit de me filer un coup de pied je suis pas contre,
mais à moins que tu sois super cool et que t'es du temps je pense que tu as d'autres chats à fouetter ^^

Merci vraiment en tout cas pour ta curiosité, ça fait plez !!

A bientôt peut être ;)

  • Partager sur Facebook
  • Partager sur Twitter
4 juin 2010 à 16:15:25

Ok, donc tu utilises une bibliothèque, krprano, pour simuler une "visite virtuelle" en plaçant l'utilisateur au centre d'un panorama à 360°.

Je vois pas pourquoi tu t'embêtes avec ton carrousel dans ce cas puisque krprano semble déjà capable de le faire...

De plus la gestion des clics semble être des boutons placés sur l'image directement, mais je peux me tromper je n'ai pas eu le temps de regarder attentivement... :-°
  • Partager sur Facebook
  • Partager sur Twitter
MysterTy a sa mysterty-cave. Vous êtes célibataire ? Wantedlove est fait pour vous. C'est 100% gratuit !
4 juin 2010 à 17:42:57

Yop yop !!

Oui effectivement ça mérite des explications !!

En fait je cherche à intégrer le carousel "dans" la visite virtuelle ^^
Vraiment pour le côté graphique de la chose!

Dans la projection en taille réduite de la visite virtuelle(640x480),
l'intégration de bouton standard "bouffe" l'image,
le carousel permettrait de réduire la zone d'affichage des boutons du fait de la superposition
de ces derniers ^^ donc moins gourmand en place ^^

Voilà ^^

Mais l'intégration avec le package de Krpano est une entreprise complexe,
et vu mes connaissances en AS3 c'est pas de la tarte :-°

Merci encore et si ça t'intéresse je te tiens au jus
(à moins que tu nourrisse l'envie irrépressible de m'aider à coder tout ça :-° )

@++

  • Partager sur Facebook
  • Partager sur Twitter
4 juin 2010 à 23:14:24

Citation : yomas

l'intégration de bouton standard "bouffe" l'image,
le carousel permettrait de réduire la zone d'affichage des boutons du fait de la superposition
de ces derniers ^^ donc moins gourmand en place ^^



Je vois mal ce que tu veux dire, un petit schéma pour illustrer tout ça ?
  • Partager sur Facebook
  • Partager sur Twitter
MysterTy a sa mysterty-cave. Vous êtes célibataire ? Wantedlove est fait pour vous. C'est 100% gratuit !
7 juin 2010 à 10:46:16

Re ^^

Voilà un petit schéma !!
Les boutons alignés
Boutons normaux

Prennent plus de place qu'avec le carousel
Boutons en carousel

Voilà l'idée !
Même si mon illustration est très rudimentaire ^^
  • Partager sur Facebook
  • Partager sur Twitter
14 juin 2010 à 10:49:37

Re !

Bon j'ai opté pour l'instant pour des boutons "standards",
l'utilisation d'une lightbox pour afficher des pages et des documents m'a demandé déjà beaucoup de temps, on verra plus tard pour le carousel ^^

Merci en tout cas pour la curiosité, je vais essayer tant bien que mal de coder ce plugin avec krpano mais je me donne du temps car c'est un peu au delà de mes compétences pour l'instant..

@++
  • Partager sur Facebook
  • Partager sur Twitter
14 juin 2010 à 11:21:15

J'avais complètement oublié ton sujet :honte:

Sinon je ne vois pas bien ce qui te pose problème.

Tu gères séparément le carrousel et le diaporama.

Une fois que les deux fonctionnent séparément, tu fais :
addChild(diaporama);
addChild(carrousel);

En fait ce que je veux dire, c'est de ne pas essayer de faire les deux en même temps, tu te compliques la vie. Fait en sorte que les deux marchent séparément et met-les ensemble après ;)
  • Partager sur Facebook
  • Partager sur Twitter
MysterTy a sa mysterty-cave. Vous êtes célibataire ? Wantedlove est fait pour vous. C'est 100% gratuit !