动态添加3层动画片段到舞台然后填充它

时间:2015-04-19 14:23:51

标签: actionscript-3 movieclip

我要做的是在movieClips [sReel]中单独添加标记为1-20的20个jpgs,然后将movieClip添加到movieClip [aReel]并将movieClip [aReel]复制到movieClip [mReel]中,这样我就可以了水平滚动movieClip。

我可以手动完成所有问题,但自动完成并不容易:(

只需要如何正确堆叠mocieC​​lips,因为知道如何做休息oc代码谢谢..

var movie_Number:Array = new Array();
var movie_Title: Array = new Array();
var movie_Director: Array = new Array();
var movie_Star: Array = new Array();
var movie_Duration: Array = new Array();
var movie_Genre: Array = new Array();
var movie_Year: Array = new Array();
var movie_Rating: Array = new Array();
var movie_Comment: Array = new Array();


var mReel:MovieClip = new MovieClip;
var aReel:MovieClip = new MovieClip;
var bReel:MovieClip = new MovieClip;
var sReel:MovieClip = new MovieClip;
var ldr:Loader;

newReelMask.cacheAsBitmap = true;
mReel.cacheAsBitmap = true;
mReel.mask = newReelMask;

var xmlLoader:URLLoader = new URLLoader(), xmlData:XML;
var movieNum:Number;
var xReel = 0;

mReel.addEventListener(MouseEvent.MOUSE_OVER, onStop);
mReel.addEventListener(MouseEvent.MOUSE_OUT, onStart);

var myTimer:Timer = new Timer(1);
myTimer.addEventListener(TimerEvent.TIMER, timerListener);
myTimer.start();

init();

makeSmallReel();
aReel.x = 0;
aReel.y = 0;
mReel.addChild(aReel);

addChild(mReel);



function init():void
{
    xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
    xmlLoader.load(new URLRequest("movieInfo.xml"));
}

function LoadXML(e:Event):void
{
    xmlData = new XML(e.target.data);
    var movieTitle:XMLList = xmlData..title;
    var movieDirector:XMLList = xmlData..director;
    var movieStar:XMLList = xmlData..star;
    var movieDuration:XMLList = xmlData..duration;
    var movieGenre:XMLList = xmlData..genre;
    var movieYear:XMLList = xmlData..year;
    var movieRating:XMLList = xmlData..rating;
    var movieComment:XMLList = xmlData..comment;
    var len: int = xmlData.movie.length();
    var i:int = 0;
    for (i; i < len; i++)
        {
            movie_Number.push(i);
            movie_Title.push(movieTitle[i]);
            movie_Director.push(movieDirector[i]);
            movie_Star.push(movieStar[i]);
            movie_Duration.push(movieDuration[i]);
            movie_Genre.push(movieGenre[i]);
            movie_Year.push(movieYear[i]);
            movie_Rating.push(movieRating[i]);
            movie_Comment.push(movieComment[i]);
        }
}

function makeSmallReel():void
{
    var i:int = 1;
    for (i; i < 11; i++)
    {
    ldr = new Loader();
    ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ldr_complete);
    ldr.load(new URLRequest("images/thumb/"+i+".jpg"));
    }
}
function ldr_complete(e:Event):void 
{
    sReel.x = xReel;
    sReel.addChild(ldr);
    xReel = xReel + e.target.width;
    aReel.addChild(sReel);
}

function timerListener(e:TimerEvent):void
{
    if (mReel.x <= -(aReel.width))
        {
        mReel.x = 0;
        }
    mReel.x -= 1;
}

function onStop(e:MouseEvent):void
{
    myTimer.stop();
}

function onStart(e:MouseEvent):void
{
    myTimer.start();
}

1 个答案:

答案 0 :(得分:0)

您总是将相同的加载器(ldr是class-var)添加到容器中。 在加载时,您必须为每张图片创建一个ldr vor。并在完整处理程序中将其添加到容器中。 (在你的完整处理程序中是e.target

BTW:你不需要MovieCLip。一个Sprite是,因为semms,你永远不需要movieclip的时间轴,这是MovieClip和Sprite(以及开销)之间的差异。