[AIR]基本メモ
AIR基本的メモ
Adobe AIR HTML 開発者用リファレンスガイド
http://help.adobe.com/ja_JP/AIR/1.1/jslr/index.html
アプリケーションを終了する
NativeApplication.nativeApplication.exit();
ウィンドウが全て閉じられたら自動でアプリケーションを終了する
NativeApplication.nativeApplication.autoExit=true;
ウィンドウをドラッグする
var me:NativeWindow=stage.nativeWindow; me.startMove();
新しいウィンドウを作成する
var news_win:NativeWindow=get_newwindow("none", true, false, false, false); function get_newwindow(str:String, trans:Boolean=true, resize:Boolean=false, max:Boolean=false, min:Boolean=false):NativeWindow{ return new NativeWindow(get_winoptions(str, (str=="standard")?false:trans, resize, max, min)); } function get_winoptions(str:String, trans:Boolean=true, resize:Boolean=false, max:Boolean=false, min:Boolean=false):NativeWindowInitOptions{ var options:NativeWindowInitOptions=new NativeWindowInitOptions; options.systemChrome=str; options.transparent=trans; options.resizable=resize; options.maximizable=max; options.minimizable=min; return options; }
ファイルのドロップを受け付ける
bg_mc.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, when_drag_enter); bg_mc.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, when_drop_item); function when_drag_enter(e:NativeDragEvent=null):void{ NativeDragManager.acceptDragDrop(bg_mc); } function when_drop_item(e:NativeDragEvent=null):void{ var str=e.clipboard.formats; var filelist:Array=e.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array; //filelistにドロップされたFileの配列が格納される }
ファイルを保存するとき//文字列の場合
var docsDir:File; if(save_dir!=""){ try{ docsDir=new File(save_dir); }catch(e){ docsDir=File.desktopDirectory; } }else{ docsDir=File.desktopDirectory; } try{ docsDir.browseForSave("(・∀・)ノ< 保存するよ!"); docsDir.addEventListener(Event.SELECT, execute_saveData); }catch(error){ trace("Failed:", "(´・ω・`)失敗したです"); } function execute_saveData(e):void{ //文字列の場合 var str:String="保存する文字列"; var stream:FileStream=new FileStream(); stream.open(newFile, FileMode.WRITE); stream.writeUTFBytes(str); stream.close(); }
アップデートするとき
var air_filename:String="AIRファイル名"; var latest_version:String="新しいAIRアプリのバージョン";//今のが1.0なら1.1とか var update_filepath:String="AIRファイルパス"; var urlReq:URLRequest = new URLRequest(update_filepath); fileData= new ByteArray(); urlStream.addEventListener(Event.COMPLETE, loaded); urlStream.load(urlReq); function loaded(event:Event):void{ urlStream.readBytes(fileData, 0, urlStream.bytesAvailable); writeAirFile(); } function writeAirFile():void{ var file:File=File.desktopDirectory.resolvePath(air_filename); update_airfile=file; var fileStream:FileStream = new FileStream(); fileStream.addEventListener(Event.CLOSE, fileClosed); fileStream.openAsync(file, FileMode.WRITE); fileStream.writeBytes(fileData, 0, fileData.length); fileStream.close(); } function fileClosed(event:Event):void{ var updater:Updater=new Updater(); updater.update(update_airfile, latest_version); }
[アルファマスク]
アルファマスクの新発見
アルファマスクをかけるとき、ブレンドを使ってマスクを「消去」、その親mcを「レイヤー」にしてやっていましたが
この方法だと親mcにマスクをかけたり、親mcを対象にbitmap.drawするとマスクが見えてしまうことになります。
そこで調べていたらもの凄く簡単な解決方法があったのでメモ。
target_mc:マスクをかけられるmc mask_mc:マスクmc target_mc.cacheAsBitmap=true; mask_mc.cacheAsBitmap=true; target_mc.mask=mask_mc;
いやー灯台もと暗しでした。
[Papervision3D]BitmapMaterialで一瞬カッ!てなる→解明
BitmapMaterial.asの135行目あたりのgraphics.beginBtimapFillメソッドの
手前に下記のコードを追加すれば回避できます。
テクスチャがおかしくなるときはlimitの値を大きくしてください。
これを使ってcharaがスムーズに動くようになりました。
chara(下記コードを適応したもの)
chara(下記コードを適応していないもの)
var limit:int=18000; if(Math.abs(_localMatrix.tx)>limit)_localMatrix.tx=limit*((_localMatrix.tx==0)?0:((_localMatrix.tx>0)?1:-1)); if(Math.abs(_localMatrix.ty)>limit)_localMatrix.ty=limit*((_localMatrix.ty==0)?0:((_localMatrix.ty>0)?1:-1));