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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     HTMLからのFlash内のメソッド呼び出しについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
rodem
Åê¹ÆNo.12577
投稿日時: 2004-11-22 23:37
新米
居住地:
投稿: 3
使用環境:
WinXP,Flash MX2004
HTMLからのFlash内のメソッド呼び出しについて
初めて投稿します。Flash初心者です。

HTMLからFlash内のメソッド?(アクションスクリプト?)を
呼び出すことは可能でしょうか?

例えば、Flash以外の部分に配置されたボタンがクリックされたときに

(Flashオブジェクト).onClick();

みたいにflash内のアクションスクリプトを呼び出し、表示内容を更新することは可能でしょうか?

ご存知の方がおられましたら、ご教授ください。
よろしくお願いいたします。

野中文雄
Åê¹ÆNo.12589
投稿日時: 2004-11-23 12:57
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: HTMLからのFlash内のメソッド呼び出しについて
ご使用の環境は、プロフィールに記入しましょう。
引用:
rodemさんは書きました:
初めて投稿します。Flash初心者です。

「HTMLから」ということは、JavaScrpitはお使いになれるということでしょうか?

電話やメールで道を尋ねる際には、目的地だけでなく、ご自分がどこにいるのかあるいはどこまでは行けるのかという情報を必ず伝えられるはずです。同じように、ご自分の現段階の知識や理解についてもご説明が必要です(ちなみに、「初心者」というのはご説明にはなりません。→【初心者なので?】)。
引用:
HTMLからFlash内のメソッド?(アクションスクリプト?)を
呼び出すことは可能でしょうか?

JavaScriptやHTMLについての基本的な知識をおもちという前提で、参考資料を掲げます。日本語の情報は、古いものばかりのようです。

Macromedia Flash TechNotes:
An example of communication between JavaScript and Macromedia Flash」(2003年1月6日更新)
Different approaches to setting variables in a Flash movie」(2000年2月8日作成)
Flash Methods」(Flash Player 5)
Using JavaScript with Flash Player」(Flash Player 2)

Flash4で新しくサポートされたスクリプトメソッド
Shockwave Flash のメソッド」(Flash Player 2)
JavaScript でムービーを制御する」(Flash Player 2)

Flashのfunction(関数)を、直接呼出すことはできないと思います。
引用:
例えば、Flash以外の部分に配置されたボタンがクリックされたときに

(Flashオブジェクト).onClick();

みたいにflash内のアクションスクリプトを呼び出し、表示内容を更新することは可能でしょうか?


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

rodem
Åê¹ÆNo.12596
投稿日時: 2004-11-23 15:21
新米
居住地:
投稿: 3
使用環境:
WinXP,Flash MX2004
Re: HTMLからのFlash内のメソッド呼び出しについて
引用:

野中文雄さんは書きました:
ご使用の環境は、プロフィールに記入しましょう。


失礼いたしました。私の環境は、WindowsXP SP2, Flash MX 2004です。

引用:

「HTMLから」ということは、JavaScrpitはお使いになれるということでしょうか?

はい。基本的なJavaScriptやHTMLの知識はございます。

引用:
HTMLからFlash内のメソッド?(アクションスクリプト?)を
呼び出すことは可能でしょうか?
JavaScriptやHTMLについての基本的な知識をおもちという前提で、参考資料を掲げます。日本語の情報は、古いものばかりのようです。

Macromedia Flash TechNotes:

(省略)

参考資料に挙げていただいたものの中で、以下のものが私の実現したいことに近いです。

引用:

この中では、HTMLのボタンからJavaScipt経由でFlashのPlay()やStop()を呼び出しているように思います。

しかし、野中様の結論として

引用:

Flashのfunction(関数)を、直接呼出すことはできないと思います。


というのは、なぜなのでしょうか?ご解説いただけませんでしょうか?

あと、ご指摘いただきましたように
引用:

電話やメールで道を尋ねる際には、目的地だけでなく、ご自分がどこにいるのかあるいはどこまでは行けるのかという情報を必ず伝えられるはずです。同じように、ご自分の現段階の知識や理解についてもご説明が必要です

まさにそのとおりだと思いますので、私の実現したいこと、試してみたことを詳細に書きます。

実現したいことは、HTML内に複数のボタンを設け、ボタンが押されるたびにFlash内のTextFieldの文字列がボタンに応じて更新されるようなものを作りたいと考えております。

そのために、まず、Flash側で、アクションスクリプトを記述するところで、

function show(){
objColor = new Color(this);
objColor.setRGB(0x003366);
// this.loadVariables("Messages.txt",0);
}

というようなダミーの関数を用意し、パブリッシュしました。
そしてパブリッシュしたHTMLにボタンとJavaScriptを追加しました。

<script language="JavaScript">
function test(){
Message1.show();
// alert("test");
}
</script>
<body bgcolor="#ffffff">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="400" height="15" name ="Message1" id="Message" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="Message.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="Message.swf" quality="high" bgcolor="#ffffff" width="400" height="15" name="Message" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
<td width="48" bgcolor="#FFFFFF"><a href="java script:;" onMouseOver="test()"><img src="./regist_on.gif" width="48" height="41" name="wizard" border="0"></a></td>

私としては、マウスオーバーした際に、JavaScriptまでは到達していることは確認しているのですが、
Message1.show()という形式でアクションスクリプトを呼び出しているつもりが反応がありませんでした。

