你好第一个计时器。
我正在使用tweenlite库构建flash动画。这非常简单,这就是为什么这是如此恶化。它基本上是一个幻灯片,有5帧交叉淡入淡出。当一个调用下一帧的按钮淡出时,我想禁用它上面的任何动作。目前它已逐渐消失,但当你滚动它时,你会得到按钮光标,并且夸大其词会使不透明度恢复。
我真的是闪光灯中的菜鸟,所以我确信这非常简单。
感谢, 莱恩
答案 0 :(得分:1)
无论如何,即使您有new
运算符来创建一个,也没有直接的方法来删除AS中的对象。当没有该对象的强引用时,所有对象都被垃圾收集。您可以执行以下两项操作:
将事件处理程序添加到按钮对象或其他任何内容时,将它们标记为弱或在通过时将事件处理程序设置为NULL
虽然AS中没有显式删除,但您可以使用var = null
语法将对象设置为null,以使垃圾收集器将其标记为读取y以进行清理。
答案 1 :(得分:0)
如果你真的使用AS2(?) - 据我记得 - 你应该使用MovieClip
实例而不是Button
。按钮将始终保持手形光标,而MovieClip可以根据是否连接任何鼠标处理程序来交换行为。
每当您想要停用鼠标操作时,您应该删除之前定义的处理程序(例如myButton.onRelease = null; myButton.onMouseOver = null; ...
)。
如果您实际使用的是AS3 ,则应先删除所有相关的事件监听器(例如myButton.removeEventListener(MouseEvent.CLICK, clickHandler);
)
然后将其buttonMode
设置为false,以避免手形光标显示,但已删除“点击功能”(myButton.buttonMode = false;
)。
希望它有意义。
答案 2 :(得分:0)
我看到的大多数幻灯片都是可重启的,或者会自行循环播放。我不相信你想要的是删除功能,而只是删除控件一段时间。在MOUSE_DOWN或CLICK时,您可以使用
轻松禁用该按钮var slidesContainer:Sprite = new Sprite();
var slideButton:Sprite = new Sprite();
slideButton.graphics.beginFill(0x000000);
slideButton.drawRect(0,0,100,30);
slideButton.endFill();
addChild(slidebutton);
slideButton.addEventListener(MouseEvent.MOUSE_DOWN, onButtonDown);
var slide01:MovieClip = new Slide();
slidesContainer.addChild(slide01);
var slide02:MovieClip = new Slide();
slidesContainer.addChild(slide02);
//Store references to the newly created movieclips in an array.
var arrayOfSlides:Array = [slide01, slide02];
var currentSlide:int = 0;
function onBtnDown(e:MouseEvent):void
{
TweenLite.to(arrayOfSlides[currentSlide], 1, {alpha: 0});
e.target.mouseEnabled = false; //The button that was pressed down is the target
currentSlide++;
}
这样我们只会使对象不可见并禁用它的鼠标功能。
在不需要时为垃圾收集准备对象是个好主意,但重要的是要知道你想要对你的工作做些什么。如果您希望再也不使用该对象,请通过设置为null来删除任何引用。如果您导出到Flash Player 10,则有unloadAndStop方法可以极大地帮助完全删除项目和准备GC。
如果您计划重复使用某些内容,例如在幻灯片放映一段时间后重新启动等,则只需将按钮的可见性和mouseEnabled属性设置为true即可。