ActionScript 誰かが物凄い勢いで解答するスレ 15

このエントリーをはてなブックマークに追加
952Now_loading...774KB:2007/04/29(日) 19:08:37 ID:28i4LfjI
Action ScriptやFLASHの知識はあまりないですが、
JavaScriptやActiveXコントロールのプログラミングには多少知識があります。

今あるワンクリック詐欺サイトについて調べているのですが
ここでswfが使われています

Action Scriptでは閲覧側のコンピュータに対する破壊活動を
どの程度行う事が可能なのでしょうか?

例えばファイルを消したり、
メール内容を勝手に送信したりできるものなんでしょうか?
953Now_loading...774KB:2007/04/29(日) 20:15:34 ID:VzBrSgkt
>>952
当然出来ない。
但し、Flash Player自体に脆弱性があれば、それはまた別の話。
954Now_loading...774KB:2007/04/29(日) 22:03:03 ID:lJkUreBZ
>>952

ないと思うが、それだけではなんともいえん。
そのサイトのURL張れんの?
955Now_loading...774KB:2007/04/29(日) 22:07:37 ID:Auu+zRva
以前playerの脆弱性が指摘されたけど今はしらん
シマンテックとかセキュリティサイトと
adobeサイトみて何もなければいいんじゃね?
956Now_loading...774KB:2007/04/30(月) 03:20:41 ID:rd00c7kp
関数内での変数について質問です。
今CSVファイルをLoadVarsで読み込んで表示させようとしています。
無事にファイルを二次元配列に収める事には成功したのは良いので
すが、関数内でローカル変数として読み込んでしまったため、関数の
外から配列を呼び出せずに困っています。
そこで今グローバル変数とローカル変数について勉強しているのですが、
読み込む配列を宣言する際に例えば_global.myDataとして宣言すれ
ば、その配列は以降は関数外でも呼び出せるという事なのでしょうか?

なかなか思うような結果が得られず悩んでおります。どなたかご教授ください。
957Now_loading...774KB:2007/04/30(月) 04:53:25 ID:wOt08OLN
>>956
var table = new Array();


・ table の中に2次元配列を作る処理


// ローカル変数は関数が終了した瞬間に消滅してしまうので、
// グローバル変数にコピーしておく
_global.globalTable = table;

最後に、ローカル変数tableをグローバル変数globalTableにコピーして
あげればokかと。
コピーした直後から、作った2次元配列はflash内のどの関数内からでも、
呼び出すことが可能になります。

> 思うような結果が得られず
trace(table); とかで、どこまで正常に動いていて、どこから失敗しているか
見直してみるとよいです。
958956:2007/04/30(月) 07:14:47 ID:rd00c7kp
>>957
素早いレスありがとうございます!
なるほど、消える前に別のグローバル変数に代入すれば良いのですね。
参考にして修正をしてみたのですが、仰る通りにtraceを使って点検をした
のですが、今回お聞きした部分以前に作動してないようでした。

my_lv = new LoadVars();
my_lv.onData = function(str) {
trace("Start.OK");
if (str != undefined) {
trace("read.OK");
var myData = str.split("\n").join("").split("\r");
for (var i = 0; i < myData.length; i++){
myData[i] = myData[i].split(",");
}
}
_global.txtData = myData;
}
my_lv.load("test.txt");
trace(txtData[0][0]);

このように組んだのですが、最後の行の出力がundefinedになるだけでな
く、関数内のtrace部分に関しては何も出力されませんでした。
loadメソッド自体が行われていない、という事なのでしょうか?
959あほ初心者:2007/04/30(月) 07:28:25 ID:6U9m8zgY
環境は標準です。

やりたいのは、ダイナミックテキスト表示を
メインムービーの中のクリップ内のダイナミックテキストエリアに表示させたいだけですが出来ません。。

ヘルプのサンプルを下記のようにいじってメインムービー1フレに貼りました。