これは、記述の方法が悪いのか、そもそも自分で実装したメソッドは、外部から呼び出せないのかどちらなのでしょうか?

ご教授お願いいたします。

野中文雄
Åê¹ÆNo.12599
投稿日時: 2004-11-23 17:22
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: HTMLからのFlash内のメソッド呼び出しについて
状況は、ほぼ把握できました。

Play()やStop()は、FlashメソッドとしてJavaScriptに対して提供されたものです。Flashメソッドに含まれない関数・メソッドや、ユーザー定義関数は、JavaScriptから呼出すことはできません。
引用:
rodemさんは書きました:
この中では、HTMLのボタンからJavaScipt経由でFlashのPlay()やStop()を呼び出しているように思います。

しかし、野中様の結論として
引用:

Flashのfunction(関数)を、直接呼出すことはできないと思います。

というのは、なぜなのでしょうか?ご解説いただけませんでしょうか?

rodemさんの実現されたいことは、まさにユーザー定義関数をJavaScriptから呼出すことだと理解します。

FlashメソッドはFlash Player 2で導入され、現在でも関数の実装されないFlash 4のレベルのようです。ここでは、あくまでFlashメソッドを使って、処理を考えなければなりません。
引用:
実現したいことは、HTML内に複数のボタンを設け、ボタンが押されるたびにFlash内のTextFieldの文字列がボタンに応じて更新されるようなものを作りたいと考えております。

そのために、まず、Flash側で、アクションスクリプトを記述するところで、
function show(){

...[中略]...
というようなダミーの関数を用意し、パブリッシュしました。
そしてパブリッシュしたHTMLにボタンとJavaScriptを追加しました。
<script language="JavaScript">
function test(){
    Message1.show();

...[中略]...
私としては、マウスオーバーした際に、JavaScriptまでは到達していることは確認しているのですが、
Message1.show()という形式でアクションスクリプトを呼び出しているつもりが反応がありませんでした。

関数の代用として利用できるメソッドは、TCallFrameまたはTCallLabelくらいしかないでしょう。このメソッドは、Flash Player 4互換のcall()アクションに相当します(Flash Player 5以降では非推奨)。

指定したフレームアクションを、異なるフレームから再生ヘッドを移動させずに実行するアクションです。引数が必要であれば、変数を設定するsetVariableメソッドと組合わせて、工夫する必要があります。

参考:
callFrame」(Directorから同値のコマンドcallFrameを使って処理を行うサンプル)


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

rodem
Åê¹ÆNo.12607
投稿日時: 2004-11-24 1:54
新米
居住地:
投稿: 3
使用環境:
WinXP,Flash MX2004
Re: HTMLからのFlash内のメソッド呼び出しについて
ご返信ありがとうございました。

引用:
Play()やStop()は、FlashメソッドとしてJavaScriptに対して提供されたものです。Flashメソッドに含まれない関数・メソッドや、ユーザー定義関数は、JavaScriptから呼出すことはできません。


よくわかりました。ご回答ありがとうございました。

Fla4man
Åê¹ÆNo.12616
投稿日時: 2004-11-24 12:00
職人
居住地: かまくら
投稿: 517
使用環境:
WinMe,Win2000,
Flash4,アズさん,大仏、delphi
Re: HTMLからのFlash内のメソッド呼び出しについて
ちょっと疑問なんですがcallとか変数トリガーのほかに
Flash5以降の前提ならば
gotoと onenterframeの組み合わせではだめなんでしょうか?
Flash4でもcallよりも普通のフレーム内関数呼んで停止させるほうが使いやすいようにも思います。


----------------
通常のハンドル名:×○○× ねた回収モードに突入 現在1/100

関たかまさ
Åê¹ÆNo.12619
投稿日時: 2004-11-24 13:38
常連
居住地: 埼玉
投稿: 61
使用環境:
WinXP Pro(sp1)
FlashMX 2004 Pro 7.2
Re: HTMLからのFlash内のメソッド呼び出しについて
こんにちわ

僕は直接のメソッドコールではないですが、


<JavaScript側>
//objはMovieオブジェクト
//sendStrは渡したい文字列
obj.SetVariable('exFunc.call',sendStr);

<Flash側>
exFunc = System["externalFunction"] = new Object();
exFunc.onWatch = function(prop,oldVal,newVal){
  //ここで処理
}
exFunc.watch("call", exFunc.onWatch);

こんな実装で実現しています。
メリットとしては、(実際はそうではないですが)ほぼメソッドをコールしているのと同じノリで使えます。
私は上記で言う「sendStr」にパラメータや引数をデリミターを付加した文字列にして、Flash側にあるFunctionで振り分けして処理を書いています。

ご参考まで
ゲスト
Åê¹ÆNo.12669
投稿日時: 2004-11-25 13:37
Re: HTMLからのFlash内のメソッド呼び出しについて
なるほど?
SetVariable()で値が設定される変数を watchメソッドで監視して、そのコールバック関数に処理を書いておくというわけですね。
こう書けばFlash側の処理をすっきりと呼び出せますね。目からウロコでした。
サンプルを作って試してみました。たぶん、rodemさんがやりたい事ってこんな感じじゃないでしょうか。
(Objectを生成せず、直接MovieClipのプロパティをwatchメソッドで監視させました。)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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