守望者--AIR技术交流
标题:
haxe-openfl基础篇,从as3 到haxe语法转变
[打印本页]
作者:
破晓
时间:
2015-1-6 15:55
标题:
haxe-openfl基础篇,从as3 到haxe语法转变
基础类型
AS3
AS3
Boolean
int
Number
Object
void
Array
Vector.<String>
Haxe
Bool
Int
Float
Dynamic
Void
Array<Dynamic>
Array<String>
包的写法
AS3
package com.example.myapplication {
}
复制代码
Haxe
package com.example.myapplication;
复制代码
定义类
AS3
public class MyClass {
public function MyClass () {
}
}
复制代码
Haxe
class MyClass {
public function new () {
}
}
复制代码
for 循环
AS3
for (var i:uint = 0; i < 100; i++) {
}
for each (var value:String in items) {
}
for (var propertyName:String in object) {
}
复制代码
Haxe
for (i in 0...100) {
}
for (value in items) {
}
var fields = Reflect.fields (object);
for (propertyName in fields) {
}
复制代码
Switch 循环
AS3
switch (value) {
case 1:
trace ("Equal to 1");
break;
default:
trace ("Not equal to 1");
break;
}
复制代码
Haxe
switch (value) {
case 1:
trace ("Equal to 1");
default:
trace ("Not equal to 1");
}
复制代码
类型推理
AS3
var hi = "Hello World";
// type is Object
// fails to compile in strict mode
复制代码
Haxe
var hi = "Hello World";
// type is String
// even works for code completion
复制代码
类型转换
AS3
var car:Car = vehicle as Car;
var toString:String = String (10);
var toNumber:Number = Number ("10");
var toInteger:int = int (10.1);
复制代码
Haxe
var car:Car = cast vehicle;
// or for a safe cast:
var car = cast (vehicle, Car);
var toString = Std.string (10);
var toNumber = Std.parseFloat ("10");
var toInteger = Std.int (10.1);
复制代码
类型描述
AS3
if (vehicle is Car) {
}
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;
name = getQualifiedClassName (vehicle);
type = Class (getDefinitionByName (name);
复制代码
Haxe
if (Std.is (vehicle, Car)) {
}
type = Type.getClass (vehicle);
name = Type.getClassName (type);
复制代码
判定null
AS3
if (object == null) {
}
if (!object) {
}
复制代码
Haxe
if (object == null) {
}
复制代码
Hash Tables
AS3
var table:Object = new Object ();
table["key"] = 100;
trace (table.hasOwnProperty ("key"));
for (var key:Object in table) {
trace (key + " = " + table[key]);
}
delete table["key"];
复制代码
Haxe
var table = new Map<String, Int> ();
table.set ("key", 100);
trace (table.exists ("key"));
for (key in table.keys ()) {
trace (key + " = " + table.get (key));
}
table.remove ("key");
复制代码
Rest Parameters
AS3
function test (...params):void {
}
test (1, 2, 3);
复制代码
Haxe
function test (params:Array<Dynamic>) {
}
Reflect.makeVarArgs (test) (1, 2, 3);
复制代码
Reflection
AS3
var foo = object["foo"];
bar.apply (this, [ "hi" ]);
复制代码
Haxe
var foo = Reflect.field (object, "foo");
Reflect.callMethod (this, bar, [ "hi" ]);
复制代码
Function Types
AS3
function hello (msg:String):void {
}
var type:Function = hello;
复制代码
Haxe
function hello (msg:String):Void {
}
var type:String->Void = hello;
// can also use Dynamic
复制代码
Getters and Setters
AS3
function get x ():Number {
return _x;
}
function set x (value:Number):void {
_x = value;
}
复制代码
Haxe
public var x (get, set):Float;
function get_x():Float {
return _x;
}
function set_x(value:Float):Float {
return _x = value;
}
复制代码
Read-Only Properties
AS3
function get x ():Float {
return _x;
}
复制代码
Haxe
public var x (default, null):Float;
// null allows private access
// never would restrict all access
复制代码
本文来自:
http://www.badyoo.com/378.html
欢迎光临 守望者--AIR技术交流 (http://www.airmyth.com/)