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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     MCをloadMovieした際のwidthやheightに関して
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
etking
Åê¹ÆNo.45158
投稿日時: 2010-6-8 18:14
新米
居住地:
投稿: 17
使用環境:
XP,CS3,actionscript3.0
MCをloadMovieした際のwidthやheightに関して
皆様よろしく御願いします。

actionscriptを用いて複数のMCを作成しています。
MCの指定は文字列で行っています。
以下のように

var Arr:Array
var str:String = "test";
str = Arr[0];
Arr[1] = "***.jpg"

_root.createEmptyMovieClip(inputArr[0],1);
_root[str].loadMovie(inputArr[1]);
_root[str]._y = 100;
_root[str]._x = 300;

このように記述した場合、画像が表示され、
x軸,y軸が移動するのですが、
_root[str]._height = 100;

_root[str]._width = 100;
のように画像の横幅・縦幅は変えることができません
trace(_root[str]._width);
トレースを行っても値は、0になっています。

これはなぜなのでしょうか?
MCの指定を文字ではなく配列にできればいいのですが;;

よろしければ、ご指導の方よろしく御願いします。

野中文雄
Åê¹ÆNo.45159
投稿日時: 2010-6-8 19:06
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: MCをloadMovieした際のwidthやheightに関して
画像を読込む前の「空の」MovieClipインスタンスの幅や高さは0だからです。→「MovieClip.loadMovieで外部ファイルを読込む

ちなみに、「MCの指定」は必ず「文字」です。引用されたスクリプトでも「文字」を使われています。ただ、その「文字」を「配列」から取出したにすぎません。つまり、「配列」云々は、今回の課題には直接関係がありません。
引用:
etkingさんは書きました:
_root.createEmptyMovieClip(inputArr[0],1);
_root[str].loadMovie(inputArr[1]);
// ...[中略]...
_root[str]._height = 100;


_root[str]._width = 100;

のように画像の横幅・縦幅は変えることができません
trace(_root[str]._width);
トレースを行っても値は、0になっています。

これはなぜなのでしょうか?
MCの指定を文字ではなく配列にできればいいのですが;;


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

etking
Åê¹ÆNo.45164
投稿日時: 2010-6-9 17:14
新米
居住地:
投稿: 17
使用環境:
XP,CS3,actionscript3.0
Re: MCをloadMovieした際のwidthやheightに関して
ご返答ありがとうございます。

ロードの時間を考慮していないということなのですね;;
よってx軸、y軸を移動させた後以下のような
処理を付加しました。

