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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   とにかくFLASH【FLASHに関して全般】
     swfファイルの書き出しについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
野中文雄
Åê¹ÆNo.1132
投稿日時: 2003-11-9 18:36
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: swfファイルの書き出しについて
では、問題は基準点の位置合わせが、意図したとおりの結果にならないということですね。

読込み元ターゲットMovieClipの基準点が、左上に設定してありますか? でしたら、その基準点が読込んだSWFのステージ左上に一致するはずです。もしそうならないということでしたら、そのファイル(外部SWFを含む)の.fla(ソース)ファイルをアップしていただくのが早いと思います。
引用:
yuki_usagiさんは書きました:
MCの大きさは変わっていません(汗)
外部swfを22×45で書き出し、読み込み元のターゲットMCも同じ大きさにし、基準点は左上にしてあっのですが、読み込んだときswfファイルの基準点が大きく左側にずれていたので、大きさが変わってしまったかと思ったんです。


アクションは、(1)キーフレームと(2)シンボルのインスタンスの2種類の場所に記述することができます。前者をフレームアクション、後者は設定するインスタンスの種類によって(a)MovieClipアクション(あるいはクリップアクションという人もいます)、(b)Buttonアクションと呼ばれます(グラフィックインスタンスには、スクリプトが設定できません)。インスタンスに設定するアクションには、必ず(ononClipEventといった)イベントハンドラアクションを記述しなければなりません。
引用:
フレームに書くアクションがフレームアクションで(this.onLoad = function(){ } のようなもの)、MCに書くアクション(onClipEvent(load){ } のようなもの)ですか?

「読込み元」ですね。

サーバーに上げた場合には、MovieClip.loadMovieメソッドを実行した直後では、すべてのフレームが読込まれているとはかぎりません。MovieClip.gotoAndStopメソッドに存在しない(読込まれていない)フレームを指定すると、ActionScriptは黙殺します

これを避けるためには、ムービーの読込み待ちの処理を加える必要があります。しかし、読込みを待っている間に、取りあえず第1フレームは表示されてしまうことになります。第1フレームを出さずにいきなり指定フレームを表示したいという場合には、ターゲットMovieClipを一旦ステージ外に避けておき、読込みが済んでから戻すという処理が必要になります。

初心者には少しやっかいな処理ですが、[MovieClip.loadMovieで外部ファイルを読込む]に解説とサンプルを上げてありますので、ご参照ください。
引用:
読込先のアクションレイヤーには、次のようなスクリプトが書いてあります。
// 外部swfファイル読み込み
this.onLoad = function() {
peoples_mc.loadMovie("people.swf");
peoples_mc.gotoAndStop("stop");
}

"stop"ラベルは5フレーム目に書いてあるんですが、読み込んだときに1フレーム目を再生してしまうんです。


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

A.e.Suck
Åê¹ÆNo.1134
投稿日時: 2003-11-9 19:40
パダワン
居住地: 東京都
投稿: 170
使用環境:
10.14 / / :Animate CC 2018: / :Animate 2020:
intuos 4 / 6.1.2-5
オンライン
Re: swfファイルの書き出しについて
引用:
詳しい状況を説明したいのですが、頭の中がなかなか整理できなくて・・・。

差し支えなければ、そのFLAを見られるように、どこかのサーバにアップしていただければ、問題の解決は早いかと思いますよ。


----------------
A.e.Suck LASH Animator dynamictoon

yuki_usagi
Åê¹ÆNo.1157
投稿日時: 2003-11-10 21:40
半人前
居住地: 三多摩
投稿: 31
使用環境:
windowsXP、または2000。
FlashMX
Re: swfファイルの書き出しについて
こんばんは、いつもお世話になってます。

MCの読み込み、なんとかできるようになりました。

今回は、「sample.swf」の_rootに配置してあるターゲットMC「chara.mc」に外部ファイル「charactor.swf」を読み込むのですが、ファイルを読み込んだ後も、なんとか動かすことができそうです。

読み込むときに、「sample.swf」のアクションレイヤーにフレームアクションを書いて読み込んでいるのですが、スクリプトを書くときは必ず、ムービーには「onClipEvent(load){ }」と書かなければならないので、フレームにアクションを書き込む場合にも必ず
「this.onEnterFrame = function(){ }」と書かなければいけないと思っていたんです。でも、違うんですね?
「sample.swf」のアクションフレームに、「this.onEnterFrame = function(){ }」とかを書かず、いきなり、

chara_mc.loadMovie("charactor.swf");

と書いたら、ちゃんと読み込んでくれて、十字キーでの操作メソッドも、マウスについてくる動きも、なんとか言うことをきいてくれるようになったんです。マウスイベントについては、まだ手を加えなければなりませんので、でき上がりにはまだ遠い道のりが(汗)
ターゲットパスも難しいし、まだうまく行かない部分が多くあります・・・。

