2010年03月02日

テキストファイルのEmbed

memo
public class TextEmbedTest extends Sprite 
{
    [Embed(source="hoge.txt", mimeType="application/octet-stream")]
    private var hoge:Class;

    public function TextEmbedTest()
    {
        var h:String = new hoge();
        trace(h);        
    }
}

2010年02月26日

WCAN mini AS vol.14 デバイス

今回もちょっと参加出来ませんが告知

AIR2.0が出るとFlashとデバイスちょっと盛り上がりそう。
実はコソコソFlashとデバイスの連携やってるので、できたら公開します。

WCAN mini AS Vol.14 やります〜 | News | ra66it blog
http://ra66it.net/blog/news/entry-1305.html

申し込みはこちら

WCAN mini ActionScript Vol.14 を3月6日に行います。今回は、『デバイス』というテーマで、参加者でネタを持ち寄って行いたいと思います。よろしくお願いします。

日時:2010年3月6日(土) 14:00〜
場所:アップルップル会議室(セイノー伏見ビル6F)
定員:15名
会費:無料

今回は申し込みをATNDで行っています。 WCAN mini ActionScript Vol.13 : ATND から参加申込みください。

2010年02月24日

SubversionのProxy設定

めも

~/.subversion/server
[groups]
hoge = svn.example.com
[hoge]
http-proxy-host:proxy.example.local
http-proxy-port:1111

2010年02月14日

AIR2.0 Bata 2 でNativeProcessつかってみる。Flash CS4つかって。

AIR2.0 Bata 2 でNativeProcessを試してみます。Mac環境でやってるので、Windowsの人は適当に読み替えてください。
とりあえずFlash CS4でAIR2.0 Bata 2が利用できるに設定

以下を参考にしました。

Adobe AIR 2 ベータ版公開 - akihiro kamijo
http://blogs.adobe.com/akamijo/archives/2009/11/adobe_air_2_3.html

Bata2は以下よりダウンロード
Adobe Labs - Downloads: Adobe AIR 2 Beta 2
http://labs.adobe.com/downloads/air2.html



環境ができたら、CS4でAIRのプロジェクトを作ります。
今回はpingの結果をtraceで表示させてみます。
pingコマンドはターミナルで実行するとこんな感じになります。
$ ping google.com
PING google.com (66.249.89.147): 56 data bytes
64 bytes from 66.249.89.147: icmp_seq=0 ttl=51 time=10.121 ms
64 bytes from 66.249.89.147: icmp_seq=1 ttl=51 time=11.729 ms
64 bytes from 66.249.89.147: icmp_seq=2 ttl=51 time=11.633 ms
64 bytes from 66.249.89.147: icmp_seq=3 ttl=51 time=9.520 ms


まずはドキュメントクラスをこんな感じで作ります。
package 
{
    import flash.desktop.*;
    import flash.filesystem.*;
    import flash.events.*;
    import flash.display.Sprite;

    // pingをairから実行して、結果をtraceに表示してみる
    public class NPSample extends Sprite 
    {
        private var _process:NativeProcess;

        public function NPSample()
        {
            addEventListener(Event.ADDED_TO_STAGE, _init);
        }

        private function _init(e:Event):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, _init);
            stage.align = "LT";
            stage.scaleMode = "noScale";

            var info = new NativeProcessStartupInfo();
            // 実行するプログラムを指定 相対パスの場合、flaのあるフォルダからのパス
            var file:File = File.applicationDirectory.resolvePath("bin/ping.sh");
            info.executable = file;

            // 実行するプログラムに渡す引数
            var args:Vector.<String> = new Vector.<String>();
            args.push("google.com");
            info.arguments = args;
            
            _process = new NativeProcess();
            _process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, outputHandler);
            _process.addEventListener(ProgressEvent.STANDARD_INPUT_PROGRESS, progressHandler);
            _process.start(info);

        }

        private function outputHandler(e:ProgressEvent):void 
        {
            // pingの結果を受け取る
            trace(_process.standardOutput.readUTFBytes(_process.standardOutput.bytesAvailable));
        }

        private function progressHandler(e:ProgressEvent):void 
        {
            trace(e);
        }
    }
}

