은 정말 매우 올바른 방향으로 날 가리 키도록 관리 브라이언 비숍의 도움을, 감사합니다.
는 브라이언 오히려 sprite
가 dMove
(이가 왜 dFade
효과는 여전히 스프라이트 때 일로서 나는 아직 확실하지 않다)에 영향을 할 수 단순히 UIComponent 구성으로 d
를 입력, 제안한다. 그러나 floatBG
추가 (BG가되는 배경을 모든 차원의 UIComponent가 추가되는 UIComponent) 응용 프로그램을 작성하기 시작했다 때마다 불필요한, 그래서 내가 그 문제로 실행
내 creationComplete
기능의 this.addElement(floatBG)
일부가 는 D 인스턴스와 (D 원래 종류 내가 그들의 깃털을 만들려고 한 효과의 주제였다 그런데 "데이터 포인트"를 상징), 그리고 점진적으로 기어에 응용 프로그램을 둔화. 지속적으로 d 개의 요소를 추가하려면 화면의 모서리에있는 로고 모서리 부분에 내가 볼 수있는 정도로 아름답게 보이도록해야합니다 ...
결국 나는 아래의 해결책에 도달했습니다. UIComponents의 더미 (600)와 부하 floatBG
는 다음 addDP
함수의 각 사이클 floatBG
로 이동 d
UIComponent를 추가 모두 포함하고 어린이의 전체 어레이의 오프 다른 UIComponent를 제거한다.
따라서, 결국은 같은 것을 보았다 : 그 꽤 장황한 인 경우
<?xml version="1.0" encoding="utf-8"?><s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init(event)">
<fx:Script>
<![CDATA[
import mx.core.DesignLayer;
import mx.core.UIComponent;
import mx.effects.effectClasses.MoveInstance;
import mx.events.EffectEvent;
import mx.events.FlexEvent;
import mx.states.RemoveChild;
import spark.effects.AnimateColor;
import spark.effects.AnimateFilter;
import spark.effects.Fade;
import spark.effects.Move;
import spark.effects.Rotate;
import spark.effects.easing.Sine;
private var floatBG:UIComponent = new UIComponent;
private var floatColour:uint = 0x1C75BC
protected function init(event:FlexEvent):void
{
//Float BackGround set up
floatBG.mask = floatMaskBlock;
floatBG.depth = -1;
this.addElement(floatBG);
//Fill FloatBG with 600 filler elements
for(var i:int=0; i<600; i++)
{
var filler:UIComponent = new UIComponent;
floatBG.addChild(filler);
}
//Float Animation Timer
var floatTimer:Timer = new Timer(1,0);
floatTimer.addEventListener(TimerEvent.TIMER,DPstartup)
floatTimer.start();
private function DPstartup(event:TimerEvent):void
{
this.addDP(5,60)
this.addDP(22,14);
this.addDP(18,18);
}
private function addDP(yf:Number,yt:Number):void
{
this.title.text = floatBG.numChildren.toString();
var dY:Number = yf+Math.ceil(Math.random()*yt);
var dXby:Number = Math.ceil(Math.random()*1000 + 50);
var dSize:Number = Math.ceil(Math.random()*12);
var dAlpha:Number = Math.random()*0.5 + 0.2
var dMotionDuration:Number = Math.ceil(Math.random()*15000) + 1000;
var dFadeDuration:Number = Math.random()*dMotionDuration;
var d:UIComponent = new UIComponent;
d.graphics.beginFill(floatColour,dAlpha);
d.graphics.drawRect(78, dY, dSize,dSize);
d.graphics.endFill();
var dMove:Move = new Move(d);
dMove.xBy = dXby;
dMove.duration = dMotionDuration;
dMove.easer = Linear;
dMove.play();
var dFade:Fade = new Fade(d);
dFade.alphaFrom = dAlpha;
dFade.alphaTo = 0;
dFade.duration = dFadeDuration;
dFade.play();
floatBG.addChild(d);
floatBG.removeChildAt(0);
};
]]>
</fx:Script>
<fx:Declarations>
<s:Sine id="Sine"/>
<s:Bounce id="Bounce"/>
<s:Linear id="Linear"/>
</fx:Declarations>
<s:Group x="88" width="1000" height="80" id="floatMaskBlock">
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="0xffffff"/>
</s:fill>
</s:Rect>
</s:Group></s:Group>
좋아, 사과,하지만 누군가는 유용하게 사용할 수있는 ... 내가 그렇게 생각 (멋진 효과입니다 어쨌든)
I가 D 원소가 나타나는 시점에 날카로운 모서리를 제공하기 위해 마스크를 사용한다. 또한 하나의 또 다른 개체 뒤에 배치 할 수 있지만, 내 경우처럼, 객체가 D의 요소 중 일부의 크기보다 작은 폭의 라인 인 경우, 같은 마스크가 필요합니다. 나는 가능성이 클릭, 또는 유사한 무언가를 변경하는 기능을 추가 할 것 같은
색상은 시작 부분에 변수로 선언된다.
감사합니다!
Josh
문제는 Move 클래스에 있다고 가정합니다. 너도 그걸 게시 할 수 있니? – longstaff
@shortstick : 이동은 Flex 프레임 워크 클래스이며 사용자 정의 프레임 워크 클래스는 아닙니다. – Ryan