Flash Java、C和x2B之间有什么区别+;关于OOP的ActionScript3.0?
在纯编程环境中(如structural&OOP),您发现Java/C++和ActionScript之间的主要区别是什么(或者必须小心不要混淆)?任何其他显著或重要的差异也是受欢迎的。非类型数组。Actionscript(ECMAScript/Javascript的方言,所以如果您知道这会更容易的话)有一个数组类。它是非类型化的,只是一些需要习惯的东西 任何动态对象都可以是哈希表。有时候这真的很好 语法很容易理解,因为这很相似。存在一些作用域差异,变量和函数的声明不同 ECMAScript比Java/C++更具动态性,您可能会发现这非常有用 如果您正在使用Flex,请尝试充分利用MXML,它会使某些事情变得更容易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
<>我会尽量在这方面考虑到。 < 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