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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     フレーム1上のボタンで、フレーム2上のカスタム関数を再生したいのですが・・・
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
maiko
Åê¹ÆNo.28450
投稿日時: 2006-9-4 14:11
新米
居住地:
投稿: 28
使用環境:
WinXP,Flash MX2004,Flash8Pro
フレーム1上のボタンで、フレーム2上のカスタム関数を再生したいのですが・・・
Flash-jp.com-フォーラムの皆様
お世話になります。
Flash勉強中のmaikoといいます。
よろしくお願いします。

現在、カスタム関数について調べています。
カスタムで定義した関数を実行しようとしています。
次のようなASを作成し、フレーム1のtest1_btnをクリックすると、フレーム2のcustom()が実行され、swfファイルが再生するようにしたいのですが、できませんでした。
●フレーム1
stop();
test1_btn.onRelease = function() {
custom();
}
●フレーム2
stop();
function custom() {
_root.screen.loadMovie("testmovie.swf");
}
(すべて、フレーム上にASを書き込んでいます。)
(screenは、ムービークリップです。インスタンス名がscreenです。)


試しに次のようなASを作りパブリッシュし、test2_btnをクリックすると、custom()が実行され、"testmovie.swf"が再生できました。
●フレーム1
ASなしです。
●フレーム2
stop();
test2_btn.onRelease = function() {
custom();
}
function custom() {
_root.screen.loadMovie("testmovie.swf");
}

フレーム1上にあるtest1_btnボタンで、(フレーム2に移動し、)フレーム2のcustom()を実行して、screen上の外部swfファイル"testmovie.swf"を再生できるようにするにはどうしたらよいのでしょうか。よろしくお願いします。



森 巧尚
Åê¹ÆNo.28452
投稿日時: 2006-9-4 14:33
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: フレーム1上のボタンで、フレーム2上のカスタム関数を再生したいのですが・・・
明日買ってこようと思っていたゲームを、今日はまだ遊ぶことはできませんね。今日遊びたかったら、今日買ってこなくてはいけません。

同じように、フレーム1の時点でボタンでcustom関数を呼んでも、まだcustom関数はできていないし、フレーム1のままではscreenムービークリップもありません。

フレーム1で、あらかじめcustom関数を作っておいて、ボタンを押したら、まずscreenムービークリップのあるフレーム2にジャンプして、それからcustom関数を呼べばいいのです。
stop();
test1_btn.onRelease = function() {
	gotoAndStop(2);
	custom();
};
function custom() {
	_root.screen.loadMovie("testmovie.swf");
}

フレーム2で
stop();
で。


----------------
森 巧尚
http://www.ymori.com

tnagata
Åê¹ÆNo.28453
投稿日時: 2006-9-4 14:36
常連
居住地:
投稿: 140
使用環境:
Flex2,, Flash5
OS:Windows 2000 SP4,,WindowsVista
IE5,6,7
Re: フレーム1上のボタンで、フレーム2上のカスタム関数を再生したいのですが・・・
フレーム1がカレントフレームになっている状態ですと
function custom()
がフレーム1内にないので参照する事が出来ません。
つまり、FlashPlayerが、「custom()って何?」
というような未知の状態になっているわけです。

解決方法としては、
手法1
1.フレーム1にあるボタンをフレーム2まで存在期間を
伸ばしてあげます。
2.フレーム1のstop()を削除して
自動的にフレーム2へ進めるようにする事で動作するようになります。

手法2
1.フレーム1にcustom関数を用意してあげます。
(stopを入れない)

2.フレーム2にtest1_btnを存在させます。
更に
stop();
test1_btn.onRelease = function(){
custom();
}
を記述する。

上記のように一度custom関数をFlashPlayerに読込ませておけば
参照が出来るようになりますので動作できます。

但し、maikoさんが何故関数を記述する場所を分けているかの
意図次第なので、他にも解決方法はあります。
maiko
Åê¹ÆNo.28454
投稿日時: 2006-9-4 14:44
新米
居住地:
投稿: 28
使用環境:
WinXP,Flash MX2004,Flash8Pro
Re: フレーム1上のボタンで、フレーム2上のカスタム関数を再生したいのですが・・・
森 巧尚さん、tnagataさん、早速の返信ありがとうございました。

