JeuWeb - Crée ton jeu par navigateur
Flash: Composant simple pour pouvoir organiser un défilement fantaisiste d'image - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Flash: Composant simple pour pouvoir organiser un défilement fantaisiste d'image (/showthread.php?tid=3081)



Flash: Composant simple pour pouvoir organiser un défilement fantaisiste d'image - Argorate - 22-09-2008

Bonjour le monde,

J’aurais besoin de vous, je ne m'y entends pas du tout en flash, et j'aurais aimé faire un cadre en flash, où défilerais des images, ou plutôt des photos (dont le nom serais issu d'une BDD), pour faire défiler ces images de plusieurs façons:
Exemple: Une, arrive par la gauche, une autre tombe d'en haut, une autre apparait dans un rond (enfin des changements de photo, comme les changements de scène dans star wars^^)

Voila si vous savez quel composant utilisé et les quelques options à connaitre pour pouvoir faire des défilements qui varie, cela m'intéresse, merci.


RE: Flash: Composant simple pour pouvoir organiser un défilement fantaisiste d'image - Hakushi - 22-09-2008

Je pourrais te faire une base d'ici 2 ou 3h si tu veux, c'est vraiment pas complique


RE: Flash: Composant simple pour pouvoir organiser un défilement fantaisiste d'image - Argorate - 22-09-2008

Oki, impecable, j'attend de tes news alors Wink


RE: Flash: Composant simple pour pouvoir organiser un défilement fantaisiste d'image - Hakushi - 23-09-2008

Bon c'est vraiment une base qui va loader tes images toutes les 5secondes avec 4 effets différents de manière aléatoire. Je ne peux pas le tester mon Flash plante et j'ai pas MTASC, mais ca devrait marcher, si tu as flash cs3, il te faudra juste creer un .fla en ActionScript 3 avec comme document class "Main.as".
Tu placeras sur la scène un movieClip vide que tu metteras en 0,0 avec le nom "container".
je testerais demain au boulot pour traquer les erreures

(j'utilise les balises Php juste pour la coloration, mais c'est de l'ActionScript 3)
Code PHP :
<?php 
package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.utils.Timer;

public class
Main extends MovieClip
{
//List of image to show on the slideshow
private var _monXML:XML;
private var
_urlXML:URLRequest;
private var
_loaderXML:URLLoader;
private var
_listOfImage:Array = new Array();
private var
_currentImage:int = 0;
//Container for the image
private var _container:MovieClip;
//Timer for the display
private var _displayTimer:Timer;
private var
_delay:int = 5000; //Millisecond

public function Main()
{
_urlXML = new URLRequest('urlduxml.xml'); //Could be a php file that return an XML
_loaderXML = new URLLoader();
_loaderXML.addEventListener(Event.COMPLETE, onXMLLoaded);
_loaderXML.load(_urlXML);

_container = stage.getChildByName('container') as MovieClip;
}

/**
* Call when the XML is loaded
* Strucutre of xml
* <images>
* <pic url="url-of-the image"/>
* <pic url="url-of-the image2"/>
* </images>
* @param e
*/
private function onXMLLoaded(e:Event)
{
_monXML = new XML(e.target.data);

for
each(var pic in _monXML)
{
_listOfImage.push(pic.@url);
}

loadImage();
}

/**
* Load an image with the effect wanted
*
*/
private function loadImage(e:TimerEvent = null)
{
var
toDisplay:String = _listOfImage[_currentImage];
var
loader:Loader = new Loader();
loader.addEventListener(Event.COMPLETE, onImageLoaded);
loader.load(new URLRequest(toDisplay));

if (
_currentImage < _listOfImage.length) _currentImage++;
else
_currentImage = 0;
}

/**
* Called when an image is loaded
* @param e
*/
private function onImageLoaded(e:Event)
{

_displayTimer = new Timer(_delay, 1);
_displayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, loadImage);
_displayTimer.start();

showContainer();
}

/**
* Show the container movieClip with one of this 4choices:
* - Come from left
* - Come from Right
* - Fade in
* - Grow up
*
* Some ugly code in here, but faster to wrote (i know this is lame, but i really want to play Warhammer Online by now :d )
*/
private function showContainer()
{
var
choice = Math.random();

if (
choice < (1 / 4))
{
//from left
_container.x = -(_container.width);
var
leftTimer:Timer = new Timer(10, 0);
leftTimer.addEventListener(TimerEvent.TIMER, moveLeft);
leftTimer.start()

//here is the ugly code, bouhhh
function moveLeft(e:TimerEvent)
{
if (
_container.x <= 0) _container.x += (_container.width / 50);
else
leftTimer.stop();
}
}
else if (
choice < (1 / 2))
{
//from right
_container.x = _container.width;
var
rightTimer:Timer = new Timer(10, 0);
rightTimer.addEventListener(TimerEvent.TIMER, moveRight);
rightTimer.start()

//here is the ugly code, bouhhh
function moveRight(e:TimerEvent)
{
if (
_container.x <= 0) _container.x -= (_container.width / 50);
else
rightTimer.stop();
}
}
else if (
choice < (3 / 4))
{
//fade in
_container.x = 0;
_container.alpha = 0;
var
alphaTimer:Timer = new Timer(10, 0);
alphaTimer.addEventListener(TimerEvent.TIMER, alphaContainer);
alphaTimer.start()

//here is the ugly code, bouhhh
function alphaContainer(e:TimerEvent)
{
if (
_container.alpha <= 1) _container.alpha += (1 / 50);
else
alphaTimer.stop();
}
}
else
{
//grow up
_container.scaleX = 0;
_container.scaleY = 0;
_container.x = stage.stageWidth/2;
_container.y = stage.stageHeight/2;

var
growUpTimer:Timer = new Timer(10, 0);
growUpTimer.addEventListener(TimerEvent.TIMER, growUp);
growUpTimer.start()

//here is the ugly code, bouhhh
function growUp(e:TimerEvent)
{
if (
_container.scaleX <= 1)
{
_container.scaleX += (1 / 50);
_container.scaleY += (1 / 50);
_container.x = (stage.stageWidth/2) - (_container.width/2);
_container.y = (stage.stageHeight/2) - (_container.height/2);
}
else
{
growUpTimer.stop();
}
}

}
}
}
}

