まだ役に立つかもしれない図書館

少し前に、私は自分のライブラリを共有することを考えました 。 そして最後に、すべてをトリムしてGitHubに配置しました。







RObject



誰もがフラッシュにdescribeType関数があることを知っています。 その主な欠点は、作業の速度です。Androidのアプリケーションでは、この速度は明らかに十分ではなく、小さなアメニティを奪いたくないので、ドキュメント化されていないavmplus.describeTypeJSONに目を向け始めました。 RObjectが修正するのはこの欠点です。これにより、クラス、インターフェイス、およびオブジェクトを同等に操作できます。

var flags:int = R.VARIABLES | R.METADATA | R.TRAITS; var descriptor:Object = R.describe(test, flags);
      
      





Jsonmapper



ここではすべてが単純です-型付きJSONパーサー。



マッピング:

  public class JsonVO { [Serialized(required="true")] public var id:String = null; [Serialized(required="false")] public var name:String = null; [Serialized] [ArrayElementType("converter.rest.vo.JsonVO")] public var properties:Array; [Serialized] [ArrayElementType("String")] public var vector:Vector.<String> = Vector.<String>(["test", "test"]); [Serialized] [ArrayElementType("converter.rest.vo.JsonVO")] public var nested:Array = []; [Serialized] [ArrayElementType("int")] public var aCollection:ArrayCollection = new ArrayCollection([1, 2, 3]); } var mapper:JsonMapper = new JsonMapper(); mapper.registerClass(JsonVO);
      
      





解析:

 var result:JsonVO = new JsonDecoder(mapper).decode(message, JsonVO);
      
      





As3query



Airには便利な機能が組み込まれていますが、通常はそうなるので、もっと欲しいと思いました。 もちろんFlex ORMがありましたが、タブレットでは彼は死にかけていました。さらに、私はPromises / A +を使用したいと考えました。 自動スキーマ作成をサポートします。



マッピング:

  [Table(name="test")] [Index(name="test_index_1", columns="unsigned,bool")] [Index(name="test_index_2", columns="str", unique="true")] public dynamic class TestEntity { [Column(primaryKey, nullable="false")] public var id:int; [Column(default="1")] public var unsigned:uint; [Column(unique="true")] public var date:Date; [Column] public var xml:XML; [Column] public var str:String; [Column(foreignKey="table(id)", options="deferred")] public var fk_table:String; } var entityManager:EntityMapper = new EntityMapper(); entityManager.registerEntity(TestEntity);
      
      







自動テーブル作成、セッション:

  var connection:SQLConnection = new SQLConnection(); connection.open(file, SQLMode.CREATE); try { new CreateTables(connection, [TestEntity], mapper).call(); } finally { if(connection.connected) { connection.close(); } } var session:Session = new Session(mapper); session.open(file.nativePath, SQLMode.UPDATE).then(function ():void{ trace('ok') });
      
      







リクエスト、トランザクション、基準:

  //criteria session.criteria(TestEntity).by(Order.asc(TestEntity.ATTR_ID)).list.then(function (operation:ISQLOperation):void{ trace(operation.result); }); session.criteria(TestEntity).when(Restrictions.Eq(TestEntity.ATTR_ID, 1)).unique.then(function (operation:ISQLOperation):void{ trace(operation.result); }); session.criteria(TestEntity).when(Restrictions.Eq(TestEntity.ATTR_ID, 1)).count.then(function (count:int):void{ trace(count); }); //create or update session.save(testCriteriaEntity1).then(function ():void{ trace('ok') }); //remove session.remove(testCriteriaEntity1).then(function ():void{ trace('ok') }); //transactions var transaction:ITransaction = session.transaction; transaction.insert(testCriteriaEntity1); transaction.remove(testCriteriaEntity1); transaction.run.then(function (operation:ISQLOperation):void{ trace('ok'); }); //raw query var query:IQuery = session.query; query.text = "update test set str=:str where str=:id"; query.parameters[":id"] = "inserted2"; query.parameters[":str"] = "inserted3"; query.run.then(function (operation:ISQLOperation):void{ trace('ok'); });
      
      







FlexXBモバイル



再設計されたFlexXB xmlパーサーは、私が知っている最高のパーサーですが、非常に遅いため、数倍高速化することができました。



例:

  [Bindable] [XmlClass(alias="DynamicProperty")] public class DynamicProperty { [XmlAttribute(alias="value")] public var value:int; [XmlElement(alias="property")] public var property:Property; [XmlAttribute(alias="enabled")] public var enabled:Boolean; }
      
      







air-hid-usb



Adobe AirのHIDデバイスを操作するための古い拡張プロジェクトであるGitHubに切り替えました。

  var manager:IHIDManager = HIDFactory.getHIDManager(); var deviceInfos:Array = manager.getDeviceList(0x8001, 0xA00F);//0x8001, 0xA00F var wmouse:HidDeviceInfo; for each (var hidDeviceInfo:HidDeviceInfo in deviceInfos) { if (hidDeviceInfo.interface_number == 1) { wmouse = hidDeviceInfo; break; } } if (wmouse) { log.info("getDeviceByPath {0}", wmouse); var device:IHIDDevice = manager.getDeviceByPath(wmouse.path); if (device.open()) { log.info("getManufacturerString: {0}", device.getManufacturerString()); log.info("getProductString: {0}", device.getProductString()); log.info("getSerialNumberString: {0}", device.getSerialNumberString()); device.close(); } device.dispose(); }
      
      







それだけです、ご清聴ありがとうございました。



All Articles