ta.txt内にta=testと記述し、mc1クリップ内のta1エリアにtestと表示させようとしましたが
unable…すら表示されずtrace(features_lv.ta)してもundifinedです。
そもそもon Textファンクション自体が働いてないようなんですが、何故でしょうか。

var features_lv:LoadVars = new LoadVars();
features_lv.onLoad = onText;
features_lv.load("ta.txt");
function onText(success:Boolean) {
if (success) {
this.mc1.ta1.text = features_lv.ta;
} else {
this.mc1.ta1.text = "unable to load text file.";
}
}
960Now_loading...774KB:2007/04/30(月) 08:07:02 ID:hl0ZJOwZ
>>958
何で成功時のみの処理なの?意味無いじゃん。失敗したときの処理は?
>>959
テキストフィールドのパスを確認。thisが何を指しているのか確認。
961Now_loading...774KB:2007/04/30(月) 08:20:44 ID:5+2UyBMB
サウンドオブジェクトでループ回数を無限にするにはどうしたら良いんでしょうか

_root.hoge.start(0,???);

???の部分がわかりません。。
962959:2007/04/30(月) 08:35:59 ID:0/5H6yiY
>960
回答ありがとうございます。
this.mc.ta1.text の部分、.text以前は"ターゲットパスの挿入"ダイアログで行っているので、パスはあっているかと思っています。

asはメインムービーに貼っているので、
thisはメインムービーですよね。
this.mc1.ta1でメインムービー内>mc1インスタンス>ta1テキストエリアとなるはずですが。。

上記の理解が間違っているのでしょうか。
それとも、mc1内での変数宣言などが必要になるのでしょうか。。

メインムービーへのテキスト表示は出来る(サンプルまんまだから当たり前か)だけに
なにが障害かわからない。。
963Now_loading...774KB:2007/04/30(月) 08:58:54 ID:hl0ZJOwZ
>>962
trace(this);で確認
964Now_loading...774KB:2007/04/30(月) 09:12:54 ID:ayOv5W0u
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7)

複数のテキストをXMLで読み込むASで質問です。

読み込み後の文書データ名をmotoとして、フレーム内のボタンアクションを
以下のように書きました。

on (release) {
moto = ""; //motoの初期設定
for (id=0; id<2; id++) {
txtXml.load("bun_"+id+".txt"); //bun_0.txtとbun_1.txtを読み込む
txtXml = new XML();
txtXml.onData = function(s) {
tmp1 = s.split("\n").join(""); //不要な改行を消す
moto = moto+tmp1; //motoに追加
};
}
trace("moto= "+moto.length); //読み込みのチェック
}

この場合、traceで moto= 0 となり、読み込みに失敗しています。
どうしたら良いでしょうか?
965Now_loading...774KB:2007/04/30(月) 09:24:20 ID:hl0ZJOwZ
>>964
loadできるのはxmlインスタンスを作ってからでしょ
966964:2007/04/30(月) 09:58:27 ID:ayOv5W0u
>>965
有り難うございます。
txtXml = new XML(); をフレームアクションとして、プレビュー起動時に
xmlインスタンスを作成するようにしました。しかし、これでも出来ません。
どうしたものでしょうか?
967Now_loading...774KB:2007/04/30(月) 10:02:42 ID:hl0ZJOwZ
>>966
onDataの引数sは何のためだと思うの?
ループではなく1つだけの時は動くの?
まずは単純なものから始めてみる
968964:2007/04/30(月) 11:07:04 ID:ayOv5W0u
>>967
お世話になります。解決出来ました。
ヘルプでonDataの仕組みを見ました。これはロード完了後初めて実行される
ハンドラなので、forの外に trace("moto= "+moto.length) を置いても、実質
forの処理を飛ばしてtraceされるため、0が表示されると解釈しました。