C'est code vite fait mais ca marche parfaitement, ya quelques morceaux de codes moches mais qui marchent bien (c'est juste que ca va plus vite a ecrire :p )

[edit] Je me rends compte que mes commentaires sont en anglais, reflexe de travail je suis en milieu anglophone :p


RE: Flash: Composant simple pour pouvoir organiser un défilement fantaisiste d'image - Eluox - 23-09-2008

HS :

//here is the ugly code, bouhhh

Expldrrr


RE: Flash: Composant simple pour pouvoir organiser un défilement fantaisiste d'image - Argorate - 23-09-2008

Oui, bon alors là...

Comment dire ça? Big Grin

C'est vraiment le bordel ton bidule, j'ai bien stipulé "simple"

Un ami ma montré ce site: je pense que ça m'ira emplement, pour ce que ça interesse:

http://www.alsacreations.fr/dewslider

merci Wink

PS: Commentaire en Anglais <=> pas de commentaire (pour moi Smile)


RE: Flash: Composant simple pour pouvoir organiser un défilement fantaisiste d'image - Thedeejay - 23-09-2008

essaie simplement le logiciel 3DFA (3d flash animator)
simple a prendre en main et un démo 30 jours (qui a dit 'change la date de ton ordi'?)


RE: Flash: Composant simple pour pouvoir organiser un défilement fantaisiste d'image - Hakushi - 23-09-2008

Argorate a écrit :Oui, bon alors là...

Comment dire ça? Big Grin

C'est vraiment le bordel ton bidule, j'ai bien stipulé "simple"

:dsl: Toujours tendance a oublier que ya des gens pour qui ActionScript ne se lie pas comme un roman :heuuu:

Tu as trouve chaussure a ton pied, c'est l'essentiel...

(Et bon en tant que dev Flash (entre autre), je me refuse a utiliser tout ces outils de designer qui sont vouent bien trop lourd pour ce qu'ils font... )