メイン 迷える子羊の部屋【初心者専用】 VB6からFlash側の配列を読み書きする方法 | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
onokun | Åê¹ÆNo.13568 投稿日時: 2004-12-22 10:22 |
新米 居住地: 投稿: 3
使用環境:
WinXP,Flash MX2004 |
VB6からFlash側の配列を読み書きする方法 はじめて投稿させていただきます。
WindowsXP、FlashMX2004の環境において、VisualBasic6からFlash.OCX使用してFlash上の配列変数の参照/設定を行おうとしているのですがうまくいきません。 通常のFlashの変数の場合、VB側から[Flashのオブジェクト名].GetVariable("変数名")、及び、[Flashのオブジェクト名].SetVariable("変数名","セットする値")で、値の取得とセットが行えますが、 Flash側で、 test = new Array(5); test[0] = "0"; test[1] = "1"; …省略… test[4] = "4"; test[5] = "5"; などと配列を定義してみた場合、 VB側からShockwaveFlash1.GetVariable("test[1]")とやってもエラーとなります。 ShockwaveFlash1.GetVariable("test")とやると、 0,1,2,3,4,5という文字列が返されます。 また、Flash側への配列変数へのセットの方法も良くわかりません。 ShockwaveFlash1.SetVariable("test", "5,4,3,2,1,0")とやっても、配列の各要素には反映されません。 Flash側で定義された配列変数の値をVB側から各配列要素単位でやり取りする方法は無いのでしょうか? Flashでの配列の取り扱いがまだ良くわかっておりませんもので、FlashとVB間での配列のやり取りの方法がわからなくて困っております。 宜しくお願いいたします。 |
Fla4man | Åê¹ÆNo.13578 投稿日時: 2004-12-22 12:25 |
職人 居住地: かまくら 投稿: 517
使用環境:
WinMe,Win2000, Flash4,アズさん,大仏、delphi |
Re: VB6からFlash側の配列を読み書きする方法 現状できないものとわりきって
変数を「名前」+「数字」の形にしてアクセスするか (Flashがわは test + i の構文を変数 test1 test2 と認識する。) 配列番号を任意の変数にセットして callframeで関数を呼び Fscommandで値をホストに渡す という方法を使うと他の直接通信未対応機能にも対応できますが 基本的にホストプログラムがあるならば Flashがわには画面推移関連以外のスクリプトは極力避けるのが 正しいやり方だとおもいます。 一次配列の場合は配列オブジェクトを使う方法よりも 変数 + 数値 のほうがよいように思います。 配列を書き込む場合には動的にSWFファイルかテキストファイルを生成して 直接loadmovieなどででぶち込んでやるほうが速いと思います。
|
salvox | Åê¹ÆNo.13668 投稿日時: 2004-12-26 20:01 |
常連 居住地: 東京都 投稿: 73
使用環境:
Windows2000 FlashMX テキストエディター:EmEditor |
Re: VB6からFlash側の配列を読み書きする方法 ど?も、salvoxです。
SetVariable("test", "5,4,3,2,1,0") ↑この件、気になったので調べてみました。 ってか、一応VB使ってるプログラマーなら調べようよ… 。 ってか、本当は関数リファレンスを探したかったのですが…。 なんかちゃっちーのしかなかった。 で、調べた結果は、 SetVariableで、配列オブジェクトは渡せんらしい…。 Flash側でwatch()を使って、test = '5,4,3,2,1,0'を分割して 設定し直さなきゃいかんそうな…。なんか面倒だな?。 で、ふと思ったのですが、 変数を文字列で指定するところとかは、 以前(今でもあるが非推奨)Flashにあった eval() に似てるので もしかしたら、それで実装する配列変数の記事が参考になるかもしれません。たしか、マクロメディアのサイトにあったと思います。 FlashLite1.1が、ちょうど↑と同じ配列構造にしなきゃいけないので、説明してあったと思います。多分、キーじゃないかと。
|
onokun | Åê¹ÆNo.13685 投稿日時: 2004-12-27 18:21 |
新米 居住地: 投稿: 3
使用環境:
WinXP,Flash MX2004 |
Re: VB6からFlash側の配列を読み書きする方法 たしかに、test + iとかで変数test1などが定義できるのであれば、一次配列に関しては、VBからでも"test1"とかで参照すれば良いわけで、提示いただいた方法でできそうですね。
配列要素数がはじめから少なければ、test2…とかそのまま宣言しちゃいますし。 それで、FlashMXで試してみたのですが、 i = 1; test + i = "abc"; とか記述して試してみたのですが、Flash側でうまくいきません。 この記述じゃいけないみたいです… ヘルプなど見たり、いろいろ記述例など探したりしてみたのですが、 変数 + 数値という形式の変数の宣言の正しいやり方がよくわかりません。 Flashでのtest + iのような変数 + 数値の変数宣言の方法を教えていただけないでしょうか? うーん、FlashをVBやVCなどから使用する為のActiveX「Flash.ocx」に関して、使用方法などの情報を探してもあまり詳しい話が見つけられないのですけど、いったいどこにあるのでしょう。 探し方がわるいのでしょうか・・・ VBからのGetVariableがString型しか取り扱えないから配列オブジェクト自体を取り扱えなさそうなのはわかるのですけど、根本的な問題のVBとFlashでのやり取りの部分が見出せないのですよね。 |
Fla4man | Åê¹ÆNo.13686 投稿日時: 2004-12-27 18:38 |
職人 居住地: かまくら 投稿: 517
使用環境:
WinMe,Win2000, Flash4,アズさん,大仏、delphi |
Re: VB6からFlash側の配列を読み書きする方法 test + iというのが 値の計算になっているんじゃないですか?
私はFlash4 or flasmな人なので今の記述はよくわからないのですが Flash4の場合 testが未定義の場合 test + i だとtest の値と iの値の合計 "test" & i だと文字列変数としてつかえます。 MXの場合 "test" +i = "abc" で多分いいんだと思いますが確認できません。 マニュアルなどで「文字列の加算」などを調べて相当の形にすればよいと思われます。 無論testに別の文字列を入れることで任意の配列変数にも出来るし この手の原理はgoto labelとかcall frameにも適用できると思います。
|
空野大二郎 | Åê¹ÆNo.13687 投稿日時: 2004-12-27 19:34 |
職人 居住地: 愛知 投稿: 389
使用環境:
XP:Home FlashMX IE6.0+FlashPlayer7,0,19 CPU:Pentium4 2.26GHz メモリ:1,024MB |
Re: VB6からFlash側の配列を読み書きする方法 まいど。
VB6とかあるのでぎょっとしていましたが、何が問題に なっているのか少し分かりました。 「文字列+変数の中身」などで変数を定義・参照するときは、 配列アクセス演算子[]を使います。 <例>
引用: onokunさんは書きました:
|
onokun | Åê¹ÆNo.13689 投稿日時: 2004-12-28 10:23 |
新米 居住地: 投稿: 3
使用環境:
WinXP,Flash MX2004 |
Re: VB6からFlash側の配列を読み書きする方法 なるほど、配列アクセス演算子ですか。
これならば、VisualBasic側からも<例>の"tes1"の中身の"Change ok!"をFlash.ocxのGetVariableメソッドを使用して取得することが出来ました。 ありがとうございました。 引用:
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |