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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     MovieClip.attachMovie()第4引数?
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
空野大二郎
Åê¹ÆNo.13050
投稿日時: 2004-12-5 12:45
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
MovieClip.attachMovie()第4引数?
 まいど。

 [まえがき]
 MovieClip.attachMovie()に第4引数でプロパティの変更が
できるのですが、「できる」だけでサポート外動作と予測されます。
 どなたか原理を承知済みで実用されている方はいらっしゃいませんか?

 [現状]
 MovieClip.attachMovie()メソッドを実行したあとに、配列
アクセス演算子を使って、配置したムービークリップのプロパティを
変更することがある。

//ムービークリップ「tes_mc」をリンケージ書き出し「tes_mc」にする
//_rootのフレームスクリプトに記述
var tes_Num= 1;
//マウスをクリックするごとに、「tes_mc」を同じ座標に配置+その他
this.onMouseDown = function () {
	this.attachMovie ("tes_mc", "tes" + tes_Num + "_mc", tes_Num);
	this["tes"+ tes_Num + "_mc"]._x = _root._xmouse;
	this["tes"+ tes_Num + "_mc"]._y = _root._ymouse;
	this["tes"+ tes_Num + "_mc"]._alpha = 50;
	this["tes"+ tes_Num + "_mc"].tabEnabled = true;
	tes_Num++;
};
this.stop();


 [現象]
 下記も同じ動作になる。
 構造体でプロパティの値を定義できる感覚。

var tes_Num = 1;

this.onMouseDown = function () {
	this.attachMovie ("tes_mc", "tes" + tes_Num + "_mc", tes_Num, {
		_x:_root._xmouse, _y:_root._ymouse,_alpha:50,tabEnabled:true
	});
	tes_Num++;
};
this.stop();


 [利点]
 スクリプトが短くなる。

 [備考]
 attachMovie()メソッドはFlash5からでしたから、そのころから
可能だったのでしょうか。
 ついでにcreateTextField()でもためしてみたのですが、
そちらはプロパティの変更はできませんでした。(エラーも出ない)


----------------
空野 大二郎 アニメーター作家
桜の道

野中文雄
Åê¹ÆNo.13056
投稿日時: 2004-12-5 16:13
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: MovieClip.attachMovie()第4引数?
Flash MX(Flash Player 6)からマニュアルに明記されていますので、「サポート外」ではないと思いますが。
引用:
空野大二郎さんは書きました:
 MovieClip.attachMovie()に第4引数でプロパティの変更が
できるのですが、「できる」だけでサポート外動作と予測されます。

第4引数のオブジェクトは、すべてのユーザー定義プロパティが取出されて、新規に作成されたMovieClipインスタンスにコピーされます。
// フレームアクション
var oInit:Object = new Object();
oInit._x = 100;
oInit._y = 50;
oInit._alpha = 50;
oInit.onEnterFrame = function() {
    this._rotation += 1;
};
this.attachMovie("mySymbol", "my_mc", 1);
// 第4引数の処理
// インスタンスの生成時に実行
for (var i in oInit) {
    _mc[i] = oInit[i];
}

引用:
 どなたか原理を承知済みで実用されている方はいらっしゃいませんか?

第4引数のプロパティは新規MovieClipの生成時に設定されますので、後からプロパティ値を変更すれば、そちらが有効になるでしょう。
引用:
 MovieClip.attachMovie()メソッドを実行したあとに、配列
アクセス演算子を使って、配置したムービークリップのプロパティを
変更することがある。

もっとも、MovieClip.attachMovie()メソッドの戻り値が利用できる現在では、この引数を用いる利点はそれほど大きくないと思います。
// フレームアクション
var _mc:MovieClip = this.attachMovie("mySymbol", "my_mc", 1);
_mc._x = 100;
_mc._y = 50;
_mc._alpha = 50;
_mc.onEnterFrame = function() {
    this._rotation += 1;
};

