as3 Archive
[AS3] rootやparentの参照
- 2009-10-15 (木)
- as3
AS2の頃は、_root.hoge();とか、_parent.hoge();といった具合に、
割と簡単な記述で参照できたのですが、AS3からはだいぶ変わってた。
これを知らないばかりに、単純なところでエライ苦労をしたりする。
// ルートのタイムラインのフレームアクション
function myTest():void {
trace(”test”);
}
// myTestを参照する例1
MovieClip(root).myTest();
// myTestを参照する例2
Object(root).myTest();
// myTestを参照する例3
var myRootObj:MovieClip = root as MovieClip;
myRootObj.myTest();
// myTestを参照する例4
var myRootObj:Object = root as Object;
myRootObj.myTest();
// myTestを参照する例5
var myRootObj:MovieClip = MovieClip(root);
myRootObj.myTest();
// あるいは
var myRootObj:Object = MovieClip(root);
myRootObj.myTest();
// myTestを参照する例6
var myRootObj:Object = Object(root);
myRootObj.myTest();
/* ************************************
※AS2.0の_rootは、AS3.0でrootになりました。
rootは、DisplayObjectクラスのプロパティです。
※parentも同様です。
var myRootObj:Object = Object(this.parent);
myRootObj.myTest();
あるいは、
var myRootObj:Object = this.parent;
myRootObj.myTest();
孫(子の子)からのときは
var myRootObj:Object = this.parent.parent;
myRootObj.myTest();
※thisはスクリプトが書かれているインスタンスを指します。
************************************ */
これで、もう、つまずくことはありません!(うそ
引用元はこちらです。
rootやparentの参照(as3) « SPHERE BLOG.
- Comments: 0
- Trackbacks: 0
sdl.更新:テキストを1文字ずつランダム表示
- 2009-06-30 (火)
- as3 | what's new
ポートフォリオ部分のテキストを、1文字ずつランダム表示するようにしました。
参考サイト:AS3版ランダムテキスト
上記サイトのソースを参考にさせていただき、
尚且つ、TextFormatの適用と、
改行があった場合は分割して、行の頭から表示する仕組みを追加しました。
- Comments: 0
- Trackbacks: 0
ソースコードをハイライト表示 [SyntaxHighlighter]
何気に、as3やprogression関係で検索してご覧いただいている方が多いので、
ちゃんと技術系ブログ(ってほどじゃないけど)らしく、ソースコードをハイライト表示して、見やすいデザインにしてみました。
色々あるようですが、SyntaxHighlighterというのが良さそうなので、それを導入。
↓こんな感じ。
function test() : String
{
return 10;
}
手順
- 「SyntaxHighlighter」をダウンロード。
この記事を書いている時点ではversion 2.0.320。 - ダウンロードしたもの解凍し、”scripts”フォルダ”styles”フォルダをアップロード。
- <head></head>内に、以下のソースを記述。
サンプルHTMLにはなぜか”shBrushAS3.js”のリンクが入っていないので注意。
リンクパスはもちろん各ブログに対応したものに変更する。 - 適用したい箇所に<pre class=”brush: as3;”></pre>とマークアップ。
デザインが今一つな気がしますが、オプションで変えられるのかな?
なんだかよくわかっていませんが、とりあえずソースコードは見やすくなった。。。?
今回はAS3とxml,html,xhtmlに対応するようにしました。
その他のコードに反映したい場合は、該当するjsを読み込む。
こちらが、対応しているコード一覧。
- Comments: 2
- Trackbacks: 0
[AS3] LoaderからBitmapへ
Loaderで読み込んだ画像を、Bitmapへ変換する方法と、ビットマップとして書き出す方法。
Bitmapにすると、スムーズに拡大縮小ができるし、フィルターかけた時など処理が軽くなる。
変換する方法
var bm:Bitmap = Bitmap(loader.content);
Loader.contentでBitmapを呼び出す。
※new Bitmapにするとうまくいかない?
複製して書き出す方法
var bmData:BitmapData = new BitmapData(loader.width, loader.height); bmData.draw(loader.content); var bm:Bitmap=new Bitmap(bmData);
一度読み込んだ画像を使い回す時などは複製した方が良さそう。
filterをかけると、両方にかかってしまう。
また、progressionを使った場合、initObjectにloaderを渡して、
連携をとることも可能。
initObjectで渡す
var image = new Image({loader:imgLoader});
var bmData:BitmapData = new BitmapData(initObject.imgLoader.width, initObject.imgLoader.height); bmData.draw(initObject.imgLoader.content); var bm:Bitmap=new Bitmap(bmData);
ま、渡す時にloader.contentを渡してもうまくいく。
※2009.11.18追記※
上記の var image = new Image({loader:imgLoader}); は、間違ってるかも。
var image = new Image({imgLoader:loader:}); これが正解かな。逆でした。
- Comments: 0
- Trackbacks: 0
[AS3] getChildByName
ActionScriptでの一番のキモは、他のインスタンスやプロパティなどへのアクセスだと思う。
今まで、AS2では割と簡単にできていたことが、AS3では複雑?というか厳格?になった分、かなりとまどってます。
いや、単にAS2で止まってるわたくしの知識がいけないんですけど。。
例えば、AO-Blogさんのこの記事のように、インスタンス名を変数でアクセスする場合には、こんな風にしなければいけない。
function onFrame(e:Event) {
var nextA = 1-Math.abs(Math.sin(e.currentTarget.r % Math.PI/2));
e.currentTarget.alpha = nextA;
e.currentTarget.r += e.currentTarget.speed;
}
for (var i=0; i<=instanceNum; i++) {
var mc_name = new String();
mc_name = "mc"+i;
var target_mc:MovieClip = MovieClip(getChildByName(mc_name));
target_mc.alpha = 0;
target_mc.r = Math.PI - (Math.PI/12)*i;
target_mc.speed = 0.2;
target_mc.addEventListener(Event.ENTER_FRAME,onFrame);
}
【ポイント】
- getChildByName()
こいつで、mc名から特定のmcを参照する。 - e.currentTarget
上記のような場合、いままでは"this"で参照できたけど、eventの場合は、"e.currentTarget"で参照する。
ENTER_FRAMEなんかの使い方も、AS2ではなかった使い方だけに、この辺でも悪戦苦闘してるわけですが、
こういった外部のインスタンスやプロパティの参照系でかなり苦労してます。
ちなみに、上記は、ローディング中にドットがグルグル回るアニメーション。
サンプルはないけど、近々公開する弊社ウェブサイトでお披露目します。
乞うご期待!
あと、もうちょっと!
あ、でもローディングなんで一瞬しか見れないかもだけど。
- Comments: 0
- Trackbacks: 1
- Search
- Feeds
- Meta
