2011-11-24 2 views
0

여기 상황이 있습니다. 나는 cs5.5에서 프로젝트를 위해 플래시 웹 사이트를 만들고 있는데 페이지 레이아웃은 배경 이미지를 무작위로 분해하고 다음 프레임을로드하고 싶다. (CS3에서는 타임 라인 효과가 있지만 제거되었다. cs4 +). Tweener.as V1.33 (AS2 용)을 사용하여 이미지를 폭발시키는 AS2 스크립트를 찾았지만 누구나 AS3에서 작동하도록하는 방법을 알고 있습니까? 감사합니다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

답변

0

솔직히, 코드가 꽤 AS3 친화적 인 모습을. 물론 구현해야하는 수정 사항이 있지만 전반적으로 문제는 없어야합니다.

먼저 속성의 밑줄을 모두 지 웁니다 (예 : _x에서 x까지). 또한 값을 반환하는 함수가있는 경우 반환하는 변수의 유형을 선언해야합니다. 문자열,

그래서, 당신의 범위 기능은 것은 다음과 같습니다

번호, 부울 .... : 왕따 자식의

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

다운로드 AS3 버전이나 TweenMax 살펴 있습니다 http://www.greensock.com/tweenmax를 단지에 왕따 자식 코드를 대체 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}); 

그것을보십시오. 당신이 생각하는 것보다 쉬워야한다;) 당신이 붙어 있거나 quesions가 있으면, 멀리 날아라!

+0

다시 연락해 주셔서 감사합니다. 밑줄을 편집하여 AS3 문서에 붙여 넣으면 수많은 오류가 발생했습니다. [link] (http://i70.photobucket.com/albums/i87/2SK9/Help/Screenshot2011-11-24at151648.png)에서 어떤 아이디어를 볼 수 있습니까? – Sayo1337

+0

ActionScript 2 파일을 게시하는 것처럼 보입니다. 게시 설정을 확인하고 ActionScript 3로 변경하십시오. – pioSko

+0

이 스크립트를 자세히 읽어보고 주셔서 감사합니다. 오류를 컴파일하고 TweenMax를 사용했습니다 (팁 XD 덕분에 더 좋은 마일입니다).하지만 이제는 " TypeError : 오류 # 1034 : 형식 강제 변환에 실패했습니다 : "container_mc"를 flash.display.DisplayObject로 변환 할 수 없습니다. as3_fla :: MainTimeline/frame1() "출력 오류, 아이디어가 있습니까? \t – Sayo1337