AS3でのフルスクリーンモード
最小のサンプル。
package {
import flash.display.Sprite;
import flash.display.StageDisplayState;
import flash.events.MouseEvent;
import flash.events.FullScreenEvent;
public class FullScreeeeeen extends Sprite {
public function FullScreeeeeen() {
stage.addEventListener(MouseEvent.CLICK, clickHandler);
stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenHandler);
}
private function clickHandler(event:MouseEvent):void {
if (stage.displayState == StageDisplayState.NORMAL) {
stage.displayState = StageDisplayState.FULL_SCREEN;
}
}
private function fullScreenHandler(event:FullScreenEvent):void {
if (event.fullScreen) {
trace("enter fullScreen mode");
}
else {
trace("leave fullScreen mode");
}
}
}
}
これだけ。あとは addParam("allowFullScreen", true)
(SWFObject書式) すれば使える。
今の Flex2 SDK だったら追加のインストールファイルは何も必要ない模様。
なんか今日は search.cpan.org 重いなー。イライラ
yabai
2月がもう終わる!
コンパイル時間参考
swc使用
(fcsh) mxmlc -benchmark -include-libraries=../flexunit/bin/flexunit.swc main.mxml
fcsh: Assigned 12 as the compile target id
Loading configuration file /home/typester/app/flex/frameworks/flex-config.xml
Initial setup: 62ms
Loaded 9 SWCs: 8485ms
Files: 435 Time: 21804ms
Linking... 815ms
Optimizing... 427ms
SWF Encoding... 862ms
/home/typester/tmp/flexunit/test/main.swf (241615 bytes)
Total time: 32459ms
Peak memory usage: 387 MB (Heap: 358, Non-Heap: 29)
ソースから
(fcsh) mxmlc -benchmark -source-path=../flexunit/src/trunk/src/actionscript3 main.mxml
fcsh: Assigned 13 as the compile target id
Loading configuration file /home/typester/app/flex/frameworks/flex-config.xml
Initial setup: 66ms
Loaded 8 SWCs: 3169ms
Files: 433 Time: 57148ms
Linking... 25ms
Optimizing... 394ms
SWF Encoding... 297ms
/home/typester/tmp/flexunit/test/main.swf (239897 bytes)
Total time: 61109ms
Peak memory usage: 399 MB (Heap: 371, Non-Heap: 28)
長すぎる。VMだからメモリ足りないからかもしんない。
AS3のテスト
これ試してみた。
Flex Builder 2 がいるとか書いてあるけど、Flex2 SDK でも使えた。
この記事の例のをコンパイルするには
mxmlc -include-libraries=../flexunit/bin/flexunit.swc main.mxml
こんな感じでいいよう。
-include-libraries
の代わりに -source-path
で as ライブラリの位置指定してもいけるけどコンパイル時間がすげー長くなってしまう。
てか、swc 使っても長いんですけど。fcshつかった二回目以降のコンパイルでもおっせぇのでFlexって大変だなぁとか思ったり。
このテストアプリはFlexで作られているけど、テストは普通のAS3クラスに対して行えるので、まぁ一応使えるかなぁと言う印象。
作ってるアプリディレクトリに test.mxml、Test.as を置く感じになるかなぁ。
めんどいなー。誰かがasだけでテストクラス書いてくれるのを待とう。
XMLSocket - POE
AS3からSocketクラスができたけど、それでも依然としてテキストベースの通信ではXMLSocketのほうが楽なのでAS3ベースでもXMLSocket使ってる。
でも通信の区切りがNULL文字だったりとか、癖があるんで、なんこかPoCoサーバー作ってみて、うまくラッピングするモジュール作るべきだなと考えてる。
たとえば以下のような。
POE::Filter::XMLSocket
NULL文字で区切る入出力フィルタ。
POE::Component::Server::TCP::XMLSocket
AS3からサポートされているTCP通信でのcrossdomain.xmlの返答機能を組み込んだComponent::Server::TCPのサブクラス。
などなど。
今の仕事が終わったらちゃんと考えよう。
Jemplate多言語化用ラッパ
つくった。
http://svn.unknownplace.org/public/scripts/jemplate-maketext.pl
Jemplate のテンプレート内に {{Hello}}
とか _("Hello")
とかかいておいて jemplate -c
のかわりに
jemplate-maketext.pl --path lib/MyApp/I18N --locale ja templates/jemplates/*.tt > jemplate_ja.js
みたいにすると {{Hello}}
とかの部分がその言語になったファイルができるというやつ。jemplate -c の簡単なラッパ。
--path には .po や .mo のあるディレクトリを指定する。
"Hello %1!"
みたいなのには対応できないんだけど、まぁとりあえずこれで。
今日のワンライナー
for lang in "ja" "en"; do tpage --define lang=$lang root/css/style_template.css > root/css/style_${lang}.css; done