パラメーター『s』は、ヘルプの基本式 onData = function(src:String) {} と
ヘルプの記述「ダウンロード中にエラーが発生しなければ、サーバーからダウ
ンロードされた XML テキストを含むストリングになります。」から、XML テキスト
を含むストリング、つまり、bun_0.txtとbun_1.txt と解しました。

実行したASは以下の通りです。
ボタンA
on (release) {
moto = "";
for (id=0; id<2; id++) {
txtXml.load("bun_"+id+".txt");
txtXml.onData = function(s) {
tmp1 = s.split("\n").join("");
moto = moto+tmp1;
trace("moto= "+moto);
//
};
trace("moto長さ= "+moto.length); //実質無意味ですが書いています
}
}

ボタンB
on (release) {
trace("moto all= "+moto.length); //全部の長さ
}
別のボタンBで見ると目的の長さが得られました。
969959:2007/04/30(月) 13:42:07 ID:RLzUTBnn
>963
何度もすみません。

ASはメインムービ貼ってるのでtrace(that);の結果は_level0です。

メインムービーに貼ったAS内の
this.mc1.ta1.text =
では、子インスタンス内のta1ダイナミックテキストエリアに変数を渡せないのか
or
それ以前の変数宣言や関数呼び出しの段階から、this.mc1.ta1といった対象オブジェクトの指定が必要なのか

が詳細な質問内容です。
970Now_loading...774KB:2007/04/30(月) 14:15:50 ID:hl0ZJOwZ
>>969
this.mc1.ta1.text=
の前行にtrace(this);
971Now_loading...774KB:2007/04/30(月) 15:00:54 ID:OMFnAlZe
>>969
> ターゲットパスの挿入"ダイアログで行っているので、パスはあっているかと思っています

これが間違い。
「ターゲットパスの挿入」は、あくまでそれが書かれているフレームのタイムラインを
基準にしている。
しかし、スコープが変わればthisが参照するものは変わる。
この部分は「ターゲットパスの挿入」ではフォローされない。

thisが何を指しているのかは、散々言われているようにtrace()をすることで確認できる。
>>970の通りにやってthisがさしているものが_level0でないなら、そこに
mc1.ta1というものは存在しない。
972956:2007/04/30(月) 16:38:38 ID:rd00c7kp
>>960
確かに、成功時だけで失敗時には意味がないものになってますね…ありがとうございます!
そこでプログラムを修正した後読み込みに挑んだのですが
my_lv.onData("1,2,3");
と直接データを与えると正常に作動するのですが
my_lv.load("test.txt");
とするとonDataメソッドが呼び出されないようなのです。
他の所からonDataメソッドを呼び出す必要があるのでしょうか?
973Now_loading...774KB:2007/04/30(月) 17:17:11 ID:FwczyuKp
どーせloadの後ろにondata書いてるんじゃねーの?
974Now_loading...774KB:2007/04/30(月) 17:46:32 ID:YZ6q179n
ひょっとして、my_lvを関数内のローカル変数として作って
呼び出し終わる前に、ガベッジコレクションで消えたりしてないか?
975Now_loading...774KB:2007/04/30(月) 21:01:31 ID:Jvrjpvu6
>>972
なんのために関数内でmyDataを宣言してるの?
はじめから_globalに入れればいいと思うんだけど。
onDataでは無くonLoadにしてみたら?

あと今回の問題に関係ないけど、配列は単純に=ではコピーできない。
_global.txtData = myData;
の後に_global.txtDataの中身を変えたらmyDataの中身も変わってしまう。
976Now_loading...774KB:2007/04/30(月) 21:58:14 ID:vktR1/BO
>>975

いや、そこらへんは >>972 はなにも間違ったことしてない。
myDataをローカル変数で宣言してるのは、CSVをパースするための一時的な処理だし、
ローカル変数だから _global.txtData = myData; とすることにも間違いはない。
むしろ、myData.concat() とかここでやるのは冗長。