_root[str].onClipEvent(data) {
if (this.getBytesTotal()>0 &&     this.getBytesLoaded()>=this.getBytesTotal()){
trace(_root[str]._width);
}

これを記述しました所演算子の後にはフィールド名が必要です
とのエラーが表示されました。
onClipEventの所なのですが、どのように記述していいのか
わかりませんでした。
申し訳ないのですがご指導御願いします

引用:

Fumioさんは書きました:
画像を読込む前の「空の」MovieClipインスタンスの幅や高さは0だからです。→「MovieClip.loadMovieで外部ファイルを読込む

ちなみに、「MCの指定」は必ず「文字」です。引用されたスクリプトでも「文字」を使われています。ただ、その「文字」を「配列」から取出したにすぎません。つまり、「配列」云々は、今回の課題には直接関係がありません。
引用:
etkingさんは書きました:
_root.createEmptyMovieClip(inputArr[0],1);
_root[str].loadMovie(inputArr[1]);
// ...[中略]...
_root[str]._height = 100;


_root[str]._width = 100;

のように画像の横幅・縦幅は変えることができません
trace(_root[str]._width);
トレースを行っても値は、0になっています。

これはなぜなのでしょうか?
MCの指定を文字ではなく配列にできればいいのですが;;
ひろゆき
Åê¹ÆNo.45165
投稿日時: 2010-6-9 18:52
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: MCをloadMovieした際のwidthやheightに関して
まず、使用環境を「アカウント編集」で記載しておきましょう。
#その他に記入すれば、プロフィールに表示されます。

次に、ここは、「ActionScript 3.0 特設会議室」です。
適切なフォーラムに投稿するようにしましょう。


onClipEventハンドラは、ステージ上に配置されたムービークリップに、
ムービークリップ・アクションとして記述するスクリプトです。

したがって、ムービークリップを動的に生成している場合には、使えません。


FlashPlayer7以降の書き出しにしているのであれば、
MovieClipLoaderクラスを使うことをお勧めします。

MovieClipLoaderクラスについて


また、断片的なスクリプトを掲載されても、
何をなさろうとしているのか、不明確です。

できれば、端折らず必要最低限のスクリプトを
提示なさった方が良いように思います。


----------------
質問する際は、回答者に具体的な情報を与えてください。

野中文雄
Åê¹ÆNo.45167
投稿日時: 2010-6-10 1:06
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: MCをloadMovieした際のwidthやheightに関して
第1に、勝手に文法をつくらないことです。

参考: Flash ActionScript Helper「イベントとイベントハンドラ」「システムイベント(内部イベント)
引用:
etkingさんは書きました:
よってx軸、y軸を移動させた後以下のような
処理を付加しました。
_root[str].onClipEvent(data) {
	// ...[後略]...

これを記述しました所演算子の後にはフィールド名が必要です
とのエラーが表示されました。
onClipEventの所なのですが、どのように記述していいのか
わかりませんでした。

おそらくこの書き方から「推測」すると、「複数のMC」をロードしようとされているのではないでしょうか。だとすると第2に、一度にすべてをやろうとすることに無理があります。ご紹介したノートには、サンプルムービーもアップロードされていたはずです。「どのように記述していいのか」お尋ねになる前に、サンプルと同じような簡単なムービーをつくってご覧になりましたか?

そして、第3にドキュメントはきちんとお読みになるべきでしょう。上記ノートにはつぎのように書かれていたはずです(原文にはリンクも設定してありますので、お確かめください)。
引用:
さらに、複数の外部ファイルをMovieClip.loadMovie()メソッドで、同時に読込むべきではありません。サーバーが同時に読込めるファイル数には制限があり、仮にその制限内あってもタイムアウトの発生などロードを妨げる要因が発生しやすくなります。外部ファイルのロードはひとつずつ、その完了を確認したうえで行っていくスクリプティングが必要とされます。Flash Player 7以降を対象とする場合には、MovieClipLoaderクラスを利用するのが簡単でしょう。

とはいえ、では「MovieClipLoaderクラス」を使いさえすればいいのだろうと、またノートを斜め読みして、スクリプトをつぎはぎしたのでは、同じような結末になることが十分に予測されます。まずは、ひとつひとつ着実に理解して試されることを強くお勧めします。→【問題を単純化(シンプルに)しない


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

etking
Åê¹ÆNo.45172
投稿日時: 2010-6-10 14:30
新米
居住地:
投稿: 17
使用環境:
XP,CS3,actionscript3.0
Re: MCをloadMovieした際のwidthやheightに関して
野中さん、ひろゆきさんご忠告有難うございました。

もう少し、順々と整理し、理解を深めてゆきたいと思います。
今回作成しているものなのですが、
数多くある画像から、phpを用いて4枚の画像に選定し、
その4枚の画像をFlushでアクションをつけてブラウザに表示
する。というようなものを作成しております。
現在phpと並行して作業しており、phpからFlashに受け渡す際に、
4つの画像の名前を1つの文字列としてFlash側に渡しています。
Flashではsplitを用いて、【,】で区切り、画像名を配列に格納し、
MCを動的に作成し、抽出された4枚の画像にアクションをつけて
表示する。といったFlashとphpプログラムをブラウザで同時に
実行しようといったものです。
多々ある中の画像から4枚の画像を表示しなければならないので、
動的にMCを作成するしか方法がないと考えてしまい、また
配列として画像名を取得することができたので、
繰り返しにより画像表示のMCを4つ作成できないかと
考えておりました。そこで今回急いで作らなければならないと
考えて、焦ってしまい、MCのloadMovieの所というか
イベント処理の仕様を理解しておらず、躓いてしまいました。

多々ご迷惑をおかけし、すみませんでした。
効率の良い案や、方法についてご教授いただけたら幸いです。
野中文雄
Åê¹ÆNo.45173
投稿日時: 2010-6-10 15:08
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: MCをloadMovieした際のwidthやheightに関して
以下の最終的におやりになりたいことは、「お手玉10個」のお話しです。まず2?3個から始めなければ、無理でしょう。→【問題を単純化(シンプルに)しない
引用:
etkingさんは書きました:
今回作成しているものなのですが、
数多くある画像から、phpを用いて4枚の画像に選定し、
その4枚の画像をFlushでアクションをつけてブラウザに表示
する。というようなものを作成しております。

ステップとしては後の課題になりますが、「4枚の画像」に数が決まっているのでしたら「動的にMCを作成する」必要はなく、予め空のMovieClipインスタンスを4つ置いてもできます。
引用:
多々ある中の画像から4枚の画像を表示しなければならないので、
動的にMCを作成するしか方法がないと考えてしまい、また
配列として画像名を取得することができたので、
繰り返しにより画像表示のMCを4つ作成できないかと
考えておりました。そこで今回急いで作らなければならないと
考えて、焦ってしまい、MCのloadMovieの所というか
イベント処理の仕様を理解しておらず、躓いてしまいました。

「迷惑」ということではなく、「急いで作らなければならない」というお気持ちとは裏腹に、お互いに無為な時間が過ぎてしまうというだけです。

まずは、ひとつの画像とMovieClipインスタンスで、ロードとサイズの変更を成功させることです。使うのはMovieClip.loadMovie()メソッドでも、MovieClipLoaderクラスでも構いません。そのムービーを出発点にして、段階を進めていきます。それがもっとも「効率の良い」課題への取組み方です。
引用:
多々ご迷惑をおかけし、すみませんでした。
効率の良い案や、方法についてご教授いただけたら幸いです。


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

etking
Åê¹ÆNo.45174
投稿日時: 2010-6-10 17:00
新米
居住地:
投稿: 17
使用環境:
XP,CS3,actionscript3.0
Re: MCをloadMovieした際のwidthやheightに関して
ご返答ありがとうございます。

<<まずは、ひとつの画像とMovieClipインスタンスで、ロードとサイ<<ズの変更を成功させることです。使うのはMovieClip.loadMovie()<<メソッドでも、MovieClipLoaderクラスでも構いません。
<<そのムービーを出発点にして、段階を進めていきます。
<<それがもっとも「効率の良い」課題への取組み方です。

説明が足りなさすぎました。申し訳ありません。
前々から単一ですと、ロードとサイズの変更はできていました。

this.createEmptyMovieClip("load_mc",1);
this.load_mc.createEmptyMovieClip("jpg1",3);
this.load_mc.jpg1.loadMovie("1.jpg");
this.load_mc.onEnterFrame = function() {
if ( this.jpg1._width != 0 ) {
this.jpg1._width = this.jpg1._height = 200;
}

これでサイズは変わっていました。しかし、文字列でMCを指定しなければならない場合に上記の方法でやってしまうと、私の理解力ではどうしても指定ができなかったのです。
具体的には、load_mcを作成し、jpg1の指定を配列(中身は文字列)にする場合に、
this.load_mc._root[str].loadMovieのように考えてしまい
上手く指定できませんでした。
この方法では無理なのでしょうか?
野中文雄
Åê¹ÆNo.45175
投稿日時: 2010-6-10 20:44
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: MCをloadMovieした際のwidthやheightに関して
「単一ですと、ロードとサイズの変更はでき」たということで、そのスクリプトも示していただきましたので、これでようやく話が進められます。しかし、まだ「配列」の話には入れません。また、初めに申し上げたとおり、すでに「文字列でMCを指定」されています。

問題は、その文字列を「変数」で指定するということでしょう。そして、積み木を高く積むときと同じで、はじめの一歩がきちんと積まれていなければ、その上の積み木をいくら小手先で組替えてもすぐに崩れてしまいます。

その意味では、掲載されたスクリプトは「赤点」は免れるものの、「合格点」には至りません。まずは、以下の修正の意味をよくご検討ください。
引用:
説明が足りなさすぎました。申し訳ありません。
前々から単一ですと、ロードとサイズの変更はできていました。
this.createEmptyMovieClip("load_mc",1);
var _mc:MovieClip = 
this.load_mc.createEmptyMovieClip("jpg1",3);
this.load_mc.jpg1.loadMovie("1.jpg");
this.load_mc.onEnterFrame = function() {
	// if (this.jpg1._width != 0) {
	if (_mc._width != 0) {
		// this.jpg1._width = this.jpg1._height = 200;
		_mc._width = _mc._height = 200;
		trace(_mc);
		// delete this.onEnterFrame;
	}
};

これでサイズは変わっていました。しかし、文字列でMCを指定しなければならない場合に上記の方法でやってしまうと、私の理解力ではどうしても指定ができなかったのです。
具体的には、load_mcを作成し、jpg1の指定を配列(中身は文字列)にする場合に、
this.load_mc._root[str].loadMovieのように考えてしまい
上手く指定できませんでした。


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

etking
Åê¹ÆNo.45176
投稿日時: 2010-6-10 21:24
新米
居住地:
投稿: 17
使用環境:
XP,CS3,actionscript3.0
Re: MCをloadMovieした際のwidthやheightに関して
野中さんご丁寧にありがとうございます。

<< var _mc:MovieClip =
のところで、文字列を使わずに
_mcで指定できるようになるので
_rootから_mcを指定できるように
なったということでしょうか?
また勘違いをしているのかもしれません
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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