Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3奇怪的结构问题_Actionscript 3_Oop_Structure - Fatal编程技术网

Actionscript 3 AS3奇怪的结构问题

Actionscript 3 AS3奇怪的结构问题,actionscript-3,oop,structure,Actionscript 3,Oop,Structure,我(我认为)非常擅长构建我的应用程序类和包,但最近我一直在权衡一些东西,我可以在以下方面提供一些建议: 仅包含静态常量的类,如下所示: package //? { public class Elements { public static const FIRE:String = "fire"; public static const WATER:String = "water"; } } var myElement:String = El

我(我认为)非常擅长构建我的应用程序类和包,但最近我一直在权衡一些东西,我可以在以下方面提供一些建议:

仅包含静态常量的类,如下所示:

package //?
{
    public class Elements
    {
        public static const FIRE:String = "fire";
        public static const WATER:String = "water";
    }
}
var myElement:String = Elements.FIRE;
在这种情况下显然会用到:

package //?
{
    public class Elements
    {
        public static const FIRE:String = "fire";
        public static const WATER:String = "water";
    }
}
var myElement:String = Elements.FIRE;
我总是将这些类放在包含其他类的包中,这些类可以充分利用它们。例如,这个类可能在
游戏.mobiles
中,因为这个包包含了手机类(玩家、敌人等),这些手机类充分利用了
元素
;他们的抵抗力和伤害可以是元素

这对我来说似乎很奇怪,因为
元素
实际上与手机没有任何关系(因为它不是手机,技术上甚至与手机无关)

我开始怀疑我是否应该把我所有的类都放在一个通用包中,比如
game.statics
,尽管从某些角度看这看起来也很混乱


当涉及到这些小类时,我应该在这里做些什么,以获得尽可能清晰易懂的结构?

我认为您现有的方法是正确的,因为它是最符合逻辑的。通常,您看不到(在通用体系结构中)只包含静态/常量变量的类。您通常会看到它们与一个类捆绑在一起,在这个类中,大多数使用这些静态的功能都存在。例如,AS3中的任何事件类。您将看到与实际事件类(MouseEvent)捆绑在一起的static const MouseEvent.MOUSE_DOWN等。我认为将它们分离到一个纯粹用于存储静态数据的包中是不太合乎逻辑的,尽管这并不一定是错误的。无论如何,如果您要遵循已建立的示例,我会以AS3语言本身为例,在该示例中,我们可以看到flash核心团队似乎将类组装成具有最高关联级别的包。我想可能你对此产生了怀疑,因为你有一个纯粹由常量组成的类,没有功能或继承将类显式地耦合或链接到其他任何东西。

我想如果我有很多与特定任务相关的常量,但可能不止一个类需要(比如说,游戏中重力的值),我会把它们放在这样的定义类中。我不喜欢函数类仅仅为了常量值而相互引用(太多耦合).

这是有道理的,尽管我的情况是3。请看一下StageScaleMode类-它打包在flash.display中。这对我来说是合乎逻辑的,因为它与显示有很强的关系,并且只需要在Stage上设置scaleMode属性,而Stage也打包在flash.display下。我的示例是E元素可以在整个游戏中被引用(在你的角色表中显示信息,例如fireResist.text=player.Resistences[Elements.FIRE];等等。是的,我理解这个难题,这是一个有点奇怪的类。通常当我在其他作品中看到这样的类时,它们倾向于放在一个名称空间中,比如“mydomain.core.XXX”我不知道,就像我说的,我不认为把它放在它自己的包/名称空间中必然是错误的。也许其他人可能会有更多的见解。听起来就像我能得到的一样真实。谢谢你支持我当前的结构-我想我必须坚持这一点。你能详细说明你最后一句话的意思吗?“我不喜欢功能…”好吧,如果类A引用类B中的常量,那么使用类A的任何SWF也需要类B的副本,这就要求类B引用的所有类都在其中…在需要较小文件大小的情况下,它可以加起来。如果类A和B都引用简单类C中的常量,那么当A或B在文件中单独使用时,e没有额外的类链接级联。武器和盔甲将具有元素属性,但这些属性将打包在游戏。物品。装备。(武器/盔甲)。这是一个很好的例子,说明元素类在游戏中也很需要,但将其放在游戏中。物品似乎更奇怪。马蒂,我已经像你在大多数情况下一样做了。你有没有具有元素属性的武器/护甲类?如果你只是考虑将武器/护甲作为玩家和敌人类的一部分,那就是ki第二,造成他们直接依赖于元素的情况。根据你的定义,他们是你手机的一部分,并与之耦合。抱歉,删除了要添加的注释。如果武器/装甲在他们自己的类中处理,手机不需要知道它的存在。我已经在这条路上走过多次:)这也让我感到困扰。但它作为物品属性比作为移动属性更有意义。这真的取决于你想走多远:)除了装备之外,还会有其他物品具有元素效果吗?我不确定你的意思,手机的基类和物品的基类都会大量使用元素。你是说,因为装甲和武器的伤害和防御是基于一种元素,而移动类不需要太多地使用元素本身?