守望者--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
  1. package com.example.myapplication {

  2. }
复制代码
Haxe
  1. package com.example.myapplication;
复制代码



定义类


AS3
  1. public class MyClass {

  2.    public function MyClass () {


  3.    }

  4. }
复制代码
Haxe
  1. class MyClass {

  2.    public function new () {


  3.    }

  4. }
复制代码



for 循环


AS3
  1. for (var i:uint = 0; i < 100; i++) {

  2. }

  3. for each (var value:String in items) {

  4. }

  5. for (var propertyName:String in object) {

  6. }
复制代码
Haxe
  1. for (i in 0...100) {

  2. }

  3. for (value in items) {

  4. }

  5. var fields = Reflect.fields (object);
  6. for (propertyName in fields) {

  7. }
复制代码



Switch 循环


AS3
  1. switch (value) {

  2.    case 1:
  3.       trace ("Equal to 1");
  4.       break;

  5.    default:
  6.       trace ("Not equal to 1");
  7.       break;

  8. }
复制代码
Haxe
  1. switch (value) {

  2.    case 1:
  3.       trace ("Equal to 1");

  4.    default:
  5.       trace ("Not equal to 1");

  6. }
复制代码



类型推理


AS3
  1. var hi = "Hello World";

  2. // type is Object
  3. // fails to compile in strict mode
复制代码
Haxe
  1. var hi = "Hello World";

  2. // type is String
  3. // even works for code completion
复制代码



类型转换


AS3
  1. var car:Car = vehicle as Car;

  2. var toString:String = String (10);
  3. var toNumber:Number = Number ("10");
  4. var toInteger:int = int (10.1);
复制代码
Haxe
  1. var car:Car = cast vehicle;

  2. // or for a safe cast:

  3. var car = cast (vehicle, Car);

  4. var toString = Std.string (10);
  5. var toNumber = Std.parseFloat ("10");
  6. var toInteger = Std.int (10.1);
复制代码



类型描述


AS3
  1. if (vehicle is Car) {

  2. }

  3. import flash.utils.getDefinitionByName;
  4. import flash.utils.getQualifiedClassName;

  5. name = getQualifiedClassName (vehicle);
  6. type = Class (getDefinitionByName (name);
复制代码
Haxe
  1. if (Std.is (vehicle, Car)) {

  2. }

  3. type = Type.getClass (vehicle);
  4. name = Type.getClassName (type);
复制代码



判定null


AS3
  1. if (object == null) {

  2. }

  3. if (!object) {

  4. }
复制代码
Haxe
  1. if (object == null) {

  2. }
复制代码



Hash Tables


AS3
  1. var table:Object = new Object ();
  2. table["key"] = 100;

  3. trace (table.hasOwnProperty ("key"));

  4. for (var key:Object in table) {

  5.    trace (key + " = " + table[key]);

  6. }

  7. delete table["key"];
复制代码
Haxe
  1. var table = new Map<String, Int> ();
  2. table.set ("key", 100);

  3. trace (table.exists ("key"));

  4. for (key in table.keys ()) {

  5. trace (key + " = " + table.get (key));

  6. }

  7. table.remove ("key");
复制代码



Rest Parameters


AS3
  1. function test (...params):void {

  2. }

  3. test (1, 2, 3);
复制代码
Haxe
  1. function test (params:Array<Dynamic>) {

  2. }

  3. Reflect.makeVarArgs (test) (1, 2, 3);
复制代码



Reflection


AS3
  1. var foo = object["foo"];

  2. bar.apply (this, [ "hi" ]);
复制代码
Haxe
  1. var foo = Reflect.field (object, "foo");

  2. Reflect.callMethod (this, bar, [ "hi" ]);
复制代码



Function Types


AS3
  1. function hello (msg:String):void {

  2. }

  3. var type:Function = hello;
复制代码
Haxe
  1. function hello (msg:String):Void {

  2. }

  3. var type:String->Void = hello;

  4. // can also use Dynamic
复制代码



Getters and Setters


AS3
  1. function get x ():Number {

  2.    return _x;

  3. }

  4. function set x (value:Number):void {

  5.    _x = value;

  6. }
复制代码
Haxe
  1. public var x (get, set):Float;

  2. function get_x():Float {

  3.    return _x;

  4. }

  5. function set_x(value:Float):Float {

  6.    return _x = value;

  7. }
复制代码



Read-Only Properties


AS3
  1. function get x ():Float {

  2.    return _x;

  3. }
复制代码
Haxe
  1. public var x (default, null):Float;

  2. // null allows private access
  3. // never would restrict all access
复制代码


本文来自:http://www.badyoo.com/378.html









欢迎光临 守望者--AIR技术交流 (http://www.airmyth.com/)