これが、まだよく分からず、これから勉強しなくてはならないです。
引用:
初心者には少しやっかいな処理ですが、[MovieClip.loadMovieで外部ファイルを読込む]に解説とサンプルを上げてありますので、ご参照く


フレームアクション、MovieClipアクション、Buttonアクションのこと、よく分かりました(>_<)
ありがとうございます。


あと、なんだか釈然としないことがあるんです。

釈然としないことその1
読み込むMC(外部ファイル)の基準点もターゲットMCの基準点も左上に設定していたにも関わらず、読み込んだときに基準点が大きくずれ

てしまう、という問題ですが、原因は分からず・・・。
読み込むswfファイルにフレームアクションを設定していたのが一番の原因のような気がしますが、なぜそうなってしまうのでしょう?どな

たか、同じようなご経験はありますか?
読み込む外部ファイルからアクションを消して、ターゲットMCに読み込むと、基準点がずれないのはなぜなんでしょう?

釈然としないことその2
「charactor.swf」は5フレームあって、最初の1フレーム目のキーフレームに「stop();」と記述しているにも関わらず、「sample.swf」

に読み込んで確認すると、今度はなぜか5フレーム目が再生されているんです。
私としては、5フレーム目が再生されていて欲しいので、好都合なのですが・・・理由が分からないと何かのときに対処もできないんじゃ

ないかと思います。理由が何か、お分かりになりますか?
「stop();」と書いてあるアクションフレームを消去しても、読み込まれたときには5フレーム目を再生してるんです。変ですよね?
5フレーム目のフレームラベルは"stop_walk"ですが、このネーミングに何か関係があったりしますか?stopという言葉が入っているからとか?(そんなわけないですよね(汗))
ちなみに、「charactor.swf」は5KBです。

それと、今は、flaファイルをアップできないんです(>_<)
なので、見ていただくことができず・・・分かりづらい説明で申し訳ありません。
近藤泰一
Åê¹ÆNo.1166
投稿日時: 2003-11-11 18:23
常連
居住地: 神奈川県
投稿: 112
使用環境:
Pro Pro
Re: swfファイルの書き出しについて
引用:
読み込むMC(外部ファイル)の基準点もターゲットMCの基準点も左上に設定していたにも関わらず、読み込んだときに基準点が大きくずれてしまう、という問題ですが、原因は分からず・・・。


「基準点がずれてしまう」というのは、どういう状態ですか?
「読み込んだswfが期待していた位置に表示されない」のか、
「読み込んだswfで_x、_y、_xmouse、_ymouseなどを使おうと
したときの基準点がずれている」のか、また別の状況なのかetc.

想像ですが、マウスについていくようなスクリプトを書いている
ということなので、_root._xmouseなどと書いているため、
読み込みにより_rootが変わり、基準点がずれた、
ということは有りませんか?

引用:
そんなわけないですよね(汗)


そんなわけないと思います。
別のところに何かスクリプトが書いてあるとか、
そういうことは無いですか?
実験で書いてみたものを消し忘れているとか。
*自分でそういうミスをしたことがあるので。(滝汗)

いろいろな要因で、おかしくなっているファイルそのものの公開が無理でも、
同じ現象が起こるスクリプトなどを簡単に作って見せるだけでも、
状況がだいぶ明確に伝わりますので、それも一つの方法かもしれませんね。


----------------
Condo Hirokazu
http://www.condo.fromc.jp/flash/

野中文雄
Åê¹ÆNo.1173
投稿日時: 2003-11-11 23:38
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: swfファイルの書き出しについて
心当たりがありましたら、[MovieClipのターゲットパスとプロパティ]ご参照ください。
引用:
Condoさんは書きました:
想像ですが、マウスについていくようなスクリプトを書いている
ということなので、_root._xmouseなどと書いているため、
読み込みにより_rootが変わり、基準点がずれた、
ということは有りませんか?

MovieClip.onEnterFrameメソッドは、onClipEvent (enterFrame)ハンドラと同じです。画面の描画が更新されるたびに(デフォルトの12fpsなら、1秒間に12回)、処理は実行され続けます。

フレームアクションには、とくに必要がないかぎり、イベントハンドラは記述しなくて構いません。
引用:
yuki_usagiさんは書きました:
読み込むときに、「sample.swf」のアクションレイヤーにフレームアクションを書いて読み込んでいるのですが、スクリプトを書くときは必ず、ムービーには「onClipEvent(load){ }」と書かなければならないので、フレームにアクションを書き込む場合にも必ず
「this.onEnterFrame = function(){ }」と書かなければいけないと思っていたんです。でも、違うんですね?

