1

嗨,这里是第一个计时器。

我正在使用 tweenlite 库构建一个 Flash 动画。这非常简单,这就是为什么这会如此恶化。它基本上是一个带有 5 帧交叉淡入淡出的幻灯片。当调用下一帧的按钮淡出时,我想禁用它对它的任何操作。目前它会淡出,但是当您将其滚动时,您会看到按钮光标,并且过度状态会使不透明度恢复。

我真的是 Flash 中的菜鸟,所以我相信这非常简单。

谢谢,瑞恩

4

3 回答 3

1

无论如何,即使您有一个new操作员来创建一个,也没有直接删除 AS 中的对象的方法。当对象没有引用时,所有对象都会被垃圾回收。以下是您可以做的两件事:

  • 将事件处理程序添加到按钮对象或其他任何内容时,将它们标记为弱或在完成时将事件处理程序设置为 NULL

  • 尽管 AS 中没有显式删除,但您可以使用var = null语法将对象设置为 null,以使垃圾收集器将其标记为已准备好进行清理。

于 2009-03-17T18:27:42.477 回答
0

如果您真的在使用 AS2(?) - 据我所知 - 您应该使用MovieClip实例而不是Button. 按钮将始终保持手形光标,而 MovieClips 可以根据是否附加任何鼠标处理程序来交换行为。

每当您想停用鼠标操作时,您只需删除您之前定义的处理程序(例如myButton.onRelease = null; myButton.onMouseOver = null; ...)。

如果您实际使用的是 AS3,则应首先删除所有相关的事件侦听器(例如myButton.removeEventListener(MouseEvent.CLICK, clickHandler);

然后将其设置buttonMode为 false 以避免出现手形光标,尽管“点击功能”已被删除 ( myButton.buttonMode = false;)。

希望这是有道理的。

于 2009-03-24T01:13:45.430 回答
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。

于 2009-03-30T23:29:55.623 回答