【问题标题】:Problem: Movie Clip contains just one frame问题:影片剪辑仅包含一帧
【发布时间】:2011-01-31 10:25:08
【问题描述】:

我是 Flash 的新手,所以开始使用一个非常标准的代码示例:一层包含一个带有飞行矩形的影片剪辑,另一层有一个按钮来控制它。所有脚本代码都在 Main.as 文件中。该矩形通过属性窗口被命名为 square1。

问题是:Main 的构造函数有一行: square1.stop(); 以防止播放剪辑,但这无济于事-它会播放。我知道构造函数会触发,因为它里面有 trace("stuff") 。代码会检查舞台是否已创建。

奇怪的是 square1.currentFrame 总是返回 1,而 square1.totalFrames 也返回 1。该图层在时间轴上有 24 帧。我尝试了一个只有 2 个关键帧的补间,然后将整个补间转换为帧 - 结果相同。我的意思是,这东西在我眼前飞来飞去,怎么可能只有一帧???

我什至添加了一个监听器: square1.addEventListener(Event.ENTER_FRAME, onFrameChange); 事件一直触发,即帧发生变化,但 currentFrame 仍为 1。

另外,尝试命名单个帧并使用 square1.gotoAndStop("begin") 和类似的东西。没有什么帮助。我真的被这个愚蠢的问题困住了。

【问题讨论】:

    标签: flash flash-cs4


    【解决方案1】:

    您的矩形 (square1) 只有一帧。它只是一个矩形(没有修改,孪生等......)。从库中打开它并查看其时间线。

    这个对象被放置在另一个影片剪辑的时间线上(例如“主”)。只有那个剪辑有几个帧,但不是 square1。例如,您应该停止“主”框架,例如 this.stop()。或者,您可以创建一个新的 MovieClip(“movingSquare”),其中包含多个包含移动方块的帧,并将其放置在“主”舞台上。您将有一个以下收容通道:“主场景”(可能只有一帧)->“movingSquare”(带有正方形的几个帧)->“square1”(单帧电影剪辑)。在这种情况下,您应该调用“movingSquare.stop()”来阻止它播放。

    【讨论】:

    • 不确定您的建议是否正确。首先,该矩形已转换为符号。它的类在属性窗口中显示为影片剪辑。其次,我刚刚尝试了 square1.parent.stop(),它给了我一个错误:“1061:调用可能未定义的方法通过静态类型 flash.display:DisplayObjectContainer 的引用停止。”我错过了什么?
    • 刚刚在运行时检查了对象。 square1 是 MovieClip 类型。它的直接父级是 Main 类的一个实例。 Main 类只是扩展 Sprite。因此,这里唯一具有 MovieClip 类型的是 square1。我在场景中添加了更多剪辑,所有剪辑都显示 totalFrames = 1。怎么会这样?
    • 尝试双击您的 square1 对象(在场景中或图书馆中)并查看它的时间线。有多少帧?影片剪辑可能只有一帧。此外,使 Main 扩展 MovieClip 并调用 MovieClip(square1.parent).stop();。需要对 MovieClip 进行显式转换,因为 suare1.parent 是一个 DisplayObject(它可能是一个精灵)。现在物体停止移动了吗?
    • 感谢您帮助我。我不认为它会起作用,但它确实起作用了!是的,square1 是库中的一个形状符号,它的时间轴有 1 帧。当我进行明确的演员表时,它起作用并停止了电影。现在这真的很奇怪。我想当我将它添加到场景中并将其转换为 MovieClip 时,它会成为一个影片剪辑。这是一个影片剪辑,但其中只有 1 帧。再次感谢!现在我将按照预期的方式更改代码,以便 square1.stop() 可以工作。
    猜你喜欢
    • 2015-07-07
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 2011-08-10
    • 2017-06-24
    相关资源
    最近更新 更多