最初の問題は、第5フレームに移動しなかったことでしたね。再生されるようになったということは、ロード待ちの処理を加えられたのですよね? でしたら、第1フレームのstop()実行後にフレーム移動は行われているはずです。Stopの後にGoしたのなら、動いて当然でしょう。
引用:
釈然としないことその2
「charactor.swf」は5フレームあって、最初の1フレーム目のキーフレームに「stop();」と記述しているにも関わらず、「sample.swf」
に読み込んで確認すると、今度はなぜか5フレーム目が再生されているんです。


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

yuki_usagi
Åê¹ÆNo.1201
投稿日時: 2003-11-13 12:29
半人前
居住地: 三多摩
投稿: 31
使用環境:
windowsXP、または2000。
FlashMX
Re: swfファイルの書き出しについて
こんにちは!
返信が遅くなってしまい、申し訳ありません。

引用:
Condoさんは書きました:
想像ですが、マウスについていくようなスクリプトを書いているということなので、_root._xmouseなどと書いているため、読み込みにより_rootが変わり、基準点がずれた、ということは有りませんか?

まさにこれでした!
読み込むムービーを置いていたcaractor.swfで参照していた_rootと、読み込んだ後にsample.swfで参照している_rootの位置は違うってことですよね。sample.swfの_rootを参照しているんでしょうね。
だから、スクリプトをターゲットMCのあるフレームに書いたらうまく行ったんだ・・・。理由が分かって頭がすっきりしました。
ありがとうございます。


引用:
Fumioさんは書きました:
心当たりがありましたら、[MovieClipのターゲットパスとプロパティ]ご参照ください。

一生懸命読んでますが、これがよく分からなくて
_root.xmouseと、this._xmouse・・・
これを理解しようと、次のようなものを作りました。

500×400のステージにMC「maru」を配置。
フレームに

this.onEnterFrame = function() {
maru._x += maru._xmouse;
maru._y += maru._ymouse;
}

と記述して、マウスにぴったりついてくるようにしてあります。
そして、MCに次のように記述。

on (release) {
trace(this._ymouse);
trace(this._y);
trace(_root._ymouse);
trace(_root._y);

trace(this._xmouse);
trace(this._x);
trace(_root._xmouse);
trace(_root._x);

}

そして、各々の値を出します。
すると次のようになりました。

this._ymouse = 0
this._y =106.35
_root._ymouse =106.15
_root._y = 0

this._xmouse =0
this._x =186.95
_root._xmouse =187.05
_root._x = 0

this._ymouseは、MCから見た_ymouseの値、this._yは_rootから見たMCのy座標、_root._ymouseは_rootから見た_ymouseの位置・・・。
で、_root._yは?なぜ0になるのでしょうか?MCから見たMCのy座標ですか?

なんだか、こんがらがってしまって。理解力が足りないですね(;;)
ここが理解できないと、MCをマウスで操ることができないので、ちゃんとやっておかないと。

引用:
Fumioさんは書きました:
最初の問題は、第5フレームに移動しなかったことでしたね。再生されるようになったということは、ロード待ちの処理を加えられたのですよね? でしたら、第1フレームのstop()実行後にフレーム移動は行われているはずです。Stopの後にGoしたのなら、動いて当然でしょう。

実は、何の処理もしてないんです。
それなのに、第5フレームに移動してストップしているんです。
試しに、第5フレームに記述してあったフレームラベル「stop_walk」を「stand」に書き換えると第1フレームでストップするようになりました。何なんでしょう?
ロード待ちの処理を設定してみたんですが、そうしてもやっぱり第1フレームがずっと表示され、十字キー等で操作すると他のフレームにジャンプする、という状況になってしまっています。
ロード待ちの処理は、もう少し勉強してやってみます。
野中文雄
Åê¹ÆNo.1207
投稿日時: 2003-11-13 14:24
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: swfファイルの書き出しについて
gingaさんが、Flashの座標空間について、解説されています。
引用:
yuki_usagiさんは書きました:
一生懸命読んでますが、これがよく分からなくて

地球(の中心)から見たyuki_usagiさんの位置、太陽系(の中心)から見た地球の位置、銀河系(の中心)から見た太陽系の位置、...をすべて足していくと(三次元ベクトル計算になりますが)、宇宙から見たyuki_usagiさんの位置が計算できます。

そのとき宇宙の中心は、原点0とするしかありませんよね。その0というのは、yuki_usagiさんから見た位置...ではないでしょう。
引用:
this._ymouseは、MCから見た_ymouseの値、this._yは_rootから見たMCのy座標、_root._ymouseは_rootから見た_ymouseの位置・・・。

で、_root._yは?なぜ0になるのでしょうか?MCから見たMCのy座標ですか?

