有人可以解释为什么这不想工作?在徽标后面有点装饰。
当dMove var被注释掉时,我在x = 78轴的随机点上得到适当的正方形淡入淡出区域,但是在引入时没有任何东西出现...
private var floatBG:UIComponent = new UIComponent();
private function addDP(event:TimerEvent):void{
var dY:Number = 5+Math.ceil(Math.random()*60);
var dSize:Number = Math.ceil(Math.random()*12);
var dAlpha:Number = Math.random()*0.5 + 0.2
var dDuration:Number = Math.ceil(Math.random()*5000) + 1000;
var d:Sprite = new Sprite();
d.graphics.beginFill(0x1C75BC,dAlpha);
d.graphics.drawRect(78, dY, dSize,dSize);
d.graphics.endFill();
floatBG.addChild(d);
var dMove:Move = new Move(d);
dMove.xBy = 300;
dMove.duration = dDuration;
dMove.play();
var dFade:Fade = new Fade(d);
dFade.alphaFrom = 1;
dFade.alphaTo = 0;
dFade.duration = dDuration;
dFade.play();
this.addElement(floatBG);
}
此外,在每个周期结束时销毁精灵的最佳/正确方法是什么?
提前多多感谢,非常感谢!
约什
答案 0 :(得分:2)
好的,所以经过一段时间的努力,我找到了一个解决方案,我非常感谢Brian Bishop的帮助,他非常感谢我指出了正确的方向。
正如Brian建议的那样,只需输入d
作为UIComponent,而不是sprite
允许dMove
生效(我仍然不确定为什么会这样,{{1}当它仍然是精灵时效果有效)。但是,每次添加dFade
(BG为背景,添加了所有d UIComponent的UIComponent)都是不必要的,因此我将floatBG
部分作为this.addElement(floatBG)
函数的一部分
然后我遇到了应用程序开始填充d实例的问题(d原来代表“datapoint”,这是我试图创建的效果的主题,一个羽毛他们),并逐步减慢应用程序的速度。要连续添加d元素是必要的,因为它是位于屏幕一角的徽标的一部分,看起来像我可以做到的那样漂亮......
最终我来到了下面的解决方案,其关键是加载creationComplete
600个虚拟UIComponents,然后在floatBG
函数的每个循环中添加一个移动的addDP
UIComponent到d
并从其包含的子数组中删除另一个UIComponent。
因此,最终它看起来像这样:
floatBG
好的,如果这很啰嗦道歉,但有人可能觉得它很有用......这是一个很好的效果(无论如何我都这么认为)
我使用蒙版为d元素出现的点提供了锐利的边缘。或者,可以将它放在另一个对象后面,但如果在我的情况下,对象是一条宽度小于某些d元素大小的行,则需要这样的掩码。
颜色在开头被声明为变量,因为我可能会添加一个函数来在点击时更改它或类似的东西。
谢谢!
约什
答案 1 :(得分:1)
我在Flex 4中运行了这个,只是我做的改变是使用UIComponent而不是spirte,这很好。也许您使用的是纯AS3项目?他们玩之后不确定是否在摧毁。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.core.UIComponent;
import mx.effects.Fade;
import mx.effects.Move;
private var floatBG:UIComponent = new UIComponent();
private function addDP(event:TimerEvent):void{
var dY:Number = 5+Math.ceil(Math.random()*60);
var dSize:Number = Math.ceil(Math.random()*12);
var dAlpha:Number = Math.random()*0.5 + 0.2
var dDuration:Number = Math.ceil(Math.random()*5000) + 1000;
var d:UIComponent = new UIComponent();
d.graphics.beginFill(0x1C75BC,dAlpha);
d.graphics.drawRect(78, dY, dSize,dSize);
d.graphics.endFill();
floatBG.addChild(d);
var dMove:Move = new Move(d);
dMove.xBy = 300;
dMove.duration = dDuration;
dMove.play();
var dFade:Fade = new Fade(d);
dFade.alphaFrom = 1;
dFade.alphaTo = 0;
dFade.duration = dDuration;
dFade.play();
this.addElement(floatBG);
}
private function onClick():void{
var t:Timer = new Timer(100, 10);
t.start();
t.addEventListener(TimerEvent.TIMER, addDP);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Button click="onClick()" />
</s:Application>