progressionのページタイトルについて。
ブラウザの上に表示される、アレですね。
SceneObjectのプロパティtitleに設定することでブラウザに反映されるとあります。
だがしかし読み込み直後はこれが表示されない。
なんか別のタイトルが表示されてます。
なんだろう、index.asとかになんか書いてあるのか?といろいろ調べまわり・・・
グーグル先生に聞いてみても質問が悪いのか教えてくれず・・・
Twitterでえらい人の一言で解決しました。
index.htmlのtitle属性の値でした。。。
最近SWFファイルしか作ってないから何だか根本的にダメダメだ。。。
Tags: AS3, Flash, progression
functionから抜ける
function init() {
var a:Number=100;
trace(a);//出力される:100
if (a==100) {
return;
}
trace(a);//出力されない
}
init();
コンポーネントのラジオボタンで気づいたこと。
まずステージに3個以上ラジオボタンを配置する。
TABキーでラジオボタンにフォーカスを当てることができる。
このときカーソルキーでラジオボタンのフォーカスを変えることができる。
(デフォルトではラジオボタンのプロパティのgroupNameはRadioButtonGroupになっているため)
カーソルの右を押して、フォーカスがあたる順番はステージに配置した順番になる。
ここまではCS3もCS4も一緒。
ではラジオボタンにインスタンス名とかラベル名をつけたらどうだろう。
カーソルの順番が変わるのだ。
具体的にどう設定したらどう変わるかというルールがよくわからんが、インスタンス名とかラベル名をつけると順番が変わった。
CS4はではインスタンス名とかラベル名をつけてもかわらなかったようだ。
これはこれでスッキリしていていい。
だけど、同じflaファイルでもCS3でパブリッシュしたときとCS4でパブリッシュしたときで順番が変わる可能性があるってことでした。
(ずばりそのような状況に陥ったでした・・・)
これは意外と気づかないから危険だと思う。
ちなみにWin環境のみで検証。(Mac無いので)
Macではまた違ったことが起きそうな気もしないでもないです。
設定の仕方はこんな感じ。
document.cookie = "expires=○○○;△△△=□□□";
○○○が有効期限
これを設定しないと、ブラウザを閉じた時点で削除される。
△△△と□□□は任意の値を設定可能
Tags: js
いつも、どっちがどっちかわからなくなるのでメモ
まずAS3
ステージ上に、
インスタンス名:切り抜かれるMC(青い長方形)
インスタンス名:切り抜きの型となるMC(赤い三角)
二つのインスタンスを重ねた状態で、
切り抜かれるMC.mask = 切り抜きの型となるMC;
これで、青い三角ができあがる、と。
AS2だと
切り抜かれるMC.setMask(切り抜きの型となるMC);
切り抜かれるMCが常に最初と覚えておくことにしよう。
あとインスタンス名とかって全角の日本語でもOKなんですよねぇ。
AdobeMAXで城戸さんのセッションでやっててこういう使い方もありかと思いました。
Tags: AS3, Flash
ユーザーのPCに変数情報等を保存できる。
Flash版のCokkieみたいなものらしい。
(そもそもCookieをよくわかっていないが)
何ができるかといったら、swfファイル間で同じ変数情報を共有可能。
使い方、owner.flaをつくりのそのフレームアクションに、
// 共有オブジェクトを作成する
var so:SharedObject =SharedObject.getLocal("MyData","/");
//containerBox0という箱を定義して値を設定
so.data.containerBox0="test0";
//ローカルにファイル(MyData.sol)を保存する。
var str = so.flush();
つづいて、user.flaを作ってそのフレームアクションに、
var so:SharedObject=null;
so=SharedObject.getLocal("MyData","/");
var tf:TextField = new TextField();
addChild(tf);
tf.text=String(so.data.containerBox0);
owner.flaをパブリッシュすると、MyData.solが保存される。
保存場所は上記スクリプトの場合は、
C:\Documents and Settings\(ユーザーID)\Application Data\Macromedia\Flash Player\#SharedObjects\NFWUQ76F\(ドメイン名)
もしくは
C:\Documents and Settings\(ユーザーID)\Application Data\Macromedia\Flash Player\(ドメイン名)
といった感じになるようだ。
参照サイト
ちなみにサーバーにあげないでローカルで試してるときは、(ドメイン名)はlocalhostになる。
ファイルができたことを確認して、user.flaをパブリッシュすると、text0が表示される。
ここで少し注意が必要でした。
owner→userの順でパブリッシュすると期待通りの動きですが、
user→owner→userの順でパブリッシュすると、MyData.solが削除されてしまいます。
理由はちゃんと理解してませんが。。。
多分先に作ったSharedObjectインスタンスに情報が入ってないから、なんちゃらかんちゃらな感じ。
なので情報が入ってるか入ってないかを判定して、入ってなかったら、その場でSharedObjectインスタンスを破棄するような処理が必要。
というわけでuser.flaを以下のように変更するとOKでした。
var so:SharedObject=null;
so=SharedObject.getLocal("MyData","/");
if (so.data.containerBox0==null) {
so.clear();
so=null;
} else {
var tf:TextField = new TextField();
addChild(tf);
tf.text=String(so.data.containerBox0);
}
ファイル保存の際はエラー処理書いておかないとまずいですね。。。
Tags: AS3, Flash, SharedObject
例えば、フレームアクションで、
var sp:Sprite = new Sprite();
this.addChild(sp);
removeChild(sp);
sp = null;
スプライトを作って、
メインのタイムラインに追加して、
メインのタイムラインから削除して、
スプライトの参照も削除
当然これで、spはGC対象となる。
でもこの場合ではsp=nullは特に要らないみたい。
var sp:Sprite = new Sprite();
this.addChild(sp);
removeChild(sp);
この場合は、これでもspはGCの対象となるようす。
removeChild()した時点で、GC対象となっている。
removeChildについてのドキュメントより、
DisplayObjectContainer インスタンスの子リストから指定の child DisplayObject インスタンスを削除します。
削除された子の parent プロパティは null に設定されます。その子に対する参照が存在しない場合、そのオブジェクトはガベージコレクションによって収集されます。
参考サイト:
FlashPlayer9のガベージコレクタのメモリ解放の考察
DisplayObjectじゃない(addChildしてない)変数をGC対象とするときは○○=nullを使って参照を切ればいいってことなのかな。
Tags: AS3, Flash, GC
意外とはまってしまったのでメモ。
この方のエントリーで99%解決してるのですが。。。
[WordPress]SyntaxHighlighterのActionScript対応
SyntaxHighlighterというプラグインが世の中にたくさんありすぎてはまりました。
上の方のエントリーで扱われているのは、
wordpress.orgのやつです。
これを使いましょう。
他には、
こんなのや、こんなのもあります。
この二つだと上の方が説明されてるAS3への拡張手順が適用できません。
(syntaxhighlighter.phpというファイルが存在しない)
PHPがわかる人は拡張できると思いますが、私には無理でした・・・
「FlashとDIYで作る、自作マルチタッチディスプレイ」
浦野大輔さん、名村卓さん、切通伸人さん
パネル自体は4万円程度で出来るらしい。
タッチパネル原理はFTIRという技術。
簡単に書くと
1.アクリル板の側面から赤外線を照射
2.アクリル板内を赤外線が全反射状態
3.アクリル板を触れると指で触れた部分が光が散乱
4.その状態を赤外線カメラで計測。
5.カメラからのビデオアウトをPCに取り込み
6.tbetaというソフトで解析
7.TUIOというプロトコルでFlashにデータ送信
8.Flashで処理して画面更新
・アクリル板は専門店で2万円くらい。
→側面は鏡面仕上げ的な加工
・赤外線カメラにはWEBカメラを改造してしよう。
→通常WEBカメラは赤外線カットフィルタがあるのでそれを除去。
→さらに赤外線だけを拾うように赤外線フィルターを装着
・TUIOは自作
→これはオープンサウンドコントロール(OSC)プロトコルがベース
→フラッシュ用OSCのは既にある→FLOSC(FlashOSC)
→でもAS2用なので、バイナリソケット通信ができない(XMLソケットのみ)
→パフォーマンスが落ちる。
→よってAS3用のものを新たに開発(JAVA)
AS3で、今回のタッチパネル用に用意したクラスは3つ
・TouchManagerクラス→基本となるクラス
・TouchEventクラス→カスタムイベントクラス
・Fingerクラス→カスタムイベントが持つもの?
デバッグについて、
毎回実機でやるのは準備が大変なのでPCだけでもできるように。
1.マウスでの操作も有効化するできるようにした。
→この場合、シングルタッチのみしか使えない。
2.tbetaでは動画ファイルを再生可能なので、デバッグ操作となる画像を用意して再生
→動画を用意するのが大変
3.TUIOsimulatorという専用アプリを仕様
→マウス操作だが、特定の操作によって擬似マルチタッチも可能。
課題
・FILRの制度を上げる
→1mmのシリコンを塗ると反射率の関係?で制度があがるらしい。
・台がぐらぐらする。
→もうすこし安定度の高い台を用意する。
次回のOOP勉強会は4月予定。
IAMASの卒業生のサンプル紹介的な内容になる予定。
Tags: Event, memo
教えてもらったこと。
index.asにて
MovieClip(stage.getChildAt(0))
でpreloader本体を指定可能。
例)
preloader.flaに、hoge1_mcとかhoge2_mcとか置いてあった場合。
index.asからhoge1_mcにアクセスするには、
MovieClip(stage.getChildAt(0)).hoge1_mc
でOK
Tags: AS3, Flash, progression