2012-06-28 4 views
0

액션 스크립트를 사용하여 Flash에서 대각선 그리기와 같은 효과를 만드는 방법은 무엇입니까? 모션 트윈을 사용하여 애니메이션을 만든 다음 해당 모션 트윈에서 액션 스크립트를 생성하려고 시도했지만 애니메이션이 화면 가운데에서 시작하여 그립니다. 그것은 정규 애니메이션으로 만들어진 것처럼 왼쪽에서 시작해야합니다. 이것은 생성 액션 스크립트입니다액션 스크립트에서 대각선을 그리는 방법

import fl.motion.Animator; 
var laser_xml:XML = <Motion duration="75" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*"> 
    <source> 
     <Source frameRate="25" x="13.6" y="13.25" scaleX="1" scaleY="1" rotation="0" elementType="drawing object"> 
      <dimensions> 
       <geom:Rectangle left="10" top="10" width="7.25" height="6.5"/> 
      </dimensions> 
      <transformationPoint> 
       <geom:Point x="-1.3793103448275863" y="-1.5384615384615385"/> 
      </transformationPoint> 
     </Source> 
    </source> 

    <Keyframe index="0"/> 

    <Keyframe index="74" x="188.70000000000002" y="189.05"/> 
</Motion>; 

var laser_animator:Animator = new Animator(laser_xml, laser); 
laser_animator.play(); 

답변

1

당신이 생성 된 코드를 수정하는 방법을 묻는 또는 AS3 전적으로 그것을하는 경우 확실하지. 후자의 경우, 이것은 당신에게 원하는 효과를 줄 것입니다. tweening 라이브러리 (예 : TweenLite 또는 GTween)를 사용하면 더 깨끗합니다.

var s:Shape = new Shape(); 
addChild(s); 

var startPoint:Point = new Point(); 
var endPoint:Point = new Point(); 
var prog:Number = 0; 
var frames:int = 200; 

animateLine(100,100,50,50); 

function animateLine(startX:Number, startY:Number, endX:Number, endY:Number, time:Number = 120):void { 
    startPoint.x = startX; 
    startPoint.y = startY; 
    endPoint.x = endX; 
    endPoint.y = endY; 

    frames = time; 
    prog = 0; 
    this.addEventListener(Event.ENTER_FRAME, tick); 
} 

function drawLineTick(progress:Number):void{ 
    s.graphics.clear(); 
    s.graphics.lineStyle(3,0xFF0000); 
    s.graphics.moveTo(startPoint.x,startPoint.y); 
    s.graphics.lineTo(startPoint.x + ((endPoint.x - startPoint.x) * progress), startPoint.y + ((endPoint.y - startPoint.y) * progress)); 
} 

function tick(e:Event):void { 
    trace("tick",prog); 
    if(prog >= frames){ 
     this.removeEventListener(Event.ENTER_FRAME, tick); 
    } 

    drawLineTick(prog/frames); 
    prog += 1; 
} 
+0

감사합니다. 내가이 기능을 향상시켜 5 줄을 하나씩 쓰는 방법을 알고 있습니까? – bla0009

+0

그래서, 기술적으로, 내 질문은 동적으로 여러 모양을 만드는 방법입니까? 미리 감사드립니다! – bla0009

관련 문제