嗨,这里是第一个计时器。
我正在使用 tweenlite 库构建一个 Flash 动画。这非常简单,这就是为什么这会如此恶化。它基本上是一个带有 5 帧交叉淡入淡出的幻灯片。当调用下一帧的按钮淡出时,我想禁用它对它的任何操作。目前它会淡出,但是当您将其滚动时,您会看到按钮光标,并且过度状态会使不透明度恢复。
我真的是 Flash 中的菜鸟,所以我相信这非常简单。
谢谢,瑞恩
嗨,这里是第一个计时器。
我正在使用 tweenlite 库构建一个 Flash 动画。这非常简单,这就是为什么这会如此恶化。它基本上是一个带有 5 帧交叉淡入淡出的幻灯片。当调用下一帧的按钮淡出时,我想禁用它对它的任何操作。目前它会淡出,但是当您将其滚动时,您会看到按钮光标,并且过度状态会使不透明度恢复。
我真的是 Flash 中的菜鸟,所以我相信这非常简单。
谢谢,瑞恩
无论如何,即使您有一个new
操作员来创建一个,也没有直接删除 AS 中的对象的方法。当对象没有强引用时,所有对象都会被垃圾回收。以下是您可以做的两件事:
将事件处理程序添加到按钮对象或其他任何内容时,将它们标记为弱或在完成时将事件处理程序设置为 NULL
尽管 AS 中没有显式删除,但您可以使用var = null
语法将对象设置为 null,以使垃圾收集器将其标记为已准备好进行清理。
如果您真的在使用 AS2(?) - 据我所知 - 您应该使用MovieClip
实例而不是Button
. 按钮将始终保持手形光标,而 MovieClips 可以根据是否附加任何鼠标处理程序来交换行为。
每当您想停用鼠标操作时,您只需删除您之前定义的处理程序(例如myButton.onRelease = null; myButton.onMouseOver = null; ...
)。
如果您实际使用的是 AS3,则应首先删除所有相关的事件侦听器(例如myButton.removeEventListener(MouseEvent.CLICK, clickHandler);
)
然后将其设置buttonMode
为 false 以避免出现手形光标,尽管“点击功能”已被删除 ( myButton.buttonMode = false;
)。
希望这是有道理的。
我看到的大多数幻灯片都是可重新启动的,或者会自行循环播放。我不相信您想要的是删除功能,而只是删除特定时间的控件。在 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。