【问题标题】:Flash: understanding program flowFlash:了解程序流程
【发布时间】:2012-03-09 23:50:30
【问题描述】:

看了Flash的教程后,我还是不太清楚程序流程到底是什么:

具体来说,我有一个 Flash 游戏的演示(有点像超级马里奥风格)。在里面我有两种类型的武器 - 一个简单的火和大火球。我查看了代码以便更好地学习 Flash [我是新手 - 从本周星期一开始]。

我看到该程序有一个变量来跟踪我在每种武器中剩余的使用次数。我尝试查看使用此变量的所有位置,但找不到它影响屏幕上绘图的位置。

我什至尝试删除变量声明,然后对其进行测试——这样我可能会找到对变量的所有引用——顺便说一句,找到对变量/方法/类的所有引用的任何方便的方法 [我正在使用 ADOBE FLASH CS5 .5]? 另外,我尝试将变量起始值更改为“12”,我注意到当我测试游戏时,该武器确实有 12 次使用。

所以我的问题: 1.似乎这个变量在某种程度上影响了绘图。然而,我不知道它是如何做到的,因为我发现的所有使用这个变量的代码都与绘图无关。这就是逻辑,就像

if(var <= 0){
    var--;
} else{
    return false;
}

这种影响来自哪里?

  1. 有什么方法可以获取对变量的所有引用 [比如在 eclipse ctrl+shift+g 中]?

非常感谢。

【问题讨论】:

    标签: flash


    【解决方案1】:

    Flash 可以在各种不同的事物上编写代码。

    • 外部类
    • 电影剪辑
    • 框架

    根据教程,他们会将代码放在所有这些上,这使得它很难遵循。一般来说,最好将代码放在外部类中,并且仅在绝对必要时才放在框架上。事实上,AS3 不允许您将代码直接放在影片剪辑上,以避免您遇到的问题。

    我假设您使用的是 AS2,因为您没有找到代码以及您说您删除了变量的声明并且一切仍然有效的事实。 (AS2 让你摆脱了很多)

    如果您解锁任何已锁定的图层并选择所有图层,您可能会发现几乎看不见的电影,这些电影仅显示为点。许多糟糕的教程将代码放在这样的隐形电影上来运行所有内容。取消选择所有内容,仅选择该影片剪辑,然后按 [F9] 拉出操作窗口以查看代码。

    另一种选择是代码只是在某处的电影剪辑上。开始点击它们并在操作窗口中查看是否有任何内容。

    无论听起来如何,您都在使用一个不好的例子。搜索 AS3 教程,因为它是更优化的 actionscript 版本,它可以防止许多不良做法,如您所看到的。

    An AS3 tutorial I just came accross


    [编辑]

    为了进一步回答您的问题,程序流程发生在 Flash VM 首先触发任何影片剪辑都可以收听的 onEnterFrame 事件。 (在 AS2 中,它会在每个影片剪辑上调用 onEnterFrame。这已被放弃以支持事件,因此您的类不必在每一帧上更新)一旦发生,VM 就会将所有内容绘制到屏幕上。要获得更完整的概述,我发现了这个website

    您的问题听起来好像所有内容都包含在外部类中。这是example

    【讨论】:

    • 当我删除声明时 - 事情没有奏效。然而,我得到的所有错误都是“逻辑”的东西,而不是任何绘图命令。顺便说一句,它是AS3。
    • 啊!好的,现在我们到了某个地方。 Flash 中没有“绘制”命令。一切都在 OnEnterFrame 上完成,一切都立即生效。没有办法创建其他线程,只有绘制循环。唯一可以异步发生的事情是如果您加载图像但闪存虚拟机会为您处理。所以基本上如果你将movieclip.x更改为20..你实际上已经移动了电影剪辑,它会被这样绘制。
    • 您可能要检查的一件事是进入库并获取影片剪辑的属性。如果它有一个类,那么您需要查找以“.as”结尾的文件。那可能会有你正在寻找的代码
    • 好的。我明白你的回答。然而,我查看了所有代码并没有找到任何“鼠标点击事件”的引用,即使在我测试项目时,它有按钮可以按下。正如您所说,我还在库中找到了这些按钮 - 从鼠标右键菜单中查看了首选项和其他选项,但注意到了。我什至在不同的文件中搜索了他们的一些名字,而且 - 没有运气。所以我想了解的是这一切都藏在哪里?
    • 你在做什么演示?如果它可以在线获得,我可以为您查找并找到所有这些。在我看来,本教程并没有很好地引导您完成代码,并且对于启动 Flash,最好有一些好的教程。至于鼠标点击事件,您将搜索“[someMovieclip].addEventListener(MouseEvent.CLICK, );”这可以在任何类内部或时间轴上(如果帧上有“a”,则表示它有动作脚本代码)。
    猜你喜欢
    • 1970-01-01
    • 2019-11-25
    • 2022-08-19
    • 1970-01-01
    • 2023-04-04
    • 2015-04-29
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多