ActionScript 誰かが物凄い勢いで解答するスレ 15 Action ScriptやFLASHの知識はあまりないですが、 JavaScriptやActiveXコントロールのプログラミングには多少知識があります。 今あるワンクリック詐欺サイトについて調べているのですが ここでswfが使われています Action Scriptでは閲覧側のコンピュータに対する破壊活動を どの程度行う事が可能なのでしょうか? 例えばファイルを消したり、 メール内容を勝手に送信したりできるものなんでしょうか?
>>952 当然出来ない。
但し、Flash Player自体に脆弱性があれば、それはまた別の話。
>>952 ないと思うが、それだけではなんともいえん。
そのサイトのURL張れんの?
以前playerの脆弱性が指摘されたけど今はしらん シマンテックとかセキュリティサイトと adobeサイトみて何もなければいいんじゃね?
956 :
Now_loading...774KB :2007/04/30(月) 03:20:41 ID:rd00c7kp
関数内での変数について質問です。 今CSVファイルをLoadVarsで読み込んで表示させようとしています。 無事にファイルを二次元配列に収める事には成功したのは良いので すが、関数内でローカル変数として読み込んでしまったため、関数の 外から配列を呼び出せずに困っています。 そこで今グローバル変数とローカル変数について勉強しているのですが、 読み込む配列を宣言する際に例えば_global.myDataとして宣言すれ ば、その配列は以降は関数外でも呼び出せるという事なのでしょうか? なかなか思うような結果が得られず悩んでおります。どなたかご教授ください。
>>956 var table = new Array();
・
・ table の中に2次元配列を作る処理
・
// ローカル変数は関数が終了した瞬間に消滅してしまうので、
// グローバル変数にコピーしておく
_global.globalTable = table;
最後に、ローカル変数tableをグローバル変数globalTableにコピーして
あげればokかと。
コピーした直後から、作った2次元配列はflash内のどの関数内からでも、
呼び出すことが可能になります。
> 思うような結果が得られず
trace(table); とかで、どこまで正常に動いていて、どこから失敗しているか
見直してみるとよいです。
958 :
956 :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."; } }
>>958 何で成功時のみの処理なの?意味無いじゃん。失敗したときの処理は?
>>959 テキストフィールドのパスを確認。thisが何を指しているのか確認。
サウンドオブジェクトでループ回数を無限にするにはどうしたら良いんでしょうか _root.hoge.start(0,???); ???の部分がわかりません。。
962 :
959 :2007/04/30(月) 08:35:59 ID:0/5H6yiY
>960 回答ありがとうございます。 this.mc.ta1.text の部分、.text以前は"ターゲットパスの挿入"ダイアログで行っているので、パスはあっているかと思っています。 asはメインムービーに貼っているので、 thisはメインムービーですよね。 this.mc1.ta1でメインムービー内>mc1インスタンス>ta1テキストエリアとなるはずですが。。 上記の理解が間違っているのでしょうか。 それとも、mc1内での変数宣言などが必要になるのでしょうか。。 メインムービーへのテキスト表示は出来る(サンプルまんまだから当たり前か)だけに なにが障害かわからない。。
964 :
Now_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 となり、読み込みに失敗しています。 どうしたら良いでしょうか?
>>964 loadできるのはxmlインスタンスを作ってからでしょ
966 :
964 :2007/04/30(月) 09:58:27 ID:ayOv5W0u
>>965 有り難うございます。
txtXml = new XML(); をフレームアクションとして、プレビュー起動時に
xmlインスタンスを作成するようにしました。しかし、これでも出来ません。
どうしたものでしょうか?
>>966 onDataの引数sは何のためだと思うの?
ループではなく1つだけの時は動くの?
まずは単純なものから始めてみる
968 :
964 :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で見ると目的の長さが得られました。
969 :
959 :2007/04/30(月) 13:42:07 ID:RLzUTBnn
>963 何度もすみません。 ASはメインムービ貼ってるのでtrace(that);の結果は_level0です。 メインムービーに貼ったAS内の this.mc1.ta1.text = では、子インスタンス内のta1ダイナミックテキストエリアに変数を渡せないのか or それ以前の変数宣言や関数呼び出しの段階から、this.mc1.ta1といった対象オブジェクトの指定が必要なのか が詳細な質問内容です。
>>969 this.mc1.ta1.text=
の前行にtrace(this);
>>969 > ターゲットパスの挿入"ダイアログで行っているので、パスはあっているかと思っています
これが間違い。
「ターゲットパスの挿入」は、あくまでそれが書かれているフレームのタイムラインを
基準にしている。
しかし、スコープが変わればthisが参照するものは変わる。
この部分は「ターゲットパスの挿入」ではフォローされない。
thisが何を指しているのかは、散々言われているようにtrace()をすることで確認できる。
>>970 の通りにやってthisがさしているものが_level0でないなら、そこに
mc1.ta1というものは存在しない。
972 :
956 :2007/04/30(月) 16:38:38 ID:rd00c7kp
>>960 確かに、成功時だけで失敗時には意味がないものになってますね…ありがとうございます!
そこでプログラムを修正した後読み込みに挑んだのですが
my_lv.onData("1,2,3");
と直接データを与えると正常に作動するのですが
my_lv.load("test.txt");
とするとonDataメソッドが呼び出されないようなのです。
他の所からonDataメソッドを呼び出す必要があるのでしょうか?
どーせloadの後ろにondata書いてるんじゃねーの?
ひょっとして、my_lvを関数内のローカル変数として作って 呼び出し終わる前に、ガベッジコレクションで消えたりしてないか?
>>972 なんのために関数内でmyDataを宣言してるの?
はじめから_globalに入れればいいと思うんだけど。
onDataでは無くonLoadにしてみたら?
あと今回の問題に関係ないけど、配列は単純に=ではコピーできない。
_global.txtData = myData;
の後に_global.txtDataの中身を変えたらmyDataの中身も変わってしまう。
>>975 いや、そこらへんは
>>972 はなにも間違ったことしてない。
myDataをローカル変数で宣言してるのは、CSVをパースするための一時的な処理だし、
ローカル変数だから _global.txtData = myData; とすることにも間違いはない。
むしろ、myData.concat() とかここでやるのは冗長。
あとonLoadはCSV解析するには使えないから、onDataでいいんだよ。
977 :
Now_loading...774KB :2007/04/30(月) 22:21:31 ID:zMpVFz10
pic01_mc 〜 pic03_mcを押した時同じ処理を関数で行いたいのですが 実際関数中にそれぞれmcを指定するにはどうすれば良いのでしょうか? 引数をnで持ってきて、pic01_mcに10を代入したいとしたら "pic0" + n + "_mc" = 10; で良いのでしょうか、これでは動きませんでしたが・・・
>>977 バージョンも実行条件もわからんが
this.変数名
とか
979 :
Now_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です
979のonPressの部分 pic01_mc.onPress = function() { picPress(1); } pic02_mc.onPress = function() { picPress(2); } でした
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"] みたいになる。 変数名を式で作る場合には、文字を[ ] で挟む。
>>981 レスありがとうございました
まだまだ勉強不足なので、そちらの式を参考にさせて頂きます
pic01_mc.onPress = pic02_mc.onPress = pic03_mc.onPress = function(){ this._x += 10; };
984 :
952 :2007/05/01(火) 00:36:27 ID:yQiLdouY
どうも有難うございます これがその詐欺サイトだそうです。 www.x69xforyou.com/member/?code=milk&confirm=yes 私は危険かもしれないのでブラウザでは開いておりません。 ただしHTMLを落としてソースは見ました。 見たらFLASHにIP等が渡されています 開く場合は注意してお願いします
for(i=1;i<4;i++){ this["pic0"+i+"_mc"].onPress=function(){ this._x+=10; } mc増えると桁そろえるのって面倒だから pic1_mcの方が楽じゃね?
986 :
956 :2007/05/01(火) 07:07:44 ID:IZjWiysq
>>973 >>974 >>975 >>976 レスの確認が遅れてすいません。素早い返答ありがとうございます。
onDataの文頭に動作を確認するtraceを配置したのですが出力がなく、onData
自体が呼び出されていないようでした。
>>973 、
>>974 で指摘された部分に関して
は見直しても該当していませんでした。
何か根本的なミスがあるかもしれないので、もう少し自分で見直してみます。
皆さんご丁寧にレスありがとうございましたm(__)m
>974 あんまり意識したことなかったんだけど、 LoadVarsのonLoadが呼ばれる前ってGCの対象になるのかな? どっちにしてもあんまり作法は良くないとは思うけど。
988 :
959 :2007/05/01(火) 11:13:20 ID:4uKjBk9P
>970 >971 なるほど。なるほどなるほど! ようやく理解できました。 言い訳すると、絶対パスでチェックしたとき動かなかった(他の部分が間違えていた)ので パスミスだとは思っていませんでした。。 お礼が遅くなってすみません。 ありがとうございました。
>>984 うーん どうなんだろね。
IP記憶して他に書き出してるのかな。
そのくらいしかできないと思うけど。
あなたの登録情報つって リファラやIPだす程度だろw
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だけ音が鳴らない原因は なんでしょうか? お教え頂ければ幸いです。
_root.sound(); _root.gotoAndPlay("");
>>991 if文をenterFrameの中に入れてないとか。
リスナー使った方が良いよ。
>>992 解決いたしました。ありがとうございました m( _ )m
なかなか1作完成しません すぐ他のアイデアに目移りするのと もともと自慢できるような大それたアイデアじゃないのと 忍耐力が無いのが主な原因かと思われますが 何か打開策は無いでしょうか 技術的に完膚なきまでに挫折したわけでもありません むしろ実現困難かに思える部分を作りきるところまでは楽しいです
996 :
Now_loading...774KB :2007/05/01(火) 19:13:42 ID:82jw0aYL
FlexBuilderの体験版インストールしたんだけど、 エディタの色をうまく変えれません とりあえず背景を黒くして、文字を明るいグレーにしたんだけど public や import みたいな修飾詞がデフォルトだと青で表示されてます これを変えたいんだけど、設定を一通りみても見つかりましぇん どこにありますか
997 :
996 :2007/05/01(火) 19:31:57 ID:82jw0aYL
ちなみにFlashのセキュリティで一番怖いのは、第三者によるクロスサイトスクリプティングだと思われ。 FlashブログとかでURLとかリンクのフィールドに JavaScptが入った投稿されて、 他のユーザーがそのリンククリックしたらgetURL("javascript:〜")みたいのが実行されるという奴。 へたすれば、そのユーザーのメアドやパスワードを引っこ抜かれる。 HTMLと違ってURLのリンク先や、HTMLソース見れないから、 しかられても見つけにくい。
Flashサイトが嫌われる原因の一つでもあるね。 ↓次スレ
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。