SharedObjectは、手っ取り早く保存ができてよかったんだけど、Appleのレギュレーションの変更により、ちょっと面倒になった。
iOS データ保管ガイドラインの変更と Adobe AIR への影響
ここに書いてあることをやれば済む話ではあるけど、まだレギュレーションが変わることも考えられる。
とりあえず、FileStreamを使おうと思ったのだけど、「FlashCS5.5で学ぶiPhone実践プログラミング」という本には、FileStreamクラスは、完全な動作保証はされていないとのこと。。。
しょうがないので、残る選択肢のSQLiteで保存。
MySQLやってるんで、SQL自体には抵抗ないけど、フェッチのかけかたとか、独特ですね。
まぁ、これで問題ないでしょう。
2012年1月19日木曜日
2011年11月7日月曜日
Tweenライブラリ
やりたいことは、
・実行開始時、ゆっくり動いて、徐々に速く。
・終了時は、徐々に遅くから目的地で停止
まぁ、そんな感じなので、n字曲線知っていれば、できちゃうよね?
でも、今回は、Tweenライブラリを使ってみた。
Tweenライブラリは、多くありますね。
今回は、このへんで。
import fl.transitions.*;
import fl.motion.easing.*;
・実行開始時、ゆっくり動いて、徐々に速く。
・終了時は、徐々に遅くから目的地で停止
まぁ、そんな感じなので、n字曲線知っていれば、できちゃうよね?
でも、今回は、Tweenライブラリを使ってみた。
Tweenライブラリは、多くありますね。
今回は、このへんで。
import fl.transitions.*;
import fl.motion.easing.*;
いとも簡単にできました。
2011年10月29日土曜日
ドラッグ&ドロップの処理
今年、Win7x64にしたのだけど、いつもは入れる、VisualStudio2010を今は入れてません。
今日まで、別に困ることもなく…(笑)
でもきのう、VCで作った自作ツールを動かそうとしたら、どうやらリリースモードでのビルドしてなくて、dllを要求された。
とりあえず、dllを入れればこのツールは動くのだけど、またVisualStudioを入れるかどうか悩む。
このツール、まぁたいしたことやっていないので、VCはやめて、AIRアプリにすることにした。
たぶん、VisualStudioインストールする時間より早く、このツールができたよ(笑)
あぁ、AIRアプリ簡単。
ちょっと覚書
flaにコンポーネントUILoaderを入れておいて、、、
このへんをインポート
import flash.display.*;
import fl.containers.UILoader;
import flash.desktop.ClipboardFormats;
import flash.events.NativeDragEvent;
import flash.desktop.NativeDragManager;
import flash.filesystem.*;
import flash.desktop.Clipboard;
import flash.net.URLRequest;
import flash.events.Event;
import flash.net.*;
import flash.filesystem.FileStream;
import flash.errors.IOError;
あとは、
movieclip.addEventListener( NativeDragEvent.NATIVE_DRAG_ENTER, _enter);
movieclip.addEventListener( NativeDragEvent.NATIVE_DRAG_DROP, _drop );
で、イベントを登録しておいて、
private function _enter(event:NativeDragEvent):void
{
NativeDragManager.acceptDragDrop(movieclip);
}
private function _drop(event:NativeDragEvent):void
{
var files:Array = event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
for(var i:int =0; i < files.length; i++ ) {
trace(files[i].url);
}
}
まぁ、これで、どのファイルがドロップされたかがわかるので、あとは通常通りの処理。
ぼくは、NativeDragManager.acceptDragDropを入れるの忘れて、なかなかdropされなかったです(笑)
EventDispatcher
Flashには、無限ループ15秒(設定で60秒までいくらしい)ルールがある。
通常は、いつもタイマー割り込み発生で処理をするのですが、ちょっと今回は、割り込みのない状態で、BGMの再生ような感じで、無限にまわしたかった。
なので、何気に初のカスタムイベント作成。
EventDispatcherの継承クラス作成して、終了したら、Completeイベント出して、イベント拾ったら、また繰り返し。
できたのがこんな感じ。
package {
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.utils.*;
public class Nantoka extends EventDispatcher {
public function Play()
{
(処理をここ)
var event:Event = new Event(Event.COMPLETE);
dispatchEvent(event);
}
}
}
これで、Event.COMPLETEとして拾えます。
2011年10月14日金曜日
policy-file-request
Flashとサーバー間で、ソケット通信中。。。
ローカルにJavaサーバー立てて、ある程度できたので、本番サーバーに入れたら、ソケット接続後に、
Flash Player 9,0,115,0の
ローカルにJavaサーバー立てて、ある程度できたので、本番サーバーに入れたら、ソケット接続後に、
policy-file-request
という文字列が送信されてる、、、。
あれ?ソケットポリシーファイルも送ってあるのになんでだ?と思ったら、サーバー側から、crossdomain.xmlを返さないといけないらしい。。。
Flash Player 9,0,115,0のに対処する方法
JavaScriptとFlashでSocket通信
さて、どうなる?2011年6月25日土曜日
escapeMultiByte
ちょっと、ActionScript3.0ではまった。
日本語をescape()して、某ガジェット内なので、ExternalInterfaceで、JavaScriptに渡してということをしてたら、JavaScriptでエラー。
ちょっとぐぐって、ActionScript3.0のURLエンコードは、escape()ではなくて、escapeMultiByte()でとのことなので、変更したらうまくいった。
importは、flash.utils.escapeMultiByte;
サーバーサイドのPHPでもちゃんと受信できた。
日本語をescape()して、某ガジェット内なので、ExternalInterfaceで、JavaScriptに渡してということをしてたら、JavaScriptでエラー。
ちょっとぐぐって、ActionScript3.0のURLエンコードは、escape()ではなくて、escapeMultiByte()でとのことなので、変更したらうまくいった。
importは、flash.utils.escapeMultiByte;
サーバーサイドのPHPでもちゃんと受信できた。
2011年2月10日木曜日
ActionScript の条件付きコンパイル
iPhone用とAndroid用で、VisualStudioみたいに、条件付きコンパイルができないものかと思っていたら、設定するところがありました。
さっそく使ってみる。
Flash側で、
CONFIG::定数名
を設定して、
ActionScript側で
config namespace MY_CONFIG;
とやっておいてから、CONFIG::MY_CONFIGで取得完了。
これで、クロスデバイス完了!
ネイティブコード書くより、はるかにらくちん。
さっそく使ってみる。
Flash側で、
CONFIG::定数名
を設定して、
ActionScript側で
config namespace MY_CONFIG;
とやっておいてから、CONFIG::MY_CONFIGで取得完了。
これで、クロスデバイス完了!
ネイティブコード書くより、はるかにらくちん。
登録:
投稿 (Atom)