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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     MovieClipLoaderの仕様?
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
pinkgear
Åê¹ÆNo.3352
投稿日時: 2004-1-31 8:00
半人前
居住地:
投稿: 35
使用環境:
Mac OS X 10.4.2, Studio MX 2004 w Flash MX Pro
MovieClipLoaderの仕様?
はじめて投稿させて頂きます。
Flashを本格的に使って数ヶ月の初心者なので間違っているのかもしれませんが。。(^^;

写真を読込んで動かすというものを作っているのですが、気になる事(というより、困った事)があります。
containerMCにJPEG画像を読込んで、トゥイーンで回転させたり移動させたりしたいのですが、MovieClipLoaderで読込んだ場合だけなぜか全く動きません。。
loadMovieで読込むと普通に動作するのですが、こうゆうものなんでしょうか?
MovieClipLoaderを使った方が便利(エラー時の処理が楽)なので、なんとかMovieClipLoaderを使いたいので、どなたかご教授下さい。

#数時間試行錯誤して出来なかったので、ダメかなぁと思いつつも投稿してみる事にしました。。(^^;

宜しくお願いします。
野中文雄
Åê¹ÆNo.3354
投稿日時: 2004-1-31 10:22
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: MovieClipLoaderの仕様?
「全く動きません」といわれる内容が、具体的にどういうものなのか把握できません。

試してみたところでは、ロードしたSWF内のアニメーション、読込みターゲットのMovieClipインスタンスに設定したトゥイーンアニメーションとも、問題なく動作します。具体的なご説明がないので、これ以上は申し上げることができません。
引用:
pinkgearさんは書きました:
containerMCにJPEG画像を読込んで、トゥイーンで回転させたり移動させたりしたいのですが、MovieClipLoaderで読込んだ場合だけなぜか全く動きません。。
loadMovieで読込むと普通に動作するのですが、こうゆうものなんでしょうか?


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

pinkgear
Åê¹ÆNo.3359
投稿日時: 2004-1-31 13:48
半人前
居住地:
投稿: 35
使用環境:
Mac OS X 10.4.2, Studio MX 2004 w Flash MX Pro
Re: MovieClipLoaderの仕様?
すいません、具体的な説明というと。。
えーと。実際にやっている事を書いてみます。

#MovieClipLoaderはちょっと変則的な使い方をしているんですが、それが問題なのか。。。


構成は _root に loader_view_mc と photo_mc というムービークリップが配置してあります。loader_view_mc は読込みバイト数等を表示するだけのものです。photo_mc というムービークリップがの中に imgContainer, label, action という名前のレイヤーがあります。
タイムラインの長さは35フレームです。各レイヤーの内容は、

imgContainerレイヤー:(フレーム1から35まで)
imgContainerという名のムービークリップを配置してあります。大きさは100x100を460x308に拡大してあります。
1フレーム目にキーフレーム:設定無し。
5フレーム目にキーフレーム:モーショントゥイーンを設定、伸縮チェックオン、ムービークリップは、明度を100%、垂直方向の傾斜を20°に設定。
35フレーム目にキーフレーム:設定無し。


labelレイヤー:(レイヤー内は空)
5フレーム目にキーフレーム:フレームラベルに open と記述

actionレイヤー:(レイヤ内は空)
1フレーム目にキーフレーム:フレームアクションは以下の様に書いてあります。

this._visible = false;

var loadObserver = null;
var loadListener = null;
var senderObj = null;
var imgSize;

function ClipOpen()
{
	this.gotoAndPlay('open');
}


function FitImageSize()
{
	this.imgContainer._width = this.imgSize._width;
	this.imgContainer._height = this.imgSize._height;
}

function SetData( photoPath, sender )
{
	this.senderObj = sender;

	// Initialize View
	this.imgSize = new Object();
	this.imgSize._width = this.imgContainer._width;
	this.imgSize._height =  this.imgContainer._height;
	this.imgContainer._xscale = 100;
	this.imgContainer._yscale = 100;

	// Load photo data
	this.loadObserver = new MovieClipLoader();
	this.loadListener = new Object();

	this.loadListener.targetContainer = this.imgContainer;
	this.loadListener.masterClip = this;
	this.loadListener.interval = null;
	
	this.loadListener.onLoadStart = this.OnLoadStart;

	this.loadListener.OnLoadProgress = this.OnLoadProgress;
	this.loadListener.OnLoadComplete = this.OnLoadComplete;
	this.loadListener.OnLoadInit = this.OnLoadInit;

	this.loadListener.onLoadError = this.OnLoadError;

	this.loadObserver.addListener( this.loadListener );
	this.loadObserver.loadClip( photoPath, this.imgContainer );
}


// Implimentation Listener Method
function OnLoadStart( target )
{
	_root.loader_view_mc.initProgress();
	_root.loader_view_mc._visible = true;
	
	this.interval = setInterval( this.OnLoadProgress, 100, this );
}

function OnLoadProgress( loadListener )
{
	var totalBytes = loadListener.targetContainer.getBytesTotal();
	var loadedBytes = loadListener.targetContainer.getBytesLoaded();
	var percentages = ( loadedBytes / totalBytes ) * 100;
		
	_root.loader_view_mc.setProgressValue( 'LOADING DATA', percentages );
	
	if( percentages >= 100 )
	{
		loadListener.OnLoadComplete( loadListener );
	}
}

function OnLoadComplete( loadListener )
{
	loadListener.OnLoadInit( loadListener );
}

function OnLoadInit( loadListener )
{
	clearInterval( loadListener.interval );
	
	loadListener.masterClip.FitImageSize();
	_root.loader_view_mc._visible = false;
	
	loadListener.masterClip.OnDeleteLoadTask(loadListener);
}

function OnLoadError( target, errCode )
{
	clearInterval( this.interval );
	
	_root.loader_view_mc._visible = false;
	this.masterClip.OnDeleteLoadTask(this);
}


// Cleanup
function OnDeleteLoadTask( listener )
{
	this.loadObserver.removeListener(listener);
	delete this.loadObserver;
	
	this.senderObj.play();
}


2フレーム目にキーフレーム:フレームアクションは以下です。
this.stop();


5フレーム目にキーフレーム:フレームアクションは以下です。
this._visible = true;


35フレーム目にキーフレーム:フレームアクションは以下です。
this.stop();
trace('end');


という内容です。

画像の読込み、読込んだ後の imgContainer のサイズの操作等は問題無く行えているのですが、トゥイーンの部分が全く動きません。えーと。。
再生は問題無く最後まで進みます。トゥイーンが適用されません。
以下の部分が原因なのかなとも思うのですが。。。

this.loadListener.OnLoadProgress = this.OnLoadProgress;
this.loadListener.OnLoadComplete = this.OnLoadComplete;
this.loadListener.OnLoadInit = this.OnLoadInit;


上記の部分は、onLoadProgress, onLoadComplete, onLoadInit を使うべきでしょうが、自分の環境では使い物にならない程遅かったので、苦肉の策としてこの様に記述しています。具体的には毎回、loadClipをしてからonLoadProgress が呼び出されるまで、体感で3秒程度待たされます。。


制作環境は
マシン :PowerMac G4 Dual 1Ghz
メモリー:1GB
野中文雄
Åê¹ÆNo.3386
投稿日時: 2004-2-1 0:24
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: MovieClipLoaderの仕様?
えー、まずは問題の切分けと絞込みをしてください。(^^;
引用:
pinkgearさんは書きました:
すいません、具体的な説明というと。。
えーと。実際にやっている事を書いてみます。

制作環境は
マシン :PowerMac G4 Dual 1Ghz
メモリー:1GB


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

pinkgear
Åê¹ÆNo.3398
投稿日時: 2004-2-1 4:41
半人前
居住地:
投稿: 35
使用環境:
Mac OS X 10.4.2, Studio MX 2004 w Flash MX Pro
Re: MovieClipLoaderの仕様?
すみません。どう伝えればいいのか、ちょっと難しいです。(^^;
そして、一応解決方法(?)が分かりましたので、書いておきます。

問題:
MovieClipLoader.loadClipでMCに画像を読込み、そのMCをトゥイーンさせたいけど、出来ない(トゥイーンの設定は行っているのに全く動かない)事でした。ちなみに、loadMovieで読込んだ場合はトゥイーンの設定通りに動きます。これはいまだに、なぜだかわかりません。

解決策:
先のコードでは、imgContainer というMovieClipに画像を読込ませていました。これを、imgContainer の中にimgSrcというムービークリップを配置して、imgContainer内でimgSrcのトゥイーンの設定を行い、imgContainer.imgSrc に画像を読込ませると
トゥイーンが動く事が分かりました。

Fumioさんの、「読込みターゲットのMovieClipインスタンスに設定したトゥイーンアニメーションとも、問題なく動作します。」という事で、また色々とテストして見て分かりました。ありがとうございました。
pinkgear
Åê¹ÆNo.3400
投稿日時: 2004-2-1 5:54
半人前
居住地:
投稿: 35
使用環境:
Mac OS X 10.4.2, Studio MX 2004 w Flash MX Pro
Re: MovieClipLoaderの仕様?
間違えました。。。(^^;
原因(問題?)は別の所にありました。

画像を読込ませるMovieClipに高さや幅等のサイズ調整をスクリプトで行うとトゥイーンが適用されない。
という事でした。。。

お騒がせしました。(^^;
野中文雄
Åê¹ÆNo.3401
投稿日時: 2004-2-1 6:29
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: MovieClipLoaderの仕様?
ようやく、いわれている内容がわかりました。今回のポストのように、回答者が問題とされているムービーを手元で作成して再現できる程度まで必要な情報を集約することを、問題の絞込みといいます。
引用:
pinkgearさんは書きました:
画像を読込ませるMovieClipに高さや幅等のサイズ調整をスクリプトで行うとトゥイーンが適用されない。
という事でした。。。

さらに切分けを行いますと、外部ファイルの読込みは問題と無関係であることがわかります。

MovieClipインスタンス_root.my_mcを使って、メインのタイムライン上でモーショントゥイーンを作成します。メインのタイムラインには、さらにボタン用のMovieClip(またはButton)インスタンスをふたつ配置して、それぞれに以下のスクリプトを設定します。

_root.play_mcをクリックすると、_root.my_mcのモーショントゥイーンが再生され、デフォルトでは_rootの第1フレームに戻って停止します。ところが、_root.scale_mcをクリックしてから_root.play_mcで再生すると、モーショントゥイーンは実行されません。
// _root
// フレームアクション
this.stop();

// MovieClip(またはButton): _root.play_mc
// MovieClip(またはButton)アクション
on (release) {
	_root.play();
}

// MovieClip(またはButton): _root.scale_mc
// MovieClip(またはButton)アクション
on (release) {
	_root.my_mc._xscale = 100;
}

この動作は、仕様のように思われます。また、制御対象のMovieClipインスタンスをキーフレームで区切ってしまうと、キーフレーム以降のインスタンスが別物と認識されるおそれもあります。

先のポストで報告されていたように、MovieClipインスタンスを入れ子にして、制御対象をキーフレームで分断しないようにするのが安全だと思われます。


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

植木友浩
Åê¹ÆNo.3403
投稿日時: 2004-2-1 6:46
案内係
居住地: 東京
投稿: 640
使用環境:
Pro +
.Tiger +
Re: MovieClipLoaderの仕様?
本題と関係ない話ですが、野中さんのアバターはMAX仕様ですね。

背景を入れ替えたなぁと思って、じっくり見ていたら気がつきました。


----------------
Tomohiro Ueki
RSSリーダー公開中
チーム-10kg達成

野中文雄
Åê¹ÆNo.3405
投稿日時: 2004-2-1 10:01
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: MAXの仕様?
を、気づきましたか。

MAX当日に使用する壁紙を、貼込んでみました。3パターンあるうちから、ペンギンに合わせてWaterを選択しています。ちなみに、MacromediaトップページMAX情報ページで使用されているのはGrassです。
引用:
tomohiroさんは書きました:
本題と関係ない話ですが、野中さんのアバターはMAX仕様ですね。

背景を入れ替えたなぁと思って、じっくり見ていたら気がつきました。


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

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

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