あとonLoadはCSV解析するには使えないから、onDataでいいんだよ。
977Now_loading...774KB:2007/04/30(月) 22:21:31 ID:zMpVFz10
pic01_mc 〜 pic03_mcを押した時同じ処理を関数で行いたいのですが
実際関数中にそれぞれmcを指定するにはどうすれば良いのでしょうか?
引数をnで持ってきて、pic01_mcに10を代入したいとしたら
"pic0" + n + "_mc" = 10;
で良いのでしょうか、これでは動きませんでしたが・・・
978Now_loading...774KB:2007/04/30(月) 22:47:24 ID:0tjsM0be
>>977
バージョンも実行条件もわからんが
this.変数名
とか
979Now_loading...774KB:2007/04/30(月) 23:29:49 ID:zMpVFz10
>>978
レスありがとうございます

function picPress(n) {
(ここで押されたpic0?_mcを判別して、その._xに10を代入)
}

pic01_mc.onPress = function() {
picPress(1);
}

pic01_mc.onPress = function() {
picPress(2);
}

説明下手ですいません、上のような感じで処理をしたいのですが
関数側でどのようにして押したムービークリップを判別をさせるのかがわからないのです
押したpic0?_mc側から1や2を渡して、それからどうにかして判別とか自分では漠然と考えていたのですが;
FLASHのバージョンは8です
980Now_loading...774KB:2007/04/30(月) 23:31:25 ID:zMpVFz10
979のonPressの部分

pic01_mc.onPress = function() {
picPress(1);
}

pic02_mc.onPress = function() {
picPress(2);
}
でした
981Now_loading...774KB:2007/04/30(月) 23:33:03 ID:vktR1/BO
function picPress(mc){
mc._x += 10
}

pic01_mc.onPress = pic02_mc.onPress = pic03_mc.onPress = function(){
this._parent.picPress(this)
}

こんな感じじゃね?
無理してID渡すより、MCそのものを渡すほうが楽だよ。

ID渡す場合は、

this[ "pic0" + n + "_mc"] みたいになる。
変数名を式で作る場合には、文字を[ ] で挟む。
982Now_loading...774KB:2007/04/30(月) 23:37:39 ID:zMpVFz10
>>981
レスありがとうございました
まだまだ勉強不足なので、そちらの式を参考にさせて頂きます
983Now_loading...774KB:2007/05/01(火) 00:27:29 ID:1tBGTNJS
pic01_mc.onPress = pic02_mc.onPress = pic03_mc.onPress = function(){
this._x += 10;
};
984952:2007/05/01(火) 00:36:27 ID:yQiLdouY
どうも有難うございます

これがその詐欺サイトだそうです。
www.x69xforyou.com/member/?code=milk&confirm=yes
私は危険かもしれないのでブラウザでは開いておりません。
ただしHTMLを落としてソースは見ました。
見たらFLASHにIP等が渡されています

