Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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
Flash Java、C和x2B之间有什么区别+;关于OOP的ActionScript3.0?_Flash_Oop_Actionscript_Scripting - Fatal编程技术网

Flash Java、C和x2B之间有什么区别+;关于OOP的ActionScript3.0?

Flash Java、C和x2B之间有什么区别+;关于OOP的ActionScript3.0?,flash,oop,actionscript,scripting,Flash,Oop,Actionscript,Scripting,在纯编程环境中(如structural&OOP),您发现Java/C++和ActionScript之间的主要区别是什么(或者必须小心不要混淆)?任何其他显著或重要的差异也是受欢迎的。非类型数组。Actionscript(ECMAScript/Javascript的方言,所以如果您知道这会更容易的话)有一个数组类。它是非类型化的,只是一些需要习惯的东西 任何动态对象都可以是哈希表。有时候这真的很好 语法很容易理解,因为这很相似。存在一些作用域差异,变量和函数的声明不同 ECMAScript比Jav

在纯编程环境中(如structural&OOP),您发现Java/C++和ActionScript之间的主要区别是什么(或者必须小心不要混淆)?任何其他显著或重要的差异也是受欢迎的。

非类型数组。Actionscript(ECMAScript/Javascript的方言,所以如果您知道这会更容易的话)有一个数组类。它是非类型化的,只是一些需要习惯的东西

任何动态对象都可以是哈希表。有时候这真的很好

语法很容易理解,因为这很相似。存在一些作用域差异,变量和函数的声明不同

ECMAScript比Java/C++更具动态性,您可能会发现这非常有用

如果您正在使用Flex,请尝试充分利用MXML,它会使某些事情变得更容易


<>我会尽量在这方面考虑到。

< P>行动脚本3在能力上绝对比Java更接近java C++:它支持接口、单继承和元数据。不过,它在语法上与两者都不同。对我来说,从C/C++/Java风格到ActionScript的最大区别在于变量的定义。在C中,要声明int,您需要执行以下操作:

int x = 0;
而在ActionScript 3中,它将这样做:

var x : int = 0;
var是必需的,类型在冒号后面指定

功能也需要类似的更改。在C中:

void foo(int x) { //yeah }
在ActionScript 3中:

function foo(x: int) : void { //yeah }
ActionScript 3还通过使用括号运算符[]支持元数据。您可能会使用的最常见元数据是Bindable,它允许将Bindable声明后面的变量绑定到一个组件,该组件在变量更改时自动更新

[Bindable]
var x : int = 0;
这可能是我能想到的C风格和AS风格之间最惊人的区别。如果您使用的是Flex,MXML将提供一整套全新的语法和学习能力

编辑:只记得几件事:ActionScript3中没有构造函数重载。您必须使用默认构造函数。如果要添加可选参数,必须这样做:

class Foo
{
  public function Foo( x : number, y : int = 3, z : string = "default") : void 
  { //stuff here }
}
-----------------------------------------------------------------------------
 ^       ^                       ^                                         ^
 JS     AS3                     Java                                      C++
在上面的示例中,x是必需的,但y和z都是可选的,分别默认为3和“default”

关于您关于对象类的问题,这是一篇很好的文章,详细介绍了Java和AS3之间的区别


将解释什么是类对象-本质上,类的每个声明都是类的实例。这有点让人困惑,但当你认真考虑的时候,它并不会真正改变你的编程方式或者AS3如何实现OO。AS3 OO非常接近Java OO。

类和类层次结构在AS3中是“伪造的”。
AS3更接近于Javascript(它实际上没有类的概念),并且使用基于原型的对象。

您应该仔细阅读这些文章。它详细讨论了如何从Java转到Actionscript


不提及C++,但定义值得一看。ActionScript 3中的

< P>类实际上是类“对象”,也就是说它们是类类的实例,它来自对象。请看这里:

在这里:

这里有一些非常有趣的细节:

Cookieoff Fault是正确的,因为从对象派生类的实际含义(就您的日常编码而言)是最小的——您创建类的实例的方式与在Java中几乎相同:

// Java
MyClass myClass = new MyClass();

// AS3
var myClass:MyClass = new MyClass();

// Or if you prefer a more loosely typed approach
var myClass = new MyClass();
但在幕后,ActionScript是基于ECMAScript 3标准的,因此它实际上更像是JavaScript的超集——它是松散类型的(尽管可以严格编译),它是面向原型的(即使这是从开发人员那里抽象出来的:“类本身声明原型”),它支持功能性和面向对象的范例(耶,闭包!),等等。它在很多方面感觉像Java,但实际上更像JavaScript。所以如果C++是向右的,java位于中间,JavaScript在左边,三个之间的概念相似可能看起来是这样的:

class Foo
{
  public function Foo( x : number, y : int = 3, z : string = "default") : void 
  { //stuff here }
}
-----------------------------------------------------------------------------
 ^       ^                       ^                                         ^
 JS     AS3                     Java                                      C++
。。。当然,这不是一个非常有用的模型

“HoorayImHelping”是对的,但肯定有一些烦恼。不仅没有构造函数重载,也没有任何类型的方法重载。事件都是字符串标识的,如果不小心,可能会产生各种问题。没有ActionScript枚举这样的东西。它没有抽象类的概念。这个名单还有很多


但在这些部门中,它的不足之处在于灵活性。好了,就这样。几乎没有什么像C++,有点像java,但更像是一个JavaScript的超集。希望有帮助

你能说得更清楚些吗。我听说在AS3中,类不仅仅是类,它们更被称为“类对象”。我不理解这一点。Actionscript中给出了Java和Javascript之间的对比,您可以使用“类”es,但MXMLC编译器正在修改代码以使用基于原型的对象定义。是什么让您认为AS3中的类是伪造的。AS2类似于javascript,但AS3更类似于java。阅读我给出的答案中的链接。AS3现在是一种合适的“成熟”语言:)看看AS3是最明确的基于类的,AS2应该被认为是基于原型的。我想看一些文章或证据,让你认为AS3伪造类,更接近JavaScript。在我看来,唯一可以被认为不是严格基于类的部分是当您使用“dynamic”关键字以便可以在运行时向类添加属性时。除非100%必要,否则不推荐使用“动态”的做法,因为它速度较慢,更容易产生bug