flaのあるフォルダにbinというフォルダを作ってping.shというファイルを以下の内容で作成します。Windowsだと.batファイルとかでいけるんかな。.batはダメみたいです。
#!/bin/sh
ping "$@" 
これでコンパイルするとpingの実行結果がtraceに出力されます。
こんな感じ
PING google.com (66.249.89.147): 56 data bytes
64 bytes from 66.249.89.147: icmp_seq=0 ttl=51 time=10.121 ms
64 bytes from 66.249.89.147: icmp_seq=1 ttl=51 time=11.729 ms
64 bytes from 66.249.89.147: icmp_seq=2 ttl=51 time=11.633 ms
NativeProcessを使うとOSの機能を使ったAIRアプリが作れるので、いままでAIRでは実現が難しかったアプリもつくれそうですね。

--
追記 2010.02.16
application.xml を書き換えないと動かないってのを書き忘れてました。
詳しくはこちら。
電卓を起動する AIR アプリを作ってみた | tanablog
http://blog.kaihatsubu.com/archives/001676.html
---

2010年02月10日

表示オブジェクトからgetQualifiedClassName使って、クラス名取得

すでにaddChildしてるオブジェクトのクラス名がわからないけど、もう一個newしたいとき、こんな感じでいける。
var a = getChildAt(0); // 参照があればなんでもおk

//どっちでもおk
//var className:String = describeType(a).@name;
var className:String = getQualifiedClassName(a);

var c:Class = Class(getDefinitionByName(className)); // これはクラスそのものなので、、これをaddChildしてもだめ。
addChild(new c());

2010年02月02日

選択してるライブラリアイテムに対して何かしたいJSFL

メモ
var doc = fl.getDocumentDOM();
var l = doc.library.getSelectedItems();

for (var i in l) {
  fl.trace(l[i]);
}

2010年01月19日

詳解 ActionScript 3.0アニメーション

詳解 ActionScript 3.0アニメーション ―衝突判定・AI・3DからピクセルシェーダまでFlash上級テクニック
51E1NFUnTZL._SS500_.jpg

ActionScript 3.0 アニメーションの著者、Keith Peters氏の新しい本がオライリーから出るみたいです。目次見るだけで鼻血が出そうな内容っぽいのでぜひ手に入れたいですねー。

2010年01月18日

『ブラウザで無料ではじめるActionScript 3.0』刊行記念トークセッション

wonderfl本の出版イベントやりますよー。
でも俺が開始に間に合わないかも疑惑。。。

banner.gif


wonderflがやってきた!!
〜『ブラウザで無料ではじめるActionScript 3.0』刊行記念トークセッション〜

■会場:Apple Store, Ginza (3F シアタールーム)
    東京都中央区銀座3-5-12 サヱグサビル本館
    ※地図 http://www.apple.com/jp/retail/ginza/map/

■日程:2010年1月26日(火)19:00〜20:00(受付開始18:30)
■定員:84席
■参加費:無料

詳しい情報や申し込み方法は以下よりお願いします。

http://www.wgn.co.jp/store/blog/item-812.html

AMFPHP1.9ベータがPHP5.3で動かない時の対応策

AMFPHPってのは、AMF(ActionScript Message Format)をPHPで扱うためのものなんですが、PHP5.3で動かそうとしたら動かなかったのでメモ。

eregi_replaceってのがPHP5.3から非推奨になってるのが原因とのこと。
なので amfphp/core/shared/util/MethodTable.phpの505行目の

$comment = eregi_replace("\n[ \t]+", "\n", trim($comment));
$comment = str_replace("\n", "\\n", trim($comment));
$comment = eregi_replace("[\t ]+", " ", trim($comment));

ってのを
$comment = preg_replace("`\n[ \t]+`U", "\n", trim($comment));
$comment = str_replace("\n", "\\n", trim($comment));
$comment = preg_replace("`[\t ]+`U", " ",trim($comment));
と変更すると動きました。

参考
もぐめぽろぐ PHP5.3.0でAMFPHPを実行できない
http://mogmet.blog20.fc2.com/blog-entry-21.html


それとは別にdateがエラーを出してたので、
date_default_timezone_set('Asia/Tokyo');
ってのをgateway.phpに追加してます。
これに関しては今のところよく調べてないです。


2010年01月04日

2010

もう5日ですが、とりあえず2010年、初ブログエントリー。

昨年は本を書かせてもらったり、ディレクター的な仕事をさせてもらったり、iPhoneのアプリ作ってみたりと新しいことをいろいろ経験できました。

今年はゲーム的な物に関わることが増えそうなので、なにか面白い物が作れるようにがんばってみます。

ことしもがんばろー

書いたよ!