0

我一直在用时间线代码编写游戏。我希望游戏中的不同框架(房间)能够相互共享信息。当然,时间线代码仅限于编写它的帧。

经过大量阅读(“使用 Flash 进行基础游戏设计”和大量文章、教程、论坛等)后,我决定使用文档类。这也不起作用。似乎它仅适用于第一帧,但不适用于其余帧(我有四个)。

如何让第四帧响应第一帧中发生的事情?例如,如果播放器在第一帧中实现了某些目标,我希望在第四帧中的影片剪辑可见。

4

3 回答 3

2

如果您在时间轴上编写代码,我的建议是在时间轴中创建两个图层,一个用于“帧动作” - 在此图层中,您插入特定于单个帧的代码(当电影剪辑停止时将起作用在那个特定的帧上).. 并且还创建一个称为全局动作的层(用于整个时间轴)。只有第一帧是关键帧,并且在时间轴结束之前应该有空帧。在这一层中,动作编写您想要从同一时间轴中的任何关键帧访问的代码。

如果您在为整个时间线(全局动作)编写的动作中定义一个变量,那么它将在所有帧上都可用。

现在,如果您想基于某些动作转到不同的帧,只需在包含全局动作的层中编写一些函数,并通过帧动作调用该特定函数。要转到不同的帧,请使用 flash 的“gotoAndStop(frameNumber)”函数。

我想告诉你,虽然它会起作用,但我不建议以这种方式使用它。

HTH。

于 2013-04-29T09:23:32.170 回答
1

You can use static variables - these are variables which are linked to a class, rather than an instance of it.

Suppose your document class was called Document.as, and you wanted a variable, playerLives, to be visible from any part of the program.

Declare it inside Document.as:

public static var playerLives:int = 3;

You can then reference this directly from anywhere else in your code with:

Document.playerLives

(note that the variable is a member of the class itself, not an instance of it).

You could use a dedicated Statics class to hold these variables if you want to keep your document neat, or attach them to the relevant classes (eg Player.lives)

I've not used timeline/frames for some years but I believe this is how I used to do it!

NB Statics will be fine for your purposes but they are, in some ways, an equivalent to the _global variable in AS2 (at least, they can be used in the same manner) - many would not approve of their use, or over-use, as they are freely accessible from anywhere in your program (thus anathema to the OO concept of encapsulation), but personally I try not to worry about it in small cases - the most important thing to know about the rules of any design pattern is when they can be broken!

They are also slightly slower to access than instance members, but you won't notice this unless you are constantly accessing/changing them (making things like player velocity, which will need to be referenced/changed every frame, static, is not a good idea).

Hope this helps.

于 2013-04-29T09:07:05.670 回答
1

您可能会发现将所有内容与文档类链接的最简单方法是将四个帧一起移动到一个影片剪辑中,并将其放在第一帧上,然后与该影片剪辑进行交互。

例如在文档类中,时间轴上的movieclip 实例被称为“游戏”。

game.gotoAndStop(4);
game.objectToDisplay.visible = true;

如果您在 IDE 中遇到引用错误,则可以通过使用 [] 表示法来引用游戏属性来避免这些错误,例如 game["objectToDisplay"].visible = true;

请注意,这样做并不是真正的最佳实践,但它至少可以帮助您完成第一场比赛,这在您的学习阶段非常重要。之后,如果您想了解更多信息,我会推荐来自 8bitrocket.com 的 Jeff Fulton 撰写的“Flash 游戏基本指南”——它将教您如何有效地使用文档类。

于 2013-04-29T14:42:42.320 回答