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