開く場合は注意してお願いします
985Now_loading...774KB:2007/05/01(火) 00:38:17 ID:p3gzszCx
for(i=1;i<4;i++){
this["pic0"+i+"_mc"].onPress=function(){
this._x+=10;
}

mc増えると桁そろえるのって面倒だから
pic1_mcの方が楽じゃね?
986956:2007/05/01(火) 07:07:44 ID:IZjWiysq
>>973>>974>>975>>976
レスの確認が遅れてすいません。素早い返答ありがとうございます。
onDataの文頭に動作を確認するtraceを配置したのですが出力がなく、onData
自体が呼び出されていないようでした。>>973>>974で指摘された部分に関して
は見直しても該当していませんでした。
何か根本的なミスがあるかもしれないので、もう少し自分で見直してみます。
皆さんご丁寧にレスありがとうございましたm(__)m
987Now_loading...774KB:2007/05/01(火) 08:22:12 ID:dnf9VmQ0
>974
あんまり意識したことなかったんだけど、
LoadVarsのonLoadが呼ばれる前ってGCの対象になるのかな?
どっちにしてもあんまり作法は良くないとは思うけど。
988959:2007/05/01(火) 11:13:20 ID:4uKjBk9P
>970
>971
なるほど。なるほどなるほど!
ようやく理解できました。

言い訳すると、絶対パスでチェックしたとき動かなかった(他の部分が間違えていた)ので
パスミスだとは思っていませんでした。。

お礼が遅くなってすみません。
ありがとうございました。
989Now_loading...774KB:2007/05/01(火) 11:29:54 ID:Uj2LJ5i/
>>984

うーん どうなんだろね。
IP記憶して他に書き出してるのかな。
そのくらいしかできないと思うけど。
990Now_loading...774KB:2007/05/01(火) 11:36:39 ID:p3gzszCx
あなたの登録情報つって
リファラやIPだす程度だろw
991Now_loading...774KB:2007/05/01(火) 14:43:48 ID:rEk3OOtn
XP環境でFlash8です。
_rootフレームに
function sound() {
se = new Sound();
se.attachSound("sound file");
se.start();
}
と書いて
_root.sound();
にて実行させています。これでうまくいっていたのですが
操作用MC(インスタンス名 ope)に
if (Key.isDown(83)) {
_root.gotoAndPlay("");
_root.sound();
}
と書いてみたんですが音が鳴ってくれません。
他の部分ではちゃんと音が鳴るのに、このMCだけ音が鳴らない原因は
なんでしょうか?
お教え頂ければ幸いです。
992Now_loading...774KB:2007/05/01(火) 14:50:24 ID:p3gzszCx
_root.sound();
_root.gotoAndPlay("");
993Now_loading...774KB:2007/05/01(火) 15:15:05 ID:0obsZKcN
>>991
if文をenterFrameの中に入れてないとか。
リスナー使った方が良いよ。
994Now_loading...774KB:2007/05/01(火) 15:16:49 ID:rEk3OOtn
>>992
解決いたしました。ありがとうございました m( _ )m
995Now_loading...774KB:2007/05/01(火) 19:12:22 ID:9Gf5Z3zJ
なかなか1作完成しません
すぐ他のアイデアに目移りするのと
もともと自慢できるような大それたアイデアじゃないのと
忍耐力が無いのが主な原因かと思われますが
何か打開策は無いでしょうか
技術的に完膚なきまでに挫折したわけでもありません
むしろ実現困難かに思える部分を作りきるところまでは楽しいです
996Now_loading...774KB:2007/05/01(火) 19:13:42 ID:82jw0aYL

FlexBuilderの体験版インストールしたんだけど、
エディタの色をうまく変えれません

とりあえず背景を黒くして、文字を明るいグレーにしたんだけど
public や import みたいな修飾詞がデフォルトだと青で表示されてます

これを変えたいんだけど、設定を一通りみても見つかりましぇん
どこにありますか
 
997996:2007/05/01(火) 19:31:57 ID:82jw0aYL
ちなみにいまこんな感じ
http://vista.crap.jp/img/vi7801546161.png

青がチカチカしてみづらい
998Now_loading...774KB:2007/05/01(火) 19:40:42 ID:zlnPq2X2
ちなみにFlashのセキュリティで一番怖いのは、第三者によるクロスサイトスクリプティングだと思われ。

FlashブログとかでURLとかリンクのフィールドに JavaScptが入った投稿されて、
他のユーザーがそのリンククリックしたらgetURL("javascript:〜")みたいのが実行されるという奴。
へたすれば、そのユーザーのメアドやパスワードを引っこ抜かれる。

HTMLと違ってURLのリンク先や、HTMLソース見れないから、
しかられても見つけにくい。
999Now_loading...774KB:2007/05/01(火) 19:52:01 ID:Q+E5EmoE
Flashサイトが嫌われる原因の一つでもあるね。

↓次スレ
1000日立製作所 ◆2TENKK.nkY :2007/05/01(火) 21:02:53 ID:X0KvFFZ6
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。