短く記述することも、可能は可能です。ただ、決して見やすくはなく、お勧めはしません。
// フレームアクション
var oInit:Object = {_x:100, _y:50, _alpha:50, onEnterFrame:function () {
    this._rotation += 1;
}};
/* 以下のように記述するなら見やすいが、あまり短くもない
var oInit:Object = {
    _x:100, 
    _y:50, 
    _alpha:50, 
    onEnterFrame:function () {
        this._rotation += 1;
    }
};
*/
var _mc:MovieClip = this.attachMovie("mySymbol", "my2_mc", 1, oInit);

引用:
 [利点]
 スクリプトが短くなる。

Flash MX 2004オンラインヘルプ[ActionScriptリファレンスガイド]には記載されているとおり、Flash Player 6以降の対応です。

参考: MovieClip.attachMovie()(英語版)
引用:
 attachMovie()メソッドはFlash5からでしたから、そのころから
可能だったのでしょうか。

MovieClip.createTextField()メソッドには、「戻り値」もありませんね。次期バージョンでのお願い事項でしょう。
引用:
 ついでにcreateTextField()でもためしてみたのですが、
そちらはプロパティの変更はできませんでした。(エラーも出ない)


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

空野大二郎
Åê¹ÆNo.13062
投稿日時: 2004-12-5 18:48
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: MovieClip.attachMovie()第4引数?
 まいど。

 FlashMX2004なら、戻り値があるのですね。
 確かにコードヒントや色が付くので使うなら断然こちらですね。
 (もー、MX2004にしようかしら)
引用:
野中文雄さんは書きました:
もっとも、MovieClip.attachMovie()メソッドの戻り値が利用できる現在では、この引数を用いる利点はそれほど大きくないと思います。
// フレームアクション
var _mc:MovieClip = this.attachMovie("mySymbol", "my_mc", 1);
_mc._x = 100;
_mc._y = 50;
_mc._alpha = 50;
_mc.onEnterFrame = function() {
    this._rotation += 1;
};

 正直、第4引数を使う方法は、わたし自身も見にくいと感じていました。


 しっかり書かれていました。
 こちらの見落としでした。すんません。
 Availability:Flash Player 5.ということもあり、FlashMXから
Flash5書き出しをしても、一応プロパティの変更ができて
いました。(FlashPlayer 6で確認したからか。)
 ですが、Flash MX 2004オンラインヘルプに準じてFlash Player6
以降対応と覚えておくのが吉ですね。
引用:
野中文雄さんは書きました:
Flash MX 2004オンラインヘルプ[ActionScriptリファレンスガイド]には記載されているとおり、Flash Player 6以降の対応です。

参考: MovieClip.attachMovie()(英語版)


 どうやら、FlashMX限定の書き方でしたね。
 いくつかの決まった座標セットをObject.Objectに格納しておいて、
場面に応じてattachMovie()で何度も配置するときなら有効
という感じがしました。
 情報、ありがとうございました。
 詳しい解説のおかげで、すっきりしました。


----------------
空野 大二郎 アニメーター作家
桜の道

salvox
Åê¹ÆNo.13466
投稿日時: 2004-12-19 13:22
常連
居住地: 東京都
投稿: 73
使用環境:
Windows2000
FlashMX
テキストエディター:EmEditor
Re: MovieClip.attachMovie()第4引数?
ど?も、Salvoxです。

いやいや、見にくいどころか、

非常に見やすくなり、高速ばかりか、制作サイドからみるとかなり重宝がるものです。ぜひ、createEmptyMovieClipにも同じ引数が出来ることを期待します!!。

なぜなら、同じようなボタンやMCを複製する場合や、
ある固定の関数をもったMCをつくる場合などには、
あらかじめ、_root.initObj = { _x:100, _y:100, myFunc:_root:myFunc; } みたく一個作っておいて、デュプリケートする毎や、アタッチする毎には、そのオブジェクトを渡せば良いんですよ。

this.duplicateMovieClip('dup' + dupCnt, dupCnt, _root.initObj);

↑みたいな感じ。

デバックや変更があった場合も楽やし、ネイティブで動作するので、わざわざ、戻り値をとって設定したり、this["dup"+dupCnt]とかの、文字列演算をしないので、動作が保障されるばかりか、高速化が期待できると思うのですが、いかかでしょう?


----------------
(C)SalvoxStudioStation

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

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