確認は、どのようにされていますか? [ムービープレビュー]ですか、[パブリッシュ]ですか。あるいはサーバーにアップしましたか?

何もしなければ、フレームラベルを書替えても、動作は変わらないはずです。また、キーを押したからと行って、フレームも移動しません。どこかに、何かのスクリプトが残っているように思われます。
引用:
実は、何の処理もしてないんです。

それなのに、第5フレームに移動してストップしているんです。

試しに、第5フレームに記述してあったフレームラベル「stop_walk」を「stand」に書き換えると第1フレームでストップするようになりました。何なんでしょう?

ロード待ちの処理を設定してみたんですが、そうしてもやっぱり第1フレームがずっと表示され、十字キー等で操作すると他のフレームにジャンプする、という状況になってしまっています。


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

ゲスト
Åê¹ÆNo.1221
投稿日時: 2003-11-13 20:59
Re: swfファイルの書き出しについて
どうも、こんにちわ

>_root._yは?なぜ0になるのでしょうか?
yuki_usagiさんの言い方を借りると、
「this._ymouseは、MCから見た_ymouseの値、this._yは_rootから見たMCのy座標、_root._ymouseは_rootから見た_ymouseの位置、で、_root._yは
_rootから見た_rootのy座標」
となるでしょうか。(厳密にはアレですが...)

trace(this._ymouse);
trace(this._y);
trace(_root._ymouse);
trace(_root._y);
のthisを書き換えて、
trace(_root.maru._ymouse);
trace(_root.maru._y);
trace(_root._ymouse);
trace(_root._y);
として考えれば、もう少しわかりやすいかも。
yuki_usagi
Åê¹ÆNo.1409
投稿日時: 2003-11-20 0:11
半人前
居住地: 三多摩
投稿: 31
使用環境:
windowsXP、または2000。
FlashMX
Re: swfファイルの書き出しについて
こんばんは、いつもお世話になっております。

なかなか時間がなくて、書き込みができません。
問題は解決しないまま、新たな問題も次々に発生して・・・
近いうちにまた現状など書かせていただきます。
返事ができなくて、本当に失礼しております。
すいません!(><)
yuki_usagi
Åê¹ÆNo.1720
投稿日時: 2003-11-28 11:10
半人前
居住地: 三多摩
投稿: 31
使用環境:
windowsXP、または2000。
FlashMX
Re: swfファイルの書き出しについて
おはようございます。
間があいてしまいましたが、書かせていただきます。

「_root._yはなぜ0になるのでしょうか?」
と書きましたが、これは理解できました・・・お恥ずかしい(><)
gingaさんの書かれているFlashの座標空間についての解説と、kitaさんの書いてくださった考え方で、冷静に考えてみまして、理解できました。すべての原点ですもんね・・・_root._y。

引用:
地球(の中心)から見たyuki_usagiさんの位置、太陽系(の中心)から見た地球の位置、銀河系(の中心)から見た太陽系の位置、...をすべて足していくと(三次元ベクトル計算になりますが)、宇宙から見たyuki_usagiさんの位置が計算できます。

実は、これはよく分からないです(汗)
三次元ベクトル計算というのも分からない(><)
この先も座標には苦しめられそうな気がします・・・。

引用:
何もしなければ、フレームラベルを書替えても、動作は変わらないはずです。また、キーを押したからと行って、フレームも移動しません。どこかに、何かのスクリプトが残っているように思われます。

フレームが勝手に第5フレームに移動してストップしていたこの問題も解決しました。原因も分かりました。
やっぱりスクリプトが残っていた、というか、そういう指定になっていたんです。
読み込み元にフレームアクションを書いて、読み込んだMCを操作しています。マウスをクリックしている間マウスを追う、十字キーで上下左右に移動する、というスクリプトです。
十字キー操作のスクリプトの中に、「何もしないときは第5フレームに移動してstop」というスクリプトが入っていまして、これが効いているんだと思います。原因が分かってスッキリしました。分かってしまうと「な?んだ?」という感じですね(笑)

原因が分かってこの件に関しては問題ないのですが、一応きちんとすべてのフレームの読み込みを待つ処理をしておこうと思います。
この処理は、MCアクションとして読み込み元のダミーMCに書くようにしないと効かないですか?読み込み元にフレームアクションとして書いたら効かないようなので・・・。

ひとつ疑問なのですが、ダミーMCを配置してswfファイルを読み込んだ場合、読み込み元のフレームでダミーMCのインスタンス名を指定してon(rollOver){ }やon(release){ }などでボタンとして機能させようとすると、どうも操作できないようなのですが、このようなことは不可能なのでしょうか?
読み込むswfのフレーム、もしくはダミーMCにスクリプトを書くとうまくいくので、ここに書くしかないのかな、と思っていますが・・・。
« 1 (2) 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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