カテゴリー
未分類

com.karatesystem.Root

AS3での参照が面倒なので一つクラスを作ってみた。
ついでにStageもSprite無しで参照できるように・・・・。
用途としては複数のSWFで構成されるプロジェクトで各子供のSWFでも単独動作させつつを行いたい場合に使用。なんつーかネーミングがイマイチ。
(どっかのフレームワークに標準的に実装されていそうな気もするけど・・・)

package com.karatesystem {
import .display.MovieClip;
import flash.display.Stage;
public  Root
{
public static var ROOT:MovieClip;
public static var STG:Stage;
public static function isRoot(_r)
{
var _root = _r.root.parent.loaderInfo.url;
var _mine = _r.loaderInfo.url;
var _flg = _root == _mine
if (_flg)
{
ROOT = _r as MovieClip;
STG = ROOT.stage;
}
return _flg;
}
public static function get root():MovieClip
{
return ROOT;
}
public static function get stage():Stage
{
return STG;
}
public static function get rootUrl()
{
return ROOT.loaderInfo.url;
}
}
}

Usage
基本的にメインムラインに記述する形。
Stage周りに関してはこの中で拡張できるのかもしれないけど、まだ全貌が良くわからないので単純に参照のみ。(Stage系はscaleモード、alignモードに関連しての算出とか諸々あるだろうから、別に作った方が良いかな?)

import com.karatesystem.Root;
if (Root.isRoot(this)) {
trace("I m mother");
} else {
trace("I m Child");
}
trace(Root.root);
trace(Root.stage);
Root.root.i1.x=300;
trace(Root.stage.stageWidth);

おかしいところあったら御摘くださいませ。
rootとstageの比較はこちら参考にしてます。サンキウ。
http://blog.graffiti-web.org/archives/2007/09/as3_1.html
余談
上条さんのブログには

Stage も DisplayObject のため root プロパティを持ちますが、これはメインの root を指しています。従って、任意の DisplayObject からは DisplayObject.stage.root のようにして、メインの root を参照することができます。

とあったのでこれを利用してroot同士を比較して検出しようとしたのだけど、上手くいかなかった。
追記:2008/01/06 17:50
キャッシュバ系の制御のために”rootUrl”プロパティを追加してみた。
なんかクラスパスmisc系でパッケージにしたほうがいいかなぁ・・とか思い始めた・・・汗

「com.karatesystem.Root」への10件の返信

御無沙汰してます。
あ、Documentクラスって名前良いですねwうちのもその名前に変更しても良いですか?w
というかそもそも
com.karatesystemというパッケージ名が長すぎる・・・。com.img8に変えようかしら・・・w

>あ、Documentクラスって名前良いですねwうちのもその名前に変更しても良いですか?w
どうぞ。w
>com.karatesystemというパッケージ名が長すぎる・・・。
わかります。他の人のライブラリ使う時に、謎のドメインだと落ち着かないなあと思ってたので、パッケージ名に使いたいという理由だけでas3s.orgというドメインとりました。w

>どうぞ。w
アリガトゴザイマスー。
>パッケージ名に使いたいという理由だけでas3s.orgというドメインとりました。w
そりはすごい。
ちなみにas3sの最後の”s”は複数形の”s”ですか?
オデもパッケージ”img8″に全部変えることにしました。

> ちなみにas3sの最後の”s”は複数形の”s”ですか?
as3が取れなかっただけで深い意味はありません。。が、あえて言えば AS3 SOURCES の略ってことにしてます。。

>が、あえて言えば AS3 SOURCES の略ってことにしてます。。
as3.orgって仮押さえされてるんですね・・ここから購入とか出来たとしても高いんでしょうねえ・・・。
ドメインブローカーとかうっとおしいっすね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です