AS2 Image Explosion будет конвертирован в AS3 - PullRequest
0 голосов
/ 24 ноября 2011

Вот ситуация.Я создаю флэш-сайт в CS5.5 для проекта и для перехода по страницам. Я хотел бы разбить фоновое изображение на случайные части и затем загрузить следующий кадр (В CS3 для этого был эффект временной шкалы, но он был удаленcs4 +).Я нашел скрипт AS2 для взрыва образа (с Tweener.as V1.33 (для AS2)), но кто-нибудь знает, как заставить его работать с AS3?Спасибо

Код следует:

    import flash.display.BitmapData;
    import flash.geom.Rectangle;
    import flash.geom.Point;
    import caurina.transitions.Tweener;
    //
    var container:MovieClip = this.createEmptyMovieClip("container_mc", this.getNextHighestDepth());
    var bmp:BitmapData = BitmapData.loadBitmap("careca");
    var grid:Number = 20;
    var rect:MovieClip;
    var depth:MovieClip = this;
    var spacement:Number = 0;
    var count:Number = 0;
    var rows:Number = 0;
    var a:Number, b:Number, c:Number, d:Number;
    var rects:MovieClip = depth.createEmptyMovieClip("rects_mc", depth.getNextHighestDepth());
    var pieces:Array = new Array();
    //
    container.attachBitmap(bmp, container.getNextHighestDepth());
    container._visible = false;
    //
    function init() {
    create();
    }
    function randRange(min:Number, max:Number) {
    var randomNum:Number = Math.round(Math.random()*(max-min+1)+(min-.5));
    return randomNum;
    }
    function clearBitmaps() {
    rects.swapDepths(0);
    rects.removeMovieClip();
    }
    function create() {
    for (a=1; a<=Math.round(container._height/grid); a++) {
    drawLine();
    rows++;
    }
    rects._x = Stage.width/2-rects._width/2;
    rects._y = Stage.height/2-rects._height/2;
    }
    function drawLine() {
    for (b=0; b<Math.round(container._width/grid); b++) {
    rect = rects.createEmptyMovieClip("rect"+String(rows)+String(b)+"_mc", rects.getNextHighestDepth());
    bmp[i] = new BitmapData(grid, grid, true);
    //
    bmp[i].copyPixels(bmp, new Rectangle(grid*b, grid*rows, grid, grid), new Point(0, 0));
    rect.attachBitmap(bmp[i], rect.getNextHighestDepth());
    rect.initX = (rect._width+spacement)*b;
    rect.initY = (rect._height+spacement)*rows;
    rect.randomX = randRange(-Stage.width, Stage.width);
    rect.randomY = randRange(-Stage.height, Stage.height);
    rect.randomRotation = randRange(10, 360);
    rect.randomScale = randRange(0, 100);
    rect.randomAlpha = 0;
    rect.cacheAsBitmap = true;
    rect._x = rect.initX;
    rect._y = rect.initY;
    //
   pieces.push(rect);
   }
   setTimeout(animPieces, 1000);
   }
   function animPieces() {
   for (c=0; c<pieces.length; c++) {
   rect = pieces[c];
   Tweener.addTween(rect, {_scale:rect.randomScale, _rotation:rect.randomRotation, _x:rect.randomX, _y:rect.randomY, _alpha:0, time:5, transition:"easeOutExpo", onComplete:clearBitmaps});
   }
   }
   //
   init()

Источник: Lemlinh.com

1 Ответ

0 голосов
/ 24 ноября 2011

Честно говоря, код выглядит довольно дружественным к AS3. Конечно, есть модификации, которые вы должны реализовать, но в целом у вас не должно быть проблем.

Сначала удалите все подчеркивания в свойствах (например, от _x до x). Кроме того, если у вас есть функция, которая возвращает значение, вы должны объявить тип возвращаемой переменной, т.е. String, Number, Boolean ....

Итак, ваша функция диапазона будет выглядеть так:

function randRange(min:Number, max:Number):Number {
    var randomNum:Number = Math.round(Math.random()*(max-min+1)+(min-.5));
    return randomNum;
}

Загрузите версию Tweener для AS3 или посмотрите на TweenMax: http://www.greensock.com/tweenmax и просто замените код Tweener на TweenMax. Очень легко сделать.

от

Tweener.addTween(rect, {_scale:rect.randomScale, _rotation:rect.randomRotation, _x:rect.randomX, _y:rect.randomY, _alpha:0, time:5, transition:"easeOutExpo", onComplete:clearBitmaps});

до:

TweenMax.to(rect, 5, { scaleX:rect.randomScale, scaleY:rect.randomScale, rotation:rect.randomRotation, x:rect.randomX, y:rect.randomY, alpha:0, ease: Sine.easeOut, onComplete:clearBitmaps});

Попробуй. Должно быть проще, чем вы думаете;) Если вы застряли или у вас есть вопросы, стреляйте!

...