Bonjour à tous ! Et bravo à tout les flashkodiens, sans ce site je serai perdu !
Je suis super novice en AS3, et je n'ai jamais utilisé papervision jusqu'à maintenant.
Je fait appel à vous pour m'aider sur un bout de code qui me bloque depuis quelques jours maintenant, j'ai tout essayé, j'ai comparé avec d'autres sources, j'ai fait des tests en masse, mais RIEN ! Je n'arrive pas à faire ce que je voudrai. AIDEZ MOI S'IL VOUS PLAIT !
Ce que fait le code : Ce qui est posté ci_dessous, fait apparaitre une spirale d'images qui défile au mouvement de la souris.
Ce que je voudrait rajouter : J'ai mis un paramètre de "zoom" (cam.zoom = 16; //vers le bas du code) sur le Clic... Mais cette fonction zoom ne fait que grandir les images et la spirale, il faudrait que la spirale s'arrête, que l'image zoomée soit centré et fixe. Et lors d'un deuxième clip, que la spirale revienne au zoom 5.
Code ActionScript :
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
import flash.display.Sprite;
import flash.events.MouseEvent;
var container:Sprite = new Sprite();
container.x = stage.stageWidth * 0.5;
container.y = stage.stageHeight * 0.5;
addChild(container);
var scene:Scene3D = new MovieScene3D(container);
var cam:Camera3D = new Camera3D();
cam.zoom = 5;
var p_dict:Dictionary=new Dictionary();
var pc:Plane = new Plane();
pc.visible = false;
cam.target = pc;
var numOfRotations:Number = 2;
var yPos:Number = 0;
var angle:Number = 0;
var filename_list = new Array();
var folder:String = "thumbnails/";
var i:Number;
var total:Number;
var galerie_xml:XML = new XML();
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("thumbnail_list.xml"));
loader.addEventListener(Event.COMPLETE, create_thumbnail);
function create_thumbnail(e:Event):void
{
galerie_xml = XML(e.target.data);
total = galerie_xml.thumbnail.length();
var anglePer:Number = ((Math.PI*2) * numOfRotations) / total;
for( i = 0; i < total; i++ )
{
var bfm:BitmapFileMaterial = new BitmapFileMaterial(
folder + galerie_xml.thumbnail[i].@filename.toString());
bfm.oneSide = false;
bfm.smooth = false;
var p:Plane = new Plane(bfm, 140, 105, 2, 2);
scene.addChild(p);
var p_container:Sprite = p.container;
p_container.name = "galerie_" + i;
p_dict[p_container] = p;
p_container.buttonMode = true;
p_container.addEventListener( MouseEvent.ROLL_OVER, p_rollover );
p_container.addEventListener( MouseEvent.ROLL_OUT, p_rollout );
p_container.addEventListener( MouseEvent.CLICK, p_click );
p.x = Math.cos(i * anglePer) * 400;
p.z = Math.sin(i * anglePer) * 400;
p.y = yPos += 40;
p.rotationY = (-i*anglePer) * (180/Math.PI) + 270;
}
}
function p_rollover(me:MouseEvent)
{
var sp:Sprite = me.target as Sprite;
sp.alpha = 0.4;
var s_no:Number = parseInt(sp.name.slice(8,10));
}
function p_rollout(me:MouseEvent)
{
var sp:Sprite = me.target as Sprite;
sp.alpha = 1;
}
function p_click(me:MouseEvent)
{
var sp:Sprite = me.target as Sprite;
trace(sp.name);
cam.zoom = 16;
var s_no:Number = parseInt(sp.name.slice(8,10));
}
addEventListener(Event.ENTER_FRAME, render);
function render(e:Event):void
{
var dist:Number = ((stage.mouseY) - stage.stageHeight * 0.5) * -0.1;
var dist2:Number = ((stage.mouseX-160) - stage.stageWidth * 0.5) * 0.00025;
angle += dist2;
cam.x = Math.cos(angle) * 760;
cam.z = Math.sin(angle) * 760;
cam.y += dist;
if(cam.y < 100) cam.y = 100;
if(cam.y > 780) cam.y = 780;
pc.y = cam.y;
scene.renderCamera(cam);
}
Voila vous savez tout, si vous avez besoin de la source je peux la poster.
Je serai d'ailleur ravi de la partager quand elle fonctionnera.
Cette source n'est peut être pas très propre (c'est un mélange de 4 sources.... on fait comme on peux) et elle correspond vraiment à ce que je voudrai.
En espérant que l'un de vous ai la gentillesse de m'aider.
Cordialement.
SP