а можно для чайника подробнее?
пишу недавно и спросить кроме как в нете больше не у кого, сам код у меня такой, навернякак там много косяков :
Код AS3:
package {
import caurina.transitions.Tweener;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.TimerEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.utils.Timer;
[SWF(width="794", height="340", frameRate="30", backgroundColor="0xAAAAAA", quality="high")]
public class Gira_Gallery extends Sprite
{
//--XML--
private var xmlLoader:URLLoader=new URLLoader();
private var xmlList:XMLList;
private var xmlData:XML;
//--BOOLEAN--
private var xmlLoaded_Bool:Boolean=false;
private var picLoaded_Bool:Boolean=true;
private var fullCircleTimer_Bool:Boolean=false;
//--ARRAYS--
private var photoURL_Array:Array=new Array(); //массив содержащий ссылки к фотографиям
private var photoURLCopy_Array:Array=new Array();
private var captionURL_1_Array:Array=new Array();
private var captionText_1_Array:Array=new Array();
private var captionURL_2_Array:Array=new Array();
private var captionText_2_Array:Array=new Array();
private var captionURLCopy_1_Array:Array=new Array();
private var captionTextCopy_1_Array:Array=new Array();
private var captionURLCopy_2_Array:Array=new Array();
private var captionTextCopy_2_Array:Array=new Array();
private var photoHolder_Array:Array=new Array();
private var photoLoadedBool_Array:Array=new Array();
private var textField_1_Array:Array=new Array();
private var textField_2_Array:Array=new Array();
//--TIMER--
private var timer:Timer=new Timer(10000, 1);
//--OTHER--
private var picLoader:Loader=new Loader();
private var someVar:int=0;
private var num:int=1;
private var loopCounter:int=0;
//--CHANGING VARIABLES--
private var alphaDelay:int=5; //время выполнения эффекта
private var caption1_X:int=15; //положение текстового поля_1 по оси X
private var caption1_Y:int=314; //положение текстового поля_1 по оси Y
private var caption2_X:int=479; //положение текстового поля_2 по оси X
private var caption2_Y:int=314; //положение текстового поля_2 по оси Y
private var caption1_Size:int=18; //рамер шрифта в текстовом поле_1
private var caption2_Size:int=18; //рамер шрифта в текстовом поле_2
//--TEXT--
private var loading_TF:TextField=new TextField();
//загружаем *.xml
public function Gira_Gallery()
{
xmlLoader.addEventListener(Event.COMPLETE, xmlLoadedFunc); //когда *.xml загружен вызываем ф-цию xmlLoadedFunc
xmlLoader.load(new URLRequest("gallery.xml")); //загружаем *.xml по ссылке которая находится в ""
loading_TF.x=800;
addChild(loading_TF);
}
//когда *.xml загружен - заносим данные из него в соответствующие массивы
private function xmlLoadedFunc(e:Event):void
{
e.target.removeEventListener(Event.COMPLETE, xmlLoadedFunc);
xmlData=new XML(e.target.data);
xmlList=xmlData.children();
trace("gallery.xml loaded");
for (var i:int=0; i<xmlData.children().length(); i++) //заносим в массивы ссылки из загруженного *.xml
{
photoURLCopy_Array[i]=xmlList[i].attribute("photoURL");
captionURLCopy_1_Array[i]=xmlList[i].attribute("captionURL_1");
captionTextCopy_1_Array[i]=xmlList[i].attribute("captionText_1");
captionURLCopy_2_Array[i]=xmlList[i].attribute("captionURL_2");
captionTextCopy_2_Array[i]=xmlList[i].attribute("captionText_2");
}
randomSorting(photoURLCopy_Array, captionURLCopy_1_Array, captionTextCopy_1_Array, captionURLCopy_2_Array, captionTextCopy_2_Array);
}
//рандомно сортируем массив
private function randomSorting(arr:Array, arr2:Array, arr3:Array, arr4:Array, arr5:Array):void
{
var oldArray:Array;
var oldArray2:Array;
var oldArray3:Array;
var oldArray4:Array;
var oldArray5:Array;
var i:int;
oldArray = arr;
oldArray2 = arr2;
oldArray3 = arr3;
oldArray4 = arr4;
oldArray5 = arr5;
while (oldArray.length)
{
i = int(Math.random() * oldArray.length);
photoURL_Array.push(oldArray.splice(i, 1));
captionURL_1_Array.push(oldArray2.splice(i, 1));
captionText_1_Array.push(oldArray3.splice(i, 1));
captionURL_2_Array.push(oldArray4.splice(i, 1));
captionText_2_Array.push(oldArray5.splice(i, 1));
}
photoURLCopy_Array=null;
captionURLCopy_1_Array=null;
captionTextCopy_1_Array=null;
captionURLCopy_2_Array=null;
captionTextCopy_2_Array=null;
loadingGallery();
}
//подгружаем картинки
private function loadingGallery():void
{
picLoader.load(new URLRequest(photoURL_Array[someVar]));
picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, showPic);
if (someVar == 0)
{
picLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadingProgress);
}
}
private function onLoadingProgress(e:ProgressEvent):void
{
var percentage:Number=(e.bytesLoaded/e.bytesTotal)*100;
loading_TF.text=String(int(percentage))+"%";
}
//когда картинка загружена - выводим её на экран и запускаем на загрузку следующую
private function showPic(e:Event):void
{
e.target.removeEventListener(Event.COMPLETE, loadingGallery); //убиваем слушатель
photoLoadedBool_Array[someVar]=true;
photoHolder_Array[someVar]=e.target.content;
photoHolder_Array[someVar].alpha=0;
//показываем первую картинку как только она загрузилась
if (someVar==0)
{
addChild(photoHolder_Array[someVar]);
Tweener.addTween(photoHolder_Array[someVar], {alpha:1, time:alphaDelay});
timer.start();
timer.addEventListener(TimerEvent.TIMER_COMPLETE, timerFunc);
}
//удаляем текстовое поле как только первая фотография загужена
if (someVar==0 && !photoLoadedBool_Array[photoURL_Array.length-1])
{
e.target.removeEventListener(ProgressEvent.PROGRESS, onLoadingProgress);
removeChild(loading_TF);
}
if(someVar < photoURL_Array.length-1)
{
someVar++;
loadingGallery();
}
}
private function timerFunc(e:TimerEvent):void
{
e.target.removeEventListener(TimerEvent.TIMER_COMPLETE, timerFunc);
if (photoLoadedBool_Array[num])
{
Tweener.addTween(photoHolder_Array[num-1], {alpha:0, time:alphaDelay, onComplete:function():void {
removeChild(photoHolder_Array[num-1]);
} });
addChild(photoHolder_Array[num]);
Tweener.addTween(photoHolder_Array[num], {alpha:1, time:alphaDelay, onComplete:function():void {
num++;
if (num==photoURL_Array.length)
{
timer.start();
timer.addEventListener(TimerEvent.TIMER_COMPLETE, runArrayLoop);
}
if (num!=photoURL_Array.length)
{
timer.start();
timer.addEventListener(TimerEvent.TIMER_COMPLETE, timerFunc);
}
} });
}
else
{
timer.start();
timer.addEventListener(TimerEvent.TIMER_COMPLETE, timerFunc);
}
}
private function runArrayLoop(e:TimerEvent):void
{
e.target.removeEventListener(TimerEvent.TIMER_COMPLETE, runArrayLoop);
Tweener.addTween(photoHolder_Array[num-1], {alpha:0, time:alphaDelay, onComplete:function():void {
removeChild(photoHolder_Array[num-1]);
} });
arrayLoop();
}
//когда массив из фотографий загружен запускаем проигрыватся его по кругу
private function arrayLoop():void
{
addChild(photoHolder_Array[loopCounter]);
Tweener.addTween(photoHolder_Array[loopCounter], {alpha:1, time:alphaDelay});
timer.start();
timer.addEventListener(TimerEvent.TIMER_COMPLETE, loopTimer);
}
private function loopTimer(e:TimerEvent):void
{
if (loopCounter!=photoURL_Array.length-1)
{
Tweener.addTween(photoHolder_Array[loopCounter], {alpha:0, time:alphaDelay, onComplete:function():void {
removeChild(photoHolder_Array[loopCounter-1]);
} });
loopCounter++;
arrayLoop();
}
else
{
Tweener.addTween(photoHolder_Array[loopCounter], {alpha:0, time:alphaDelay, onComplete:function():void {
removeChild(photoHolder_Array[photoHolder_Array.length-1]);
} });
loopCounter=0;
arrayLoop();
}
}
}
}
|