とても分かりやすく説明していただいているので、感謝です。
現在、ASを書き換え中です。
でき次第、返信させていただきます。

ありがとうございました。
maiko
Åê¹ÆNo.28460
投稿日時: 2006-9-4 15:57
新米
居住地:
投稿: 28
使用環境:
WinXP,Flash MX2004,Flash8Pro
Re: フレーム1上のボタンで、フレーム2上のカスタム関数を再生したいのですが・・・
解決しました!!!
森 巧尚さん、tnagataさん,ありがとうございました。
試行錯誤しながら、何とか、再生させることができました。
今後は、宣言をしてから、カスタム関数を使おうと思います。
感謝です。

勢いで書かせていただきます。
試行錯誤している最中に出てきた疑問です。
1フレームしかないFlashの1フレーム目に、

stop();
custom();
function custom() {
_root.screen.loadMovie("testmovie.swf");
}

というようなASを記述しても、custom関数は、実行されませんでした。
stop();
test1_btn.onRelease = function() {
custom();
}
function custom() {
_root.screen.loadMovie("testmovie.swf");
}
のように、btnを使うと、うまくいくのですが・・・。

btnを使わずに、いきなり1フレーム目で、カスタム関数custom()を実行させる方法は、あるのでしょうか。よろしくお願いします。
野中文雄
Åê¹ÆNo.28462
投稿日時: 2006-9-4 16:05
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: フレーム1上のボタンで、フレーム2上のカスタム関数を再生したいのですが・・・
実行されますよ。確認は、どのようにされていますか? また、_root.screenは、正しく認識されていますか?
引用:
maikoさんは書きました:
1フレームしかないFlashの1フレーム目に、
stop();
custom();
function custom() {
    trace(_root.screen);
    _root.screen.loadMovie("testmovie.swf");
}

というようなASを記述しても、custom関数は、実行されませんでした。


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

tnagata
Åê¹ÆNo.28464
投稿日時: 2006-9-4 16:10
常連
居住地:
投稿: 140
使用環境:
Flex2,, Flash5
OS:Windows 2000 SP4,,WindowsVista
IE5,6,7
Re: フレーム1上のボタンで、フレーム2上のカスタム関数を再生したいのですが・・・
こちらでは、再現できませんでした。
動くはずですね。

まずは

stop();
custom();

function custom()
{
    trace(_root.screen);
    _root.screen.loadMovie("testmovie.swf");
}


を実行してみましょう。
これによって、まずcustom関数は呼び出されているか?を確認し
また、_root.screenが存在しているか?を
確認しましょう。
customが呼び出されていなければ当然traceは実行されません
呼び出された結果がundefinedであれば、ステージにscreenがない
_level0.screenと表示されていれば成功。

という具合に、問題を絞り込み、どこまで成功しているのか?を
考えてみてください。

「追記」
あ、野中さんと被った
森 巧尚
Åê¹ÆNo.28465
投稿日時: 2006-9-4 16:19
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: フレーム1上のボタンで、フレーム2上のカスタム関数を再生したいのですが・・・
引用:

tnagataさんは書きました:
「追記」
あ、野中さんと被った


僕も被りそうになりました(^_^;)

もともと「わざわざcustom関数を2フレーム目で書いていた」ということは、
_root.screenは、2フレーム目にしか存在していないのじゃないでしょうか?

それを1フレーム目だけにして試したところ、2フレーム目がなくなって、_root.screenごと消えてしまい、loadMovieするべき「_root.screen」がなくなったので動いていないように見えているだけではないかと予測されます。


----------------
森 巧尚
http://www.ymori.com

maiko
Åê¹ÆNo.28466
投稿日時: 2006-9-4 16:24
新米
居住地:
投稿: 28
使用環境:
WinXP,Flash MX2004,Flash8Pro
Re: フレーム1上のボタンで、フレーム2上のカスタム関数を再生したいのですが・・・
野中 文雄さん、tnagataさん、森 巧尚さん、ありがとうございます。
現在、trace(_root.screen);を実行し、試行錯誤中です。

問題を絞り込み、どこまで成功しているのかを考えようと思います。野中 文雄さん、tnagataさん、森 巧尚さんから頂いたアドバイスをもとに、もう少し(かなり)、考えて何とか解決したいと思います。しばらくかかりそうですが、がんばります。

本当にありがとうございます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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