J'ai créé un script de galerie qui charge à partir de xml une grande image, du texte et trois miniatures. J'ai des difficultés à charger les vignettes pour une raison quelconque. Je l'ai pour que les trois vignettes doivent être l'image précédente, l'image actuelle et l'image suivante. Sauf lorsque vous cliquez sur l'image en cours, elle devrait charger une image aléatoire. Les boutons fonctionnent pour ceci mais si j'essaye de charger des vignettes. Ils n'apparaissent pas.Problème Chargement des vignettes à partir de XML dans Flash as3.0
Pour charger les vignettes, j'ai créé une boucle for pour le tableau de vignettes et le numéro de l'image est enregistré par la variable noOfImage. Puis je charge les autres vignettes en soustrayant 1 à noOfImage si l'on clique sur le bouton prev (mousewheel down ou touche dwn ou touche left) et en ajoutant 1 à noOfImage si on clique sur le bouton suivant (molette et touches ...)
Lorsque je repère les variables du numéro de vignette, elles semblent être correctes à la fois et d'autres fois, je reçois des erreurs.
Ex. Si je charge le swf et cliquez sur suivant. L'image précédente est "4294967295" et la suivante est 1, mais elle génère cette "Erreur # 2044: Non géré IOErrorEvent :. texte = Erreur # 2035: URL introuvable".
Si la valeur de nextImage = 1 alors je ne vois pas pourquoi il ne se charge pas. Et pourquoi donne-t-il un nombre étrange pour ce qui devrait être 0? Je ne peux pas dire si le problème est avec les instructions if que j'utilise pour gérer les variables noOfImage ou si cela a quelque chose à voir avec les chargeurs ou les conteneurs de vignettes ... Je continue d'essayer tout ce que je peux penser. ma version originale a chargé tous les pouces avec une boucle for et a travaillé mais j'avais du mal à les faire en boutons cliquables et a décidé de le rendre plus simple.
Voici un exemple de ce que j'ai obtenu avec le script. http://soulseekrecords.org/psysci/portfolio/Portfolio.swf
ci-dessous est tout mon code désolé si c'est en désordre ou pas clair. Je fais de mon mieux.
//import tweening files
import com.greensock.*;
import com.greensock.easing.*;
import flash.display.MovieClip;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFormat;
import fl.controls.UIScrollBar;
import flash.display.Sprite;
import com.greensock.plugins.*;
TweenPlugin.activate([TintPlugin]);
//create sprite background
var backgrnd:Sprite = new Sprite();
//create array of image names
var imageNames:Array = new Array();
//create array of text descriptions
var descText:Array = new Array();
//create array for dice images
var dinames:Array = new Array();
//variable for total number of images
var totalImages:uint = imageNames.length;
//add sprite variables
var thumb:Sprite = new Sprite();
var thumb2:Sprite = new Sprite();
var thumb3:Sprite = new Sprite();
// create loaders
var smImageLoader:Loader = new Loader();
var smImageLoader2:Loader = new Loader();
var smImageLoader3:Loader = new Loader();
//create a variable to load the large image
var bigImageLoader:Loader = new Loader();
//create variables for the image #
var noOfImage:int;
var prevImage:uint;
var nextImage:uint;
//create random number var
var randomNumber:uint;
prevImage = 0;
nextImage = totalImages;
noOfImage = -1;
// add sprite to display list
addChild(thumb);
addChild(thumb2);
addChild(thumb3);
thumb.graphics.beginFill(0xFFFFFF);
thumb.graphics.drawRect(25, 325, 75, 75);
thumb.graphics.endFill();
thumb2.graphics.beginFill(0xFFFFFF);
thumb2.graphics.drawRect(125, 325, 75, 75);
thumb2.graphics.endFill();
thumb3.graphics.beginFill(0xFFFFFF);
thumb3.graphics.drawRect(225, 325, 75, 75);
thumb3.graphics.endFill();
thumb.alpha = 1;
thumb2.alpha = 1;
thumb3.alpha = 1;
thumb.addChild(smImageLoader2);
thumb2.addChild(smImageLoader3);
thumb3.addChild(smImageLoader);
smImageLoader.y = 325;
smImageLoader2.y = 325;
smImageLoader3.y = 325;
smImageLoader.x = 25;
smImageLoader2.x = 125;
smImageLoader3.x = 225;
//Scroll Variables
var scrollBarAdd:Boolean = false;
var scrollBar:UIScrollBar = new UIScrollBar();
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("portfolio.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event)
{
myXML = new XML (e.target.data);
for(var i:uint = 0; i < myXML.img.length() ; i++)
{
imageNames.push(myXML.img[i].text());
descText.push(myXML.txt[i].text());
dinames.push(myXML.imgd[i].text());
}
totalImages = imageNames.length;
}
//add background color sprite
addChild(backgrnd);
setChildIndex(backgrnd,0);
//add background properties
backgrnd.graphics.beginFill(0xFFFFFF);
backgrnd.graphics.drawRect(0, 0, 900, 500);
//add background image
var backrobe:Loader = new Loader();
addChild(backrobe);
backrobe.x = 0;
backrobe.y = 0;
backrobe.load(new URLRequest("images/background.png"));
//add bigImageLoader to the display list
addChild(bigImageLoader);
bigImageLoader.x = 225;
bigImageLoader.y = 25;
//add buttons fwd and rev
var forward:fwd = new fwd();
var reverse:rev = new rev();
addChild(forward);
addChild(reverse);
forward.x = 155;
forward.y = 365;
reverse.x = 33;
reverse.y = 365;
forward.addEventListener(MouseEvent.MOUSE_OVER, mseovr);
reverse.addEventListener(MouseEvent.MOUSE_OVER, mseovr2);
forward.addEventListener(MouseEvent.MOUSE_OUT, mseout);
reverse.addEventListener(MouseEvent.MOUSE_OUT, mseout2);
function mseovr (event:MouseEvent){
TweenLite.to(forward, .1, {alpha:.5});
}
function mseovr2 (event:MouseEvent) {
TweenLite.to(reverse, .1, {alpha:.5});
}
function mseout (event:MouseEvent){
TweenLite.to(forward, .1, {alpha:1});
}
function mseout2 (event:MouseEvent) {
TweenLite.to(reverse, .1, {alpha:1});
}
//Variable Key Press Function
var rkey:uint = 39;
var lkey:uint = 37;
var ukey:uint = 38;
var dkey:uint = 40;
//create a textField
var myText:TextField = new TextField();
//add text box to display list
addChild(myText);
myText.width = 200;
myText.height = 340;
myText.x = 5;
myText.y = 5;
myText.wordWrap = true;
myText.multiline = true;
myText.selectable = true;
var format:TextFormat = new TextFormat();
format.font = "Arial";
format.color = 0xFFFFFF;
format.size = 20;
format.underline = false;
myText.defaultTextFormat = format;
//add button
var hotSpot:hotspot = new hotspot();
//add button to display list
addChild(hotSpot);
//Set button x and y position
hotSpot.x = 92;
hotSpot.y = 367;
hotSpot.alpha = 0;
hotSpot.width = 50;
hotSpot.height = 50;
//set buttonmode
hotSpot.buttonMode = true;
//make sure all clicks register with the thumb itself (not inner contents)
hotSpot.mouseChildren = false;
//add click listener to the button
hotSpot.addEventListener(MouseEvent.MOUSE_DOWN, buttonClickHandler);
hotSpot.addEventListener(MouseEvent.MOUSE_OVER, mouseoverhotspot);
hotSpot.addEventListener(MouseEvent.MOUSE_OUT, mouseouthotspot);
function mouseoverhotspot(event:MouseEvent){
TweenLite.to(hotSpot, .1, {alpha:.5});
}
function mouseouthotspot(event:MouseEvent){
TweenLite.to(hotSpot, 1, {alpha:0});
}
function buttonClickHandler (event:MouseEvent)
{
randomNumber = Math.random()*3;
noOfImage = randomNumber;
loadersnlist();
}
stage.addEventListener(MouseEvent.MOUSE_WHEEL, upmouse);
function upmouse(event:MouseEvent)
{
if (event.delta == 3)
{
noOfImage = noOfImage + 1;
if (noOfImage == totalImages)
{
noOfImage = noOfImage - totalImages;
}
}
if (event.delta == -3)
{
if (noOfImage == -1 || noOfImage == -2)
{
noOfImage = totalImages;
}
if (noOfImage == 0)
{
noOfImage = noOfImage + totalImages;
}
noOfImage = noOfImage - 1;
}
loadersnlist();
}
forward.addEventListener(MouseEvent.CLICK, fwdclck);
function fwdclck (event:MouseEvent)
{
noOfImage = noOfImage + 1;
if (noOfImage == totalImages)
{
noOfImage = noOfImage - totalImages;
}
loadersnlist();
}
reverse.addEventListener(MouseEvent.CLICK, revclck);
function revclck(event:MouseEvent)
{
if (noOfImage == -1 || noOfImage == -2)
{
noOfImage = totalImages;
}
if (noOfImage == 0)
{
noOfImage = noOfImage + totalImages;
}
noOfImage = noOfImage - 1;
loadersnlist();
}
//Key Right Arrow Event
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyright);
function keyright(event:KeyboardEvent)
{
if (event.keyCode==rkey || event.keyCode==ukey)
{
noOfImage = noOfImage + 1;
if (noOfImage == totalImages)
{
noOfImage = noOfImage - totalImages;
}
loadersnlist();
}
}
//Key Left Arrow Event
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyleft);
function keyleft(event:KeyboardEvent){
if (event.keyCode==lkey || event.keyCode==dkey)
{
if (noOfImage == -1 || noOfImage == -2)
{
noOfImage = totalImages;
}
if (noOfImage == 0)
{
noOfImage = noOfImage + totalImages;
}
noOfImage = noOfImage - 1;
loadersnlist();
}
}
function scrollerthing()
{
if (myText.textHeight > myText.height)
{
scrollBar.scrollTarget = myText; //assign the target of the scrollBar to your textfield
scrollBar.height = myText.height; //make the height the same as the textfield
scrollBar.move(myText.x + myText.width, myText.y); //Move the scrollbar to the righthand side
addChild(scrollBar);
scrollBar.update();
scrollBarAdd = true;
} else
{
if((myText.textHeight < myText.height) && scrollBarAdd == true)
{
scrollBarAdd = false;
removeChild(scrollBar);
}
}
}
function loadersnlist()
{
bigImageLoader.load(new URLRequest("images/" + imageNames[noOfImage]));
bigImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, tweenage);
smImageLoader.load(new URLRequest("thumbs/" + dinames[noOfImage]));
smImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, tweenage2);
prevImage = noOfImage - 1;
nextImage = noOfImage + 1;
if (prevImage <= -1){
prevImage = totalImages;
}
if (nextImage >= totalImages){
nextImage = 0;
}
trace (prevImage);
trace (nextImage);
smImageLoader2.load(new URLRequest("thumbs/" + dinames[prevImage]));
smImageLoader2.contentLoaderInfo.addEventListener(Event.COMPLETE, tweenage2);
smImageLoader3.load(new URLRequest("thumbs/" + dinames[nextImage]));
smImageLoader3.contentLoaderInfo.addEventListener(Event.COMPLETE, tweenage2);
}
function tweenage(e:Event)
{
bigImageLoader.alpha = 0;
TweenLite.to(bigImageLoader, 5, {alpha:1, ease:Expo.easeOut});
myText.alpha = 0;
TweenLite.to(myText, 5, {alpha:1});
myText.text = String (descText[noOfImage]);
scrollerthing();
}
function tweenage2 (e:Event)
{
//create a variable to load small thumbnail url image
TweenLite.to(smImageLoader, 5, {scaleX:.6, scaleY:.6, ease:Expo.easeOut});
TweenLite.to(smImageLoader2, 5, {scaleX:.6, scaleY:.6, ease:Expo.easeOut});
TweenLite.to(smImageLoader3, 5, {scaleX:.6, scaleY:.6, ease:Expo.easeOut});
}
4294967295 est -1 au format uint, regardez comment ça y est. – alxx
merci de changer le var prevImage et nextImage en int répare cette partie. Toujours pas de chargement des pouces –