トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     for..inループで下の階層にあるMovieClipのパスが取得できない。
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nekoyuki
Åê¹ÆNo.32242
投稿日時: 2007-2-27 13:48
半人前
居住地: 大阪府
投稿: 48
使用環境:
FLASH CS3 Professional
XP Pro(SP2)
for..inループで下の階層にあるMovieClipのパスが取得できない。
お世話になっております。

ActionScript3.0について伺いたいのですが
今まではfor..inループでMovieClipの中身を走査して
その下の階層にある名前の解らないMovieClipのパスを取得して
ごっそり全体の処理を実行させる手法をよく取っていたのですが
ActionScript3.0ではその方法が使えません。
fo..inでアクセスできるプロパティの仕様が変わった
為でしょうか??

for(var prop in _mc){
   trace(prop+":"+_mc[prop]);
}


※取得したいMovieClipのパスはaddChildメソッドなどで
挿入したものではなくオーサーリングで配置した予めある
MovieClipです。

ご教授が頂けたならば幸いです。
野中文雄
Åê¹ÆNo.32243
投稿日時: 2007-2-27 14:19
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: for..inループで下の階層にあるMovieClipのパスが取得できない。
DisplayObjectクラスのプロパティ・メソッドを使って、取得する必要があると思います。
import flash.display.MovieClip;
var n:uint = _mc.numChildren;
trace(n);
for (var i:uint=0; i<n; i++) {
	var child_mc:DisplayObject = _mc.getChildAt(i);
	trace([child_mc, child_mc.name]);
}

引用:
nekoyukiさんは書きました:
ActionScript3.0について伺いたいのですが
今まではfor..inループでMovieClipの中身を走査して
その下の階層にある名前の解らないMovieClipのパスを取得して
ごっそり全体の処理を実行させる手法をよく取っていたのですが
ActionScript3.0ではその方法が使えません。
...[中略]...
for(var prop in _mc){
   trace(prop+":"+_mc[prop]);
}


----------------
 

nekoyuki
Åê¹ÆNo.32261
投稿日時: 2007-2-27 22:09
半人前
居住地: 大阪府
投稿: 48
使用環境:
FLASH CS3 Professional
XP Pro(SP2)
Re: for..inループで下の階層にあるMovieClipのパスが取得できない。
野中様、ご教授ありがとうございます。

ちょっと自分なりに補足を加えてみました。
これだとDisplayObjectクラス以下のサブクラスのすべてを
取り出してしまうみたいなので。

import flash.display.MovieClip;
var n:uint =_mc.numChildren;
trace(n);
for (var i:uint=0; i<n; i++) {    
  var child_mc:DisplayObject = _mc.getChildAt(i);
    // ムービークリップのみを抜き出すには
    if(child_mc instanceof MovieClip) {
       trace([child_mc, child_mc.name]);
    }
}
野中文雄
Åê¹ÆNo.32263
投稿日時: 2007-2-27 22:30
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: for..inループで下の階層にあるMovieClipのパスが取得できない。
あ、BitmapやSpriteなどのインスタンスは、外したいということですね。ActionScript 3.0からは、instanceofでなくis演算子を使った方がよいでしょう。
import flash.display.MovieClip;
// 以下テスト用
import flash.display.Bitmap;
import flash.display.Sprite;
_mc.addChild(new Bitmap());
_mc.addChild(new Sprite());
// ここまでテスト用
var n:uint =_mc.numChildren;
trace(n);
for (var i:uint=0; i<n; i++) {
	// var child_mc:DisplayObject = _mc.getChildAt(i);
	var child_mc:MovieClip = _mc.getChildAt(i) as MovieClip;
	// ムービークリップのみを抜き出すには
	// if(child_mc instanceof MovieClip) {
	if (child_mc is MovieClip) {
		trace([child_mc, child_mc.name]);
	}
}

引用:
nekoyukiさんは書きました:
これだとDisplayObjectクラス以下のサブクラスのすべてを
取り出してしまうみたいなので。


----------------
 

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops