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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     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などででぶち込んでやるほうが速いと思います。


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

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が、ちょうど↑と同じ配列構造にしなきゃいけないので、説明してあったと思います。多分、キーじゃないかと。


----------------
(C)SalvoxStudioStation

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にも適用できると思います。



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

空野大二郎
Åê¹Æ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とかあるのでぎょっとしていましたが、何が問題に
なっているのか少し分かりました。

 「文字列+変数の中身」などで変数を定義・参照するときは、
配列アクセス演算子[]を使います。

<例>
//_rootのフレームスクリプトに記述
tes1 = "test";
i = 1;
this["tes" + i] = "Change ok!";
trace (tes1);
 
_root.tes2 = "ver2";
j = 2;
_root["tes" + j] = "Change ver2 ok!";
trace(_root.tes2);


引用:
onokunさんは書きました:
i = 1;
test + i = "abc";

とか記述して試してみたのですが、Flash側でうまくいきません。
この記述じゃいけないみたいです…

ヘルプなど見たり、いろいろ記述例など探したりしてみたのですが、
変数 + 数値という形式の変数の宣言の正しいやり方がよくわかりません。


----------------
空野 大二郎 アニメーター作家
桜の道

onokun
Åê¹ÆNo.13689
投稿日時: 2004-12-28 10:23
新米
居住地:
投稿: 3
使用環境:
WinXP,Flash MX2004
Re: VB6からFlash側の配列を読み書きする方法
なるほど、配列アクセス演算子ですか。

これならば、VisualBasic側からも<例>の"tes1"の中身の"Change ok!"をFlash.ocxのGetVariableメソッドを使用して取得することが出来ました。

ありがとうございました。

引用:

空野大二郎さんは書きました:
<例>
//_rootのフレームスクリプトに記述
tes1 = "test";
i = 1;
this["tes" + i] = "Change ok!";
trace (tes1);
 
_root.tes2 = "ver2";
j = 2;
_root["tes" + j] = "Change ver2 ok!";
trace(_root.tes2);

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

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