07/10/04 11:26:40 v5miPgjM
Flash CS3 を使ってます。
ActionScript3の質問です。
テキストフィールドを任意の個数作りたいのですが、
コンストラクタとFunctionでの使い方がよくわかりません。
var mesFld:TextField; ←コンストラクタ
var i:Number;
関数内
for (i = 0; i <=3; i++) {
mesFld[i] = new TextField();
}
こんな感じで3つのテキストフィールドを作りたいんですが
TypeError: Error #1009: null がでてダメです。
どうやったらいいんでしょうか?
510:509
07/10/04 11:34:46 v5miPgjM
訂正:上記の場合は4つのテキストフィールドでした。
511:Now_loading...774KB
07/10/04 15:33:21 cJVG4P9M
>>509
何で配列じゃないんだよw
512:Now_loading...774KB
07/10/04 16:24:26 v5miPgjM
>>551
private var mesFld:Array; ←コンストラクタ
にしてもダメなんですが、どうしたらいいんでしょう?
513:Now_loading...774KB
07/10/04 16:25:02 v5miPgjM
未来レスしちゃった。
>>511 へのアンカーっす。
514:Now_loading...774KB
07/10/04 16:52:19 TG+YqKG0
var mesFld:Array = new Array();
515:Now_loading...774KB
07/10/04 17:54:35 v5miPgjM
それだと配列が4つ出来るだけで型が違うらしい。
var i:Number;
var messagE:Array=["メッセージ1","メッセージ2","メッセージ3"];
var mesFld:Array = new Array();
for (i = 0; i >=2; i++) {
mesFld[i] .y = 20*i;
mesFld[i] .text = messagE[i];
addChild(mesFld);
}
TextFieldを並べて、メッセージを表示したいだけなんだよ…
516:Now_loading...774KB
07/10/04 18:14:13 cJVG4P9M
>>515
基本的なことが何も出来てないじゃん。そのfor文の終了条件とかよく考えろ。
var messagE:Array=["メッセージ1","メッセージ2","メッセージ3"];
var mesFld:Array = new Array();
for (var i:uint = 0; i <3; i++) {
mesFld[i] = new TextField();
mesFld[i] .y = 20*i;
mesFld[i] .text = messagE[i];
addChild(mesFld[i]);
}
517:Now_loading...774KB
07/10/04 19:27:07 c5eLT4pF
知識もないのに背伸びするとこうなるんだな、と思った・・・
せめてコンストラクタの使い方くらい理解してからオブジェクト配列に進んだ方がいいぞ
518:Now_loading...774KB
07/10/04 21:54:46 sYfm0mAE
>>516
>mesFld[i] = new TextField();
mesFldはまだlengthが0だと思うんで、
mesFld.push(new TextField());
かな
519:Now_loading...774KB
07/10/04 21:57:48 sYfm0mAE
>>518書いて思ったが、
mesFld[i] = new TextField();
でも自動的に配列伸びてくれるんだっけ?
520:Now_loading...774KB
07/10/04 22:07:27 cJVG4P9M
>>519
var mesFld:Array = new Array();
mesFld[256] = "256のめっせ";
trace(mesFld);
521:Now_loading...774KB
07/10/04 22:32:56 a3pcYCHN
>519
mesFldは配列で、その配列の各要素がインスタンスになっている
ということじゃないかな。
mesFld:Array で、 nesFld[n]:TextField ということ。
522:Now_loading...774KB
07/10/04 23:47:18 sYfm0mAE
>>521
それはわかってるけどね
配列のサイズ指定してなくて[i]とかいいんだっけと思ってさ
>>520からすると、大丈夫なのか
523:515
07/10/04 23:56:15 pDhMSZxc
>>516-521
色々とありがとう。
実際、コンストラクタとかの知識が全然無いので見よう見まねでスクリプトを書いてる状態です。
教えてくれたスクリプトを見て少し理解が進んだかなって感じです。
ActionScriptって難しい。
524:Now_loading...774KB
07/10/05 05:02:28 CFI1QzYY
>>522
[i]はキーを作ってるだけ、ハッシュ表と同じような感じだが
525:Now_loading...774KB
07/10/05 16:04:22 0bKQBS6U
(i) (())
526:Now_loading...774KB
07/10/05 16:07:32 qdXfoWhh
ωつ (i) (())
527:Now_loading...774KB
07/10/05 16:15:11 EfOsco5h
(+"="+)
528:Now_loading...774KB
07/10/05 16:40:38 ILpEDvrE
∩_∩
( ・( ェ)・)
529:Now_loading...774KB
07/10/05 17:34:43 EfOsco5h
クマはerrorだろw カワイイからいいけど
530:Now_loading...774KB
07/10/05 23:05:21 MbYqf4iv
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0)
MC内に連続して出現するオブジェクト(MC)の色で質問です。
MC(インスタンス名:XY)内にattachMovie()でmarkAというドット状のMC(識別子名:markA)
をrootのonEnterFrameで
newMark = "markA"+id;
_root.XY.attachMovie("markA", newMark, id, prop);
によって円を描く様に並べる前に、出現するmarkAの色を、このフレームアクション
my_color = new Color(this);
this.onEnterFrame = function() {
my_color.setRGB(_root.cn_r << 16 | _root.cn_g << 8 | _root.cn_b);
・・・
・・・
}
のcn_rなどで指定しようとしています。
作成したASを実行すると、確かにmarkAの色は希望した色で出現し、また円を
描いている途中でも色の変更は可能ですが、先頭のドットだけが初期設定の
色(青)のままです。
つまり蛇に例えると、胴体,尾の色は変えられるが、頭の色は変えられない状態
です。考えられる原因は何でしょうか?
アドバイスを願います。
531:Now_loading...774KB
07/10/05 23:58:31 OAHwSxYT
>530
先頭のドットをアタッチするとき、
_root.cn_r等には、何が入っているか調べてみて。
trace()を使えばできるはずだ。
未定義なら、定義のタイミングをかえてみた方がいい。
532:530
07/10/06 00:26:41 GxwfyOES
>>531
レス有り難うございます。1個目の色を調べるためにtrace()を以下のように
したところ、 色= 128, 128, 128 となり、希望の(設定した)灰色にはなっていま
すが実際は、やはり青色です。
if (id == 1) {
trace("色= "+cn_r+", "+cn_g+", "+cn_b);
}
引き続き、調査と細工を試みます。
533:Now_loading...774KB
07/10/06 00:45:27 iGOdbPbG
>>532
文字型になってるのかも試練から足してみて
trace(_root.cn_r + _root.cn_g + _root.cn_b)
534:Now_loading...774KB
07/10/06 00:48:48 h+XnUfIk
すみません。↓のURL先のFlash内でYoutubeのインタフェースを含んだ
動画を表示してますが、これってインタフェースは自作しているんでしょうか?
URLリンク(www.itmedia.co.jp)
535:Now_loading...774KB
07/10/06 00:50:36 +D8Od/X0
境界条件調べるだけだろ。idの範囲は?
536:Now_loading...774KB
07/10/06 03:49:39 gn4a/fSp
>534
記事を見る限りでは「別のウィンドウが開いて」となってるから
その中に自作のインターフェースを表示させてるんでしょ。
で、そっからNetConnectionとNetStreamでムービー取得と。
537:Now_loading...774KB
07/10/06 03:56:21 irfaKOH+
YouTubeってクロスドメイン許してんの?
538:Now_loading...774KB
07/10/06 04:07:55 gn4a/fSp
>537
予想だけど、そう言う契約をそこの企業としてるんじゃないか。
FCSでは、ドメイン単位で許可する事はできるはずだから。
539:Now_loading...774KB
07/10/06 17:03:19 MqQBbmkL
Adobe Flash で作成した fla や swf をactionscriptファイルに書き出す方法ってあるのですか?
540:Now_loading...774KB
07/10/06 18:22:21 +D8Od/X0
>>539
flaのMCなどをASスクリプトに書き出すという機能は、CS3であるけど、たぶん539の思ってることとは違うと思う。
リバースエンジニアリングがしたいのでしょ。
541:530
07/10/07 00:00:50 wBXoAs42
>>531, 533
原因箇所が分かりました。出現させるmarkAのイベントハンドラで
my_color = new Color(this);
this.onEnterFrame = function() {
my_color.setRGB(_root.cn_r << 16 | _root.cn_g << 8 | _root.cn_b);
trace("色markA= "+_root.cn_r+_root.cn_g+_root.cn_b);
・・・
・・・
}
としていたのですが、my_color.setRGBの行をthis.onEnterFrameの前に置いた
ところ、先頭のMCが希望した色に変わりました。
どうやら、this.onEnterFrameでmy_color.setRGBが呼び出せた際には元の色で
呼び出され、その後に希望色に変わるようです。
ただし、この場合もその前の場合も trace("色markA= "+_root.cn_r+_root.cn_g+_root.cn_b);
は、128128128で、文字列のままです。
542:Now_loading...774KB
07/10/07 00:00:55 +hy5b/9S
>>540
すんません。
Flash作成 初心者なので根本的に間違ってるかもですが、
現在、Flash MX 2004 で作成したflaファイルが数個あるのですが、
これを asスクリプトに書き出す方法ってあるのかなって思ったのです
今後は asスクリプト にして Flex2 SDK でswfにしたいと思ってます。
flaファイル を 完璧に as化 する事って出来るのでしょうか?
画像等のリソースも出てくるのでしょうか?
CS3でしか無理なのでしょうか?
質問ばかりですいませんがよろしくお願いします。
543:Now_loading...774KB
07/10/07 00:12:01 o0ygbS31
>>541
trace("色markA= "+(_root.cn_r+_root.cn_g+_root.cn_b));
これで128128128と表示されるならどっかで文字列型化してるんだろう。
_root.cn_r = Number(_root.cn_r);
で一度数字型に変換汁。
544:530
07/10/07 01:39:51 QXoVJzdr
>>543
さんきゅうです。
545:Now_loading...774KB
07/10/07 06:01:58 Yu09fKPf
なんかムカツク礼だな・・・w
546:Now_loading...774KB
07/10/07 08:20:56 cZziyoLl
trace()の仕様と+演算子の仕様ぐらい解れやw
型チェックはtypeofあたりを使え。
aa=1250;
trace(typeof(aa));
aa="1250";
trace(typeof(aa));
547:Now_loading...774KB
07/10/07 08:35:46 sMY37Gcx
>>546もtypeofを関数だと勘違いしてる気がする
548:Now_loading...774KB
07/10/07 08:39:03 cZziyoLl
>>547
何で?根拠は?
549:Now_loading...774KB
07/10/07 08:57:07 sMY37Gcx
>>548
typeofは前置演算子なので typeof(aa) は ++(aa) と書くくらい不自然だから。
例えばこんなコードで"number"の1文字目の"n"は取れない。
aa=1250;
trace(typeof(aa).substr(0,1));
550:Now_loading...774KB
07/10/07 09:01:08 cZziyoLl
>>549
それはかまわんが、aaのタイプを知りたいときに、上記では間違ってるってことかい?
正解はどうなの?
551:Now_loading...774KB
07/10/07 09:09:10 cZziyoLl
ちなみに
trace((typeof(aa)).substr(0,1));
としなければだめなのでは?
552:Now_loading...774KB
07/10/07 13:26:25 gIQ5Oqpw
自分も>>550へのID:sMY37Gcxレスが見たい。
演算子だというのはわかるが、シンタックスは「typeof(expression) 」とヘルプにあるけど
それが間違いってことか?
でもtrace(typeofaa)じゃ、aaの型はわからない。
実際どうすべきなのかを教えてほしい。
553:Now_loading...774KB
07/10/07 14:00:33 8LOsNyLt
trace(typeof 10)
trace((typeof 10).substr(0,1))
554:Now_loading...774KB
07/10/07 14:09:49 gIQ5Oqpw
>>553
なるほど、理解した。thx
では、()を使うのは邪道ってこと?
そういう記述よく見るけど、実は正しくないのか?
555:Now_loading...774KB
07/10/07 16:03:10 XgtjyR+y
typeof(aa)とtypeof aaって理解しとかないとマズイ時ある?
ムービークリップアクションのボタン系、on(press)なんかだと
thisあるなしでターゲット変わるみたいな
trace((typeof 10).substr(0,1))は括弧つきでも
けっかは変わらんからいいけど
556:Now_loading...774KB
07/10/07 20:40:29 K/3Ic+Cu
環境 win2000 flash8
質問です、以下のようなコードで変数 videoList を function(a){} の中で作った場合に
function(a){} の外でも使用する為にはどのように書いたらいいのでしょうか?
function(a){} の外側に書くと配列の値が消えているようです
----ここから-----
System.useCodepage = true;
txtVars = new LoadVars();
txtVars.load("data.txt",txtVars,"GET")
txtVars.onData = function(a){
videoList = a.split(",");
}
------ここまで------
557:Now_loading...774KB
07/10/08 00:20:53 RBY5Oq8v
>>557
videoListをfunction(a){}の外に宣言する。
558:Now_loading...774KB
07/10/08 00:46:52 kVg3lbT6
>>556
loadの引数はurlじゃないのか?
取得できているのかどうか、aの値をチェックしてないじゃん。
559:556
07/10/08 00:56:46 qlH8uS6u
------ここから------
System.useCodepage = true;
txtVars = new LoadVars();
txtVars.load("data.txt",txtVars,"GET")
txtVars.onData = function(a){
videoList = a.split(",");
trace(videoList[0]);
}
trace(videoList[1]);
-----ここまで-----
このような書き方で videoList の値を確認しています
trace(videoList[0]); では適切な値が表示されますが
trace(videoList[1]); では値が入っていません
560:Now_loading...774KB
07/10/08 01:01:01 kVg3lbT6
>>559
trace(videoList);
して配列全部をチェックしてみ。
561:Now_loading...774KB
07/10/08 01:04:38 kVg3lbT6
ちなみにaの値(生の値)をチェックしろと書いたわけで、加工後の
videoListをチェックしろとは言ってないよ。
562:556
07/10/08 01:23:39 qlH8uS6u
trace(a);とtrace(videoList);の結果は同じで data.txtの中身が表示されています
function(a){} の外では共に undefined になっています
563:Now_loading...774KB
07/10/08 01:28:48 kVg3lbT6
>>562
それなら>>557でしょ。
System.use....の下行にでも
var videoList:Array;
としてみれば。
564:556
07/10/08 01:38:49 qlH8uS6u
563の方法も試しましたがダメなようです
function(a){} の中の変数名と外の変数名が同じでも別の変数として値を持っていると思うのですが
ちょっと判りません
565:Now_loading...774KB
07/10/08 01:55:37 kVg3lbT6
>>564
onMouseUp = function(){
trace(videoList);
}
でクリックしてみ。
もしくはテキストフィールドを作ってそこに表示。
566:Now_loading...774KB
07/10/08 01:59:37 EXT3QTW+
>>564
すごく大雑把で分かりにくいだろうけどとりあえず説明すると
txtVars.onData~trace(videoList[0]);の処理はイベントハンドラ言うて
data.txtの読み込みが完了したというイベントが
通知されて初めて実行されるから、多分>>564の思っている
処理順番とは違う。
>>559だけの処理の順番としては
txtVars.loadでtxtVarsオブジェクトにdata.txtを読みに行ってらっしゃいと命令
(この時点では読み込み自体はしていない)
↓
txtVars.onDataにdata.txtを読みに行ったtxtVarsオブジェクトの読み込みが完了した時に実行させる
処理の内容を設定(この時点では処理内容の設定だけでonDataの中の処理が走らない)
↓
trace(videoList[1]);※videoListなんて変数ここでは初めて出てきて知らないからundefined
この下でいくらvideoListの内容をtraceしてもundefined
↓
:※アクションフレームを抜けてtxtVarsオブジェクトがdata.txtを読み込みに行って、それが完了するまで
:Flash上でいう1フレームか数フレームか詳しく分からないけど待つ
↓
txtVarsオブジェクトがdata.txtの読み込みを完了したので、
ここでonDataに記述してある処理を初めて実行する。
videoList = a.split(",");でここで初めてvideoListという変数が現れて
かつ代入処理で特に注釈とかないから自動的にvideoList変数を_rootに定義。
trace(videoList[0]);は先に変数が定義されているので普通に表示される。
てな感じ。
>>559のtrace(videoList[1]);の位置でいくらvideoListの中身を確認しても
その時点ではonDataの中の処理が走ってないから値は入らないよ。
567:556
07/10/08 02:22:52 qlH8uS6u
>>566
trace(videoList[0]);とtrace(videoList[1]);の表示が逆になっていたのはそういうわけなのですか
解説ありがとうございます
問題は判ったのですが解決方法がわかりません、1フレーム目に上記コードを書いてgotoAndStop(2);で2フレーム目に飛ばし、2フレーム目でtrace(videoList);するもやはり値は入っていません
568:Now_loading...774KB
07/10/08 02:49:03 EXT3QTW+
>>567
色々方法はあるし、セオリーとか自分も良くわかって無いけど
とりあえず簡単な方法としては
1フレーム目の最後のgotoAndStop(2);は無くても勝手に2フレーム目に行くから削除して、
2フレーム目を空白フレームまたは空白キーフレームにでもして
3フレーム目のアクションに
if(videoList != undefined){←読み込み完了したかの判定。videoList変数の定義の仕方で判定式が変わるかも
trace(videoList);← 一応確認用、配列として読み込まれていたら(1,2,3とデータ毎に中身がカンマ区切りになっているはず)
gotoAndPlay(4);←4フレーム目に飛んで、そこから読み込み完了後の処理を行う
}else{
gotoAndPlay(2);←読み込みが完了してない場合、2フレーム目に飛ぶ
}
とでも書けば、いけるはず。
data.txt読み込み完了まで、2フレーム目と3フレーム目を行ったりきたりする感じ。
読み込み完了すれば自動的に4フレーム目に飛ぶと。
if(videoList != undefined)の部分はあくまで読み込みが完了したかどうかの判定で
>>559の処理でいけば読み込み完了時にvideoList変数が定義されることを利用してるだけで、
読み込み完了フラグ用変数を用意しておいて
先のonDataの中で読み込み完了フラグ用変数に値を入れて、その値かどうかの判定とかでもOK。
とりあえずこんなとこ。
569:556
07/10/08 03:07:10 qlH8uS6u
無事動きました
>>565>>568
ありがとうございました、今度一緒に呑みましょう(ぇ
570:Now_loading...774KB
07/10/08 12:52:37 Bwx4NhwV
(なぜコンプリートイベントでフレーム移動しないのだろう・・・?)
571:Now_loading...774KB
07/10/08 20:27:33 Tcjbzrlf
>>570
まだ初期化されて無いから
572:Now_loading...774KB
07/10/08 20:51:44 Bwx4NhwV
>>571
他意はないんだが、何が初期化されてないんだ?
「なんだまた読み込み待ちか」と思って>>378-386と書き込もうと思ったんだが、
まったく別のレスが連なってたんで少々驚いてる
573:Now_loading...774KB
07/10/08 22:08:23 LH+UT/54
外部ドメインにある画像にドロップシャドウをつけようと思っています。
サーバにswfを置かずに、ただswfを実行した際にはきちんと影がつくのですが、
サーバにアップしたとたん影が付かなくなってしまいます。
原因がどこにあるのか調べたのですが分かりませんでした。
どうしたらサーバにアップしたときにも影が付くのでしょうか?
よろしくお願いいたします。
574:Now_loading...774KB
07/10/08 23:22:13 Bwx4NhwV
>>573
FlashPlayerのバージョンあげてみたら?
575:Now_loading...774KB
07/10/09 00:06:55 kVg3lbT6
>>572
なんでファイル読み込みのときにエラーチェックしないんだろうか。
そういうサンプルソースとかが普通に出回ってるのかな。ということで。
あとloadの引数は1つでurlだしsendAndLoadの引数とは違う。
ヘルプのonLoadのサンプルソースでは引数3つで書いてあるけどw
内部的にどのように処理されてるかは解らないけど、第一引数だけ有効で後は無視なのかなw
576:Now_loading...774KB
07/10/09 00:35:49 g3z4xR9N
>>575
あーいや、ID:kVg3lbT6のレスの内容は何となく的を得てたから分かるんだけど、それ以外がちょっと分かりづらくてね。
てか>>575が言ってる「エラーチェック」ってのは「デバッグ」のことか?
確かにエラーチェックと言えなくもないが、大抵それで思い浮かべるのは例外処理のコトなんで少し困惑した。
つーか「loadの引数は3つ」ってのは俺も未だに謎だが明らかに本人のミスだと思ったのでスルーした(´・ω・`)
577:573
07/10/09 03:04:40 9Y7ORIFH
>>574
言葉が足りませんでした。
外部ドメインにある画像以外にはドロップシャドウが付くんです。
なので余計に分からなくて…
578:Now_loading...774KB
07/10/09 11:10:43 Kam84+8Q
>>573
>どうしたらサーバにアップしたときにも影が付くのでしょうか?
Flash8と9の両方で試したけど、ローカルとサーバーでドロップシャドウの違い
というのは発生しませんでした。
というか、ドロップシャドウ機能は画像がローカルかサーバーかを区別していないはず。
サーバーからの画像読み込みは時間がかかるから、画像を読む前に画像サイズを決め打ちした
処理が入ってるのかなと想像しますが、プラットフォームもコードも示さないんでは
適切な答えは返ってこないと思うよ。
579:Now_loading...774KB
07/10/09 11:23:21 w5b/Yavn
>>577
>外部ドメインにある画像以外にはドロップシャドウが付くんです。
セキュリティサンドボックスが適用されるから同じドメイン以外のものはbitmapdataとして扱えないよ。
読み込んで表示するまでができることの限界。
580:Now_loading...774KB
07/10/09 14:59:54 C8j8AshE
画面の左上にEnterFrameの度に増えるメーターのようなものを
描きたいんですがそれをすべてActionScriptでやるにはどうすればよいのでしょうか?
581:Now_loading...774KB
07/10/09 15:22:40 ggeyDQc0
>580
mc._xscale=0;
mc.onEnterFrame=function(){
this._xscale+=1;
}
582:Now_loading...774KB
07/10/09 18:08:38 rU2+dtCL
Fla8です。
ブラウザに縦横100%表示でフル画面表示できるようにswfを配置し、
ブラウザの大きさによって拡大縮小できるようにしています。
特定の縮尺以上に小さくしたくない(1024*768)のときは
ブラウザにスクロールバーを出す方法はありませんでしょうか。
100%表示だと無限に縮小されてしまいスクロールバーも出ません。
583:582
07/10/09 18:12:23 rU2+dtCL
追記
ASは下記のように記述することで必要以上に縮小できないようにできました。
w = Stage.width;
h = Stage.height;
if (w<=1024) {
w = 1024;
}
if (h<=768) {
h = 768;
}
ただし、ブラウザを1024*768以下に小さくするとFlash部分が縮小されないが
画面から切れてしまい、スクロールバーも出ないので困っております。
584:573
07/10/09 19:00:40 awnazd73
>>579
ありがとうございます。
サーバにアップさえしなければ影がつくのはなぜなんでしょうか?
585:Now_loading...774KB
07/10/09 20:22:51 QlW6ft08
>>582
そんなのはユーザにとって迷惑で使いづらい
586:Now_loading...774KB
07/10/10 00:02:18 UaeyZ6Um
>>584
ローカルはサンドボックスの対象外だから
587:Now_loading...774KB
07/10/10 01:28:40 EmibyRHS
>>572
onLoadInit
このイベント使え
588:Now_loading...774KB
07/10/10 09:33:54 290Y5orQ
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0)
CGIによるメール送信で質問です。
「Flash ActionScript 逆引き大全550」(ITフロンティア著,秀和システム)のp563を参考に
メールを送信を試みましたが出来ませんでした。getURL内の abc@xxx は宛先です。
何処が間違いか見当がつきませんので、とりあえずボタンMC内のASを全て書きます。
なお、タイトルはmailSubjectTで、本文はbodyMsgTです。
on (release) {
System.useCodepage = true;
//エンコード方式をShift-JISに変更
mailSubjectT = escape(mailSubjectT);
bodyMsgT = escape(bodyMsgT);
//タイトルmailSubjectTと本文bodyMsgTを一旦URLエンコードする
this.getURL("abc@xxx/cgi-bin/mailtome.cgi", "_blank", "POST");
//メール用信用デーモンにPOSTでパラメータを送る
mailSubjectT = unescape(mailSubjectT);
bodyMsgT = unescape(bodyMsgT);
//URLエンコードを元に戻す
}
アドバイス願います。
589:Now_loading...774KB
07/10/10 13:02:35 gXRoVw8Y
>588
>試みましたが出来ませんでした
これだと、問題をどう特定していいのかが分からない。
「出来ない」とは、どういう状態になっているの?
たとえば、
・サーバにデータが送信されない
・サーバに送信されているが、結果が帰ってこない
・予期しない○○という結果になる
などなど。
詳しく分からなくても、画面がどう変化したとかは分かるでしょ?
答える側は、そう言う情報から答えを探るから、出来るだけ
「出来ない」ではなく「どうなったか」を伝えて欲しい。
で、ソースを見て判断すると、
this.getURL("abc@xxx/cgi-bin/mailtome.cgi", "_blank", "POST");
でthisをつけているなら、変数にもthisをつけた方がいいんじゃないか。
(ボタンアクションはthisの扱いにレガシを引きずってるから、これが
引っ掛かっている可能性がある)
もし理解できるなら、LoadVarsクラスを使うことを、強くオススメしとく。
590:Now_loading...774KB
07/10/10 13:14:08 25V476Oo
TextInputの境界線を消すにはどういうスクリプトを書いたらいいのでしょうか?
setStyleとか調べたんですが、方法が見つからなかったです。
591:_
07/10/10 13:50:54 FtRfQ8y8
ActionScriptだけを使用してで座標(100,100)に縦横80,50の長方形を
MCというムービークリップとして描くにはどうすればよいのでしょうか?
592:Now_loading...774KB
07/10/10 14:13:14 25V476Oo
>>591
import flash.display.*;
var mc:MovieClip = new MovieClip();
var bitmapData:BitmapData = new BitmapData(80, 50);
bitmapData.fillRect(new Rectangle(0, 0, 80, 50), 0xffff0000);
mc.addChild(new Bitmap(bitmapData));
this.addChild(mc);
593:Now_loading...774KB
07/10/10 19:56:20 mS0tRZaZ
>>590
setStyle('borderStyle', 'none'); じゃね?
594:Now_loading...774KB
07/10/10 20:26:56 25V476Oo
>>593
無理でした
595:588
07/10/10 21:15:56 vLjJ+vOU
>>589
レス有り難うございます。ここでの「出来ない」とは、『宛先(PHS)にメールが届かない』
という意味です。その後、変数のパスに問題がありましたので、修正したところ、以下の
JPGのエラーメッセージが現れました。
URLリンク(vista.crap.jp)
黒塗りの後から cgi-bin/mailtome.cgi の部分があり、その後に送りたい文字列が現れ
ています。文字列中に%が頻出するのは、元の送信データを、提案頂いた LoadVars()
でUTF-8にコーディングしているからです。
※元の送信文の構成:
UIコンポーネントによるチェックボックスのtrue/false,数字(1994),アルファベット(fukuda)
漢字氏名(福田),題名(TestCGI)。 これらは、myLV = new LoadVars(); でmyLVオブ
ジェクトを作り myLV = new LoadVars(); でエンコードしています。
LoadVarsによるUTF-8へのエンコードは『逆引き大全550』に載っていますが、これによる
送信方法は分かりません。引き続きアドバイス願います。
※チェックボックとテキスト入力によるアンケートなどの結果を、UTF-8変換し、CGIでPHS
のメアドに送信するのが最終目的です。
596:Now_loading...774KB
07/10/10 21:34:46 iawLxwa7
そもそも、メール送信CGIは用意してあるの?
そのCGIはFlash経由じゃない場合、きちんとメールが送信できるの?
597:Now_loading...774KB
07/10/10 21:55:03 KI4ImEBG
>abc@xxx/cgi-bin/mailtome.cgi
なんでメールアドレスとcgiが一緒になってんの?
こんなことできたっけ?
598:588&595
07/10/10 23:01:13 Woeg7VRk
>>596
基本的なところに立ち返りますが、通常はメール送信CGIというのを別個に
用意しなけれればならないのでしょうか?
>>597
「逆引き大全550」のSmple545をそのままコピペすると
this.getURL("○○@××.com/cgi-bin/mailtome.cgi", "_blank", "POST");
//メール用信用デーモンにPOSTでパラメータを送る
です。
この部分を含め、ほとんどをそのまま利用しました。このflaファイルそのものをUpしたいの
ですが、著作権上問題があるとみて躊躇しています。
なお、別のプロバイダのメアドを ○○@××.com の部分に使いましたが、同じような
エラーが出ました。
599:Now_loading...774KB
07/10/10 23:06:03 m6g40JCr
>>598
> 通常はメール送信CGIというのを別個に
> 用意しなけれればならないのでしょうか?
しなければなりません。
600:597
07/10/10 23:27:03 KI4ImEBG
>>598
>>588をよく見たら
>メール用信用デーモンにPOSTでパラメータを送る
って書いてあったね。ごめん。メール用信用デーモンってなにか知らないけど
abc@xxx/cgi-bin/mailtome.cgiで送れるようになってるんだろうね。きっと。
cgiを用意できるなら
mailto = "○○@××.com";
msg = "メッセージ";
this.getURL("./cgi-bin/mailtome.cgi", "_blank", "POST");
で送ってcgi側でmailtoとmsgを取得。
用意できないなら
mailto = "hoge@hoge.com";
subject = escape("件名");
body = escape("本文");
this.getURL("mailto:"+mailto+"?subject="+subject+"&body="+body);
で我慢。
601:588&595
07/10/11 00:21:04 WmXwhj7I
>>599-600
有り難うございます。現在プロバイダにCGIの可否を問い合わせています。(先行して)600さんの
方法で実行しましたが、何の変化(応答)もありません ・・・本来はメーラーが立ち上がって送信
されるのでしょうか?
念のため、ボタンMC内のASを全て書きます。
on (release) {
System.useCodepage = true;
//エンコード方式をShift-JISに変更
mailto = "abc@xxx";
mailSubjectT = escape(_parent.mailSubjectT);
bodyMsgT = escape(_parent.bodyMsgT);
trace("Data= "+_parent.mailSubjectT+", "+_parent.bodyMsgT);
//
this.getURL("mailto:"+mailto+"?subject="+mailSubjectT+"&body="+bodyMsgT);
//
mailSubjectT = unescape(mailSubjectT);
bodyMsgT = unescape(bodyMsgT);
}
間違いをご指摘下さい。
それと、msg = "メッセージ"; で件名と本文が自動的に区分けされるのでしょうか?
602:Now_loading...774KB
07/10/11 01:16:42 x8KYzIaC
>>601
うちではそれでメーラーが立ちあがるよ。
プレビューじゃなくてブラウザ経由で確認してますか?
メールフォームのようにサーバからメールを送るには、CGIが必要でそれは自分で
用意しなくてはなりません。
CGIについての知識が皆無な場合、自分で多少なりとも勉強する必要もあるでしょう。
とにかく、Flash単体でメールを送信することはできません。
ただし、OSに依存する機能ですがメーラーを立ち上げることはできます。
それが、上で解説されているgetURLで"mailto:"を指定する方法です。
ただし環境によって動作が変わったりしますので、件名や本分がきちんと入らないケースも
あるようです。
603:Now_loading...774KB
07/10/11 01:32:44 n4LYUyeu
>>588
その mailSubjectT と bodyMsgT は何にも使ってないようだね。
他の部分に問題がありそう。
そのサンプルの頭に「Sample544の続きです」とか
その章の頭に「環境を整える方法」とか書かれてない?
604:Now_loading...774KB
07/10/11 01:34:50 if9OzS9V
同じ機能でラベルだけ変えたボタン(movieclipで作成)を複数並べたいとき、
スマートな作りってどんな感じのがありますか?
ラベルにテキストフィールドを使ったら簡単だったんですけど、
絵でやろうとしたら、いいアルゴリズムが思いつきませんでした。
最悪、必要なボタンを個別に作ればいいんですけど、その前に
定番のやり方とか、いいアイデアがあれば教えてくださいませ。
ちなみに、やりたいことは単純で、
ボタンを押すとファイルを読んでその内容が表示される。
ボタンごとに割り当てられたファイルは異なり、ラベルの絵も異なる。
読み込みおよび表示用の関数は完全に同じ。
ボタンのラベルは、マウスのon/off、現在表示中、で絵が切り替わる。
これだけです。
605:Now_loading...774KB
07/10/11 02:24:02 n4LYUyeu
>>604
個人的にそういうMCにコード入れたくないので、
MC側は差の発生する最低限必要な絵だけ作って置いて、
AttachClickEvent(mc1, "file1.jpg");
AttachClickEvent(mc2, "file2.jpg");
こんな感じで対応が一覧で見えるようにして、関数側にメインの処理書く。
function AttachClickEvent(targetmc, filename){
targetmc.onRelease = function(){
this.textbox.text = filename;
};
}
この3行目を別の関数にする時クロージャ関係でちょっと苦労するかも。
606:588&595&601
07/10/11 08:52:59 Imv5jEPW
>>602
すいません。プレビューでやっていました。
>>603
「環境を整える方法」は書かれていません。さも当然のように(誰でも)
メールCGIが使えるような記述です。ただし、手元の本は2005年4月版
なので最新版は分かりませんが。
607:_
07/10/11 15:20:17 8j07Lqtw
>>592
すいません.それを全部貼り付けて実行したのですが何も出てこないのですが・・
どういうことなんでしょうか?
608:Now_loading...774KB
07/10/11 16:44:00 4NtPYZv5
>>607
ActionScript3で書いてるので、パブリッシュ設定をActionScript3にしないと動かないです。
609:Now_loading...774KB
07/10/11 17:15:14 iSfms2At
>607
this.createEmptyMovieClip("box", this.getNextHighestDepth());
box._x=100;
box._y=100;
box.beginFill(0xFF6600);
box.moveTo(0,0);
box.lineTo(0, 80);
box.lineTo(50, 80);
box.lineTo(50, 0);
box.lineTo(0, 0);
box.endFill();
610:Now_loading...774KB
07/10/11 22:40:12 yzDtfjxL
aというムービークリップを配列mc_a[0],mc_a[1],mc_a[2]に入れて、場所を変えようとしたのですが、うまくいきません。
as3.0です。以下、ソースです。
.fla内
var aaa:contents = new contents(a);
aaa.dot();
.as内
package {
import flash.display.*;
import flash.events.*;
public class contents {
var my_mc:MovieClip;
var mc_a:Array = new Array();
public function contents(mc:MovieClip) {my_mc = mc;}
public function dot():void {
for (i=0; i<3; i++) {
mc_a[i] = my_mc;
}
mc_a[0].x = 35;
mc_a[1].x = 135;
mc_a[2].x = 335;
}}}
611:Now_loading...774KB
07/10/11 23:14:33 yzDtfjxL
addChildとかをやっていたら、できました。
ご迷惑おかけしました。
612:588&595&601
07/10/11 23:18:35 VySIJ5K4
(FlashでCGIを使ってメールを送る質問の続き)
プロバイダに問い合わせたところ、CGIはそのプロバイダが用意したHtmlによる
掲示板とアンケート用CGIしか利用できないそうです。従って600さんの2番目の
ASを使うことにしました。
仕組みは若干変更して、root上に置いたボタン内に
on (release) {
System.useCodepage = true;
//エンコード方式をShift-JISに変更
mailto = "abc@xxx";
subject = escape(subjectT);
body = escape(cgiDataT);
this.getURL("mailto:"+mailto+"?subject="+subject+"&body="+body);
}
としました。一応、メーラーは立ち上がり、宛先も希望の abc@xxx になっていまし
たが、件名と本文は空白でした。これは602さんのコメントのように、環境依存で入
らないのかも知れません。
とりあえず、LoadVarsクラスによるエンコードは成功していますので、アンケート自体
のAS作成は続けます。
色々、有り難うございました。
613:Now_loading...774KB
07/10/12 07:51:51 la7NNrTi
>>594
スキンを変える。もしくは、テキストフィールドを使って.border=false;にするとか。
614:Now_loading...774KB
07/10/12 11:08:05 Hf3zl0dE
クラスについて勉強中なのですが、いまいちクラス&インスタンスメンバがハッキリ理解できません
↓はタイムラインに書いていたflvビデオ再生のスクリプトをASファイル用にしてみたのですが
一応動きますがstaticなど使わずつらつらと全部コンストラクタに書いてしまって、これでいいのかなとちょっと不安です
クラス&インスタンスメンバ+コンストラクタな正しい形への修正箇所があればご指摘お願いします
class FlvPlayer {
var connect_obj:NetConnection;
var stream_obj:NetStream;
var videoSound:Sound;
//コンストラクタ
function FlvPlayer(flv_video:Object) {
connect_obj = new NetConnection();
connect_obj.connect(null);
stream_obj = new NetStream(connect_obj);
flv_video.attachVideo(stream_obj);
videoSound = new Sound(dummy_mc);
dummy_mc.attachAudio(stream_obj);}
//ビデオ消音
function volumeStop() {
videoSound.setVolume(0);}
//ビデオ再生
function videoPlay() {
stream_obj.setBufferTime( 5 );
stream_obj.play( "video.flv" );}
}
↓タイムラインのスクリプト
var flvPl:FlvPlayer = new FlvPlayer(flv_video,dummy_mc);
flvPl.volumeStop();
flvPl.videoPlay();
615:Now_loading...774KB
07/10/12 13:38:19 yQkbsrTW
AS3の質問です。
ムービークリップが終わってから、
次のムービークリップに行きたいのですがどうすればいいのかわかりません。
var _01:mc_01=new(mc_01);
var _02:mc_02=new(mc_02);
addChild(_01);
addChild(_02);
_01.gotoAndPlay(1);
_02.gotoAndPlay(1);
mc_01(フレーム数は未知)が終わってから、mc_02を始めたい。
616:Now_loading...774KB
07/10/12 17:06:02 y7UWNVJI
>615
AS3って、varでいきなりオブジェクトのプロパティを宣言できるの?
AS2なら、「var _01:MovieClip=new Object();_01.mc_01~」って、
2段階に分けないといけないけど。
あと、_01が終わったら云々の場合、AS2ならこうなる。
※フレームアクションでの記述例。クラスファイルだと
イベントハンドラ内部のデフォルト参照に自動的にthisがつくので
意味が変わってしまう。
var _01;MovieClip;
var _02;MovieClip;
_01.onEnterFrame=function(){
if (this._currentFrame>=this.totalFrame){
_02.gotoAndPlay(1);
}
}
617:Now_loading...774KB
07/10/13 19:58:17 3y0DHD2R
Actionscript勉強中です
環境 Flash8 winXP
FLVPlaybackコンポーネントを使用してflvを再生する時に
マニュアルにて
import mx.video.*;
my_FLVPlybk.autoPlay = false;
my_FLVPlybk.contentPath = "URLリンク(www.helpexamples.com)
my_FLVPlybk.seek(3);
my_FLVPlybk.play();
と書いてあります
自動再生はmy_FLVPlybk.autoPlay = false;を書けば設定できますが、swfファイルを表示した時にファイルを取得(seek)しないでplayボタンを押した時にファイルを取得する設定にするにはどのように書いたらいいのでしょうか?
(youtubeのような動きで)
618:617
07/10/14 03:12:14 zWroxzVw
>ファイルを取得(seek)しないで
バッファリングの間違いだと思います
619:Now_loading...774KB
07/10/14 03:27:48 D7S7QXwg
>617
ボタンにイベント設定すればいいんじゃね?たとえば
var my_FLVPlybk;
|
スクリプト書く
|
myButton_btn.onRelease=function(){
my_FLVPlybk.seek(3);
my_FLVPlybk.play();
};
620:617
07/10/14 13:18:33 WOvlYYa8
レス有難う御座います
ボタンにイベントを設定する場合、skin(SteelExternalAll.swf)を使っているとそのskinのflaファイルを編集するという事ですか?
FLVPlaybackコンポーネントの再生ボタンを指定するにはどうしたらいいのでしょうか?
621:Now_loading...774KB
07/10/16 22:07:35 qXpyYf9M
質問です。
環境:winXP Flash8pro
書出し:ver.8 AS2.0
オープニングムービーを初回訪問時のみ再生し、
次回から表示させないようにするため、
SharedObjectクラスの使用を考えています。
ユーザーがセキュリティの設定でローカルへのデータ保存をOFFに
設定している場合は有効になりませんが、それ以外ブラウザ等で、
環境によってSharedObjectが使えないといったことはあるのでしょうか?
知っている方おられましたら、情報お願いします。
622:Now_loading...774KB
07/10/17 00:32:27 QRs4mHQ+
スクリプトの書き方(2.0)の事で質問させて下さい
class Bottons {
var MC1:MovieClip;
var MC2:MovieClip;
var MC3:MovieClip;
var MC4:MovieClip;
var pressN:Number
function Bottons(m1:MovieClip ,m2:MovieClip ,m3:MovieClip ,m4:MovieClip) {
MC1 = m1;
MC2 = m2;
MC3 = m3;
MC4 = m4;
}
function bottonP(pressN:Number) {
if(pressN == 1) {
MC1.gotoAndStop(2);
MC1.enabled = false;
MC2.gotoAndStop(1);
MC3.gotoAndStop(1);
MC4.gotoAndStop(1);
MC2.enabled = MC3.enabled = MC4.enabled = true;
}
if(pressN == 2) {
MC2.gotoAndStop(2);
MC2.enabled = false;
(以下略)
1フレーム目に押される前の絵、2フレーム目に押された時の絵のmcボタン(botton1~4)を配置し、一つのmcボタンを押した時に
押したmcボタンに付いた数字をbottonP関数の引数に送りチェック
押したボタン自体を押せなくしてフレームを2に移動、その他のmcボタンのフレームを1に&押せるようにする、といった事を打ったのですが
↑のように、変数指定やメゾットをどうもだらだらと書いてしまう書き方しかできません・・・
もっとスッキリとした効率の良い書き方があれば勉強の為にも教えて下さい
623:Now_loading...774KB
07/10/17 00:50:25 lKIBMR2h
>>622
class Bottons {
private var _mcList:Array;
function Bottons():Void {
_mcList = new Array();
}
public function addItem(mc:MovieClip):Void {
_mcList.push(mc);
}
public function bottonP(pressN:Number):Void {
for(var i=0; i<_mcList.length; i++) {
var mc:MovieClip = _mcList[i];
if(pressN == i) {
mc.gotoAndStop(2);
mc.enabled = false;
} else {
mc.gotoAndStop(1);
mc.enabled = true;
}
}
}
}
624:Now_loading...774KB
07/10/17 08:39:22 E55ld3QG
>>622
状況に合わせて少数のボタンの有効無効を設定するなら、ベタに書いた方が
解りやすいし、後々修正するときにも簡単にできる。
短いコーディングがスマートというわけではなく、解りやすくて修正しやすいコーディングの方が良いよ。
625:Now_loading...774KB
07/10/17 14:05:25 vEXp6IqN
質問です。
テキストフィールドに、stylesheetとtextformat両方を指定した場合
片方しか有効にならないのですが、これは仕様なんでしょうか?
環境は WinXP, Flash8, AS2 です。
626:Now_loading...774KB
07/10/17 14:46:45 UWqk762w
Bottonってボットン?
627:Now_loading...774KB
07/10/17 14:50:13 eGxIedqm
フレームラベルを指定して飛んだときに、1つ前のフレームから再生されるのですが
これはそういう仕様なんでしょうか?それともなにかミスが考えられるのでしょうか・・
MX2004です
628:Now_loading...774KB
07/10/17 14:57:53 mvIPS4vV
>>627
そんな仕様はない。
ひとつ前のフレームから再生しているように「見えている」だけ、とか
別のASが邪魔してるとか、移動先のフレームがまだ読み込まれてないって可能性はない?
629:622
07/10/17 16:34:00 QRs4mHQ+
>>623-624
レスありがとうございました、624様のお言葉も頭に置きつつ、623様の書かれたスクリプトも参考にさせて頂きます
630:Now_loading...774KB
07/10/17 17:43:44 jLB/9o3N
>>626
Buttonがぶっ飛んだ
631:Now_loading...774KB
07/10/17 18:44:30 7wtQRXo1
フラッシュを再生したら自動で1度だけ書いたスクリプトを実行させる
文って何?
632:Now_loading...774KB
07/10/17 19:13:41 6kNNesfq
>627
そのフレームにtrace("通過")とか書いて確認汁。
>631
ルートのフレーム1に
onLoad = function(){
)
とか
633:Now_loading...774KB
07/10/17 20:00:11 LCTz3iR8
>>632
それうまくいかない時がある
634:Now_loading...774KB
07/10/17 20:05:16 7ignNLKe
>>632
それは1フレしか無いときか? それなら俺は
this.onEnterFrame = function() { } 内にフラグ=Trueで実行されるASを書いて、更にonEnterFrame内
の最後にフラグ=Falseとしている。
1回しかTrueの機会がないので、onEnterFrameでも1回しか実行されない。
635:627
07/10/17 20:14:50 6IAwvrDI
>>628
>>632
traceで確認すると、やはりずれていたので何かscriptを間違えてるみたいです。
いろいろ試してみます。有難うございました。
636:Now_loading...774KB
07/10/17 20:53:02 SZT5WKlR
>>632
つか、onLoadはそういう使い方しないと思う。
フレームアクションで使うもんじゃなくてクラス内での特定の処理用って
野中氏が書いてた希ガス。
>>634
onEnterFrame使うなら、実行の後にdeleteすればよくね?
毎回onEnterFrameで判定させ続けるのは無駄に思えるんだが。
637:Now_loading...774KB
07/10/18 01:41:52 CcUX8g3U
無駄っていうか、負荷がかかるから、
delete this.onEnterFrame;
だな。
638:Now_loading...774KB
07/10/18 18:37:05 2UT4DSWD
>>632-37
今北産業
よく分からないからまるごとAS書いてクレパス
639:Now_loading...774KB
07/10/18 18:56:03 dcmeTTin
超基本的な質問なんですが、何か処理を常にループさせておきたい時って
皆さんどうされてるんですか?私はいつもsetIntervalを使うのですが、
もっと一般的な方法があるのかと思って質問しました。
640:Now_loading...774KB
07/10/18 19:22:38 0201MtKR
>>639
そこでonEnterFrame
641:Now_loading...774KB
07/10/18 21:43:31 dcmeTTin
>>640
onEnterFrameってムービークリップを用意する手間がかかりませんか?
642:Now_loading...774KB
07/10/18 21:46:23 Q9e0+u1z
>>641
ASで空のMCをつくるだけならそんなに手間かからんと思う
643:Now_loading...774KB
07/10/18 21:47:43 dcmeTTin
>>642
なるほど。
で、それはsetIntervalよりも一般的に用いられている方法なのでしょうか?
644:Now_loading...774KB
07/10/18 21:55:45 ZIfnorVb
少しスレ違いかもしれないんですが、
ニコニコ動画みたいにコメントをリアルタイムで更新して表示したいんですが、
どうやればいいんでしょうか?
setIntervalとかで一定時間ごとに読みに行く以外の方法は。。。?
645:Now_loading...774KB
07/10/18 23:06:33 Q9e0+u1z
>>643
現在それが一般的かどうかは知らん。
MXより前は、setInterval()なんてものは片鱗すらもなく
onClipEvent(enterFrame)しかなかった。
それをひきついだ形でonEnterFrameを使う人はいるだろう。
もともとはフレームアニメーションのソフトだったし
マシンスペックが低い時代には
高頻度な描画更新が期待できなかったこともあり、
フレーム単位で設計を考えることが「昔は」一般的であったと思う。
646:Now_loading...774KB
07/10/19 00:54:36 W79YCVwl
>>639
待機時間を簡単に変えられるsetIntervalの方が都合良い場合が多いと思う。
>>644
Flash側からリクエスト投げた状態で
サーバ側でわざと出力せずにSleepしておくとか。
なんにしろサーバ側の実装が大変なはず。
647:Now_loading...774KB
07/10/19 01:12:01 i7Xv9cX6
>>643
普通描画と同期させたいからonEnterFrameを使う
むしろsetIntervalは予期せぬタイミングでよばれてクラッシュを引き起こす恐れがあるイメージがある
648:Now_loading...774KB
07/10/19 01:23:52 tuMxnnGk
setIntervalはプロセッサの負荷に応じてと玉突き状に遅れていくから特殊用途にしか使わないな。
649:Now_loading...774KB
07/10/19 01:43:11 O6fMLnRZ
>>647
>>648
予期せぬタイミングって、しかもクラッシュって、、設計自体がおかしいからじゃないのそれ。
特殊用途ってなんだよw
650:Now_loading...774KB
07/10/19 01:57:20 46rUnYyO
自分は使わなかったから知らなかったけど
setIntervalで実行される関数の間隔は
onEnterFrame、つまりswf自体の描画フレームレートより
早い間隔に設定しても内部ではsetIntervalの関数が間隔通りに
実行されるみたいね。
てことは描画はあくまで30fpsだけど
入力精度や内部処理が60fps相当なゲームも作れるのか・・・
色々と面倒そうだけど。
651:Now_loading...774KB
07/10/19 02:04:53 fRuXf06C
>>649
確かに設計に問題がなければ大丈夫だろうが、
問題を起こしにくいにこしたことがない。
要は、fpsに同期して考える方が設計が楽ってことだと思う。
Flashはどうしても描画に負荷がかかりやすかったから
fpsが出なければsetIntervalが正確でも意味がないということもあるし…。
652:Now_loading...774KB
07/10/19 04:55:37 dqfD4AMd
極端に負荷のかかるループを実行する時は、
setIntervalでsleepの変わりを実現してる。
例)100万回のループ処理がある場合、
for文で100万回まわさずに、
1万ループx100回に分割し、
setInetrval(loopFunc, 10); な感じで実行してる。
653:Now_loading...774KB
07/10/19 08:00:11 O6fMLnRZ
>>652
いわゆる待ち時間をつくるのはsetIntervalで普通だけど、
その例は最悪だなw
forループ処理とsetIntervalでのコード実行のコストを考えれ。
654:Now_loading...774KB
07/10/19 16:14:41 dqfD4AMd
>>653
実行コストではなく、
他言語に用意されるシステム割り込み『sleep関数』の代わりと書いているのだが?
例えば1forループ10秒かかる処理があったと過程した場合、どう組むのが最適?
setInervalでループ分割する事でブラウザ&Flashのフリーズを阻止する。
なんてのは、中級者以上なら常套手段だと思うのだがw
実行コスト厨っぽいから先に言っとくけど
「そんな負荷かかる処理はロジックが悪い!」とか言う答えは無しな。
655:Now_loading...774KB
07/10/19 16:32:12 O6fMLnRZ
>>654
分散処理で負荷軽減はできるが、その例は良くないってことを言ってるのよん。
forループ10秒かかるってのもすごいが、1万ループを100回に分割って、、、、
サーバー側の処理じゃないんだから、クライアント側ではそんなことは普通しないでしょ。
656:Now_loading...774KB
07/10/19 16:34:42 fpwmazCs
おはようございました。
Windows2000、FLASH MX 2004を使っています。
LoacalConnectionに関して質問させてください。
//受信側
rcv_LCon = new LocalConnection();
rcv_LCon.connect("receiver");
rcv_LCon.rcvTitle = function(a) {
//30行くらいの処理
}
//送信側
send_LCon = new LocalConnection();
スクリプトで生成したボタン.onRelease = function() {
_root.send_LCon.send("receiver","rcvTitle",this._name.substr(5,1));
}
上記のような形で初めてLoacalConnectionを使って作ってみたのですが、送信側のswfで生成した5つのボタンの中でどのボタンを押しても、
一度だけ受信側のswfで関数が呼び出されるのですが、二度目はどのボタンを押しても受信側の関数が呼び出せなくなってしまいます。
プレビューで変数を見てみても、受信側のrcv_LConと、送信側のsend_LConはきちんとずぅっと残っているのですが、
なぜ一度通信した後、以降通信出来なくなるのかが分かりません。
解決方法、または解決方法が記されたページがありましたら、教えていただけないでしょうか?
よろしくお願いいたします。
657:Now_loading...774KB
07/10/19 16:47:43 tuMxnnGk
>>655
分散処理って具体的にどういう事?
Javaかなんかとごっちゃに考えていない?
658:Now_loading...774KB
07/10/19 16:53:53 O6fMLnRZ
>>657
たとえば、MCを100個attachする。それぞれのスレッドで動くよね。
for文を分割してsetIntervalを100個作ってそれを動かす。そんな必要あるんかw
ごっちゃというか、OOPそのものなんだけどなw
659:Now_loading...774KB
07/10/19 16:56:03 dqfD4AMd
>>655
>>forループ10秒かかるってのもすごいが、1万ループを100回に分割って、、、、
処理内容と動作スペックでは十分想定の範囲。
>>サーバー側の処理じゃないんだから、
>>クライアント側ではそんなことは普通しないでしょ。
これは、クライアントだからこそするんじゃね?
古いマシンだと、Flashに全てのリソース奪われてブラウザがフリーズ状態になる事だってある。
だからこそ細かめにループ分割しておくことで、ユーザの割り込み=キャンセル処理が可能な実装をしておくべきなのでは。
660:Now_loading...774KB
07/10/19 17:05:59 O6fMLnRZ
>>659
古いマシンってどんだけ古いんだよw
ってのはさておき、その例では「setInterval使えばfor文が早くなるんだぜ」な感じで
あんまし表現が良くないってこと。そこがきになったんよ。
661:Now_loading...774KB
07/10/19 17:09:36 8bxNeY9T
>>658
いつからムービークリップはマルチスレッドで動くようになったんですか?
私の知っているFlashではforループがどこかで回っていると、他の処理は
並行的に実行されなくなるんですが?
ムービークリップの数だけスレッドができてしまったら、スレッドの切り替え
にえらいコストがかかりそうですね。synchronize機構も無い言語で、
知らないうちにマルチスレッドで動いてるなんて怖い時代になったものですね、と。
for分けたほうが速いなんていってる人はここにはいねぇだろ。よく読めや
662:Now_loading...774KB
07/10/19 17:10:34 DcvvAsvL
>644
NetSterem.send()またはSO.onSync()
FCSのスクリプトだ。
ただし、ニコ動は一定時間ごとに更新が働いていそうだから
ストリームからの同期ではなく、setIntervalで
SOの状態を反映させている可能性もある(負荷軽減のため)
たしかAS3からは「setDirty()」で、同期を制御することができるんだっけ?
それも使ってるかも知れない。
663:Now_loading...774KB
07/10/19 17:12:27 O6fMLnRZ
>>661
例が悪いって言ってるのが解らない奴がいたw
664:Now_loading...774KB
07/10/19 17:14:19 8bxNeY9T
釣られましたごめんなさい
665:Now_loading...774KB
07/10/19 17:18:40 dqfD4AMd
>>658
>>for文を分割してsetIntervalを100個作ってそれを動かす。そんな必要あるんかw
って時点で意味を全く理解していない事がわかったw
あとFlashにスレッドに該当するものは存在しないよ。何をスレッドと思い込んでるん?
>>659
最近のマシンでも1,2秒フリーズするような処理はあるだろ?
それを体感させないくらいの処理に分割する。って事だ。
666:Now_loading...774KB
07/10/19 17:20:05 dqfD4AMd
穴だらのコードだけど、分割例あげとく。
var ONE_TIME_MAX:Number = 10000;
var stateObj:Object = {i:0};
stateObj.intervalID = setInterval(this, "loopFunc", 10, stateObj);
function loopFunc(stateObj:Object):Void
{
var sTime:Number = getTimer();
for (var i:Number = 0; i < ONE_TIME_MAX; i++) {
stateObj.i++;
}
trace("loop:" + stateObj.i + " time:" + (getTimer() - sTime));
if (stateObj.i > 1000000) clearInterval(stateObj.intervalID);
}
ONE_TIME_MAX; の値を下げれば、
クライアント側のマシンは体感的にはフリーズしないが、全体の処理時間は多少伸びる。
ONE_TIME_MAX; の値を上げれば、
クライアント側のマシンは体感的にはフリーズするが、全体の処理時間は早くなる。
用途と想定環境で調整しろってこった。
667:Now_loading...774KB
07/10/19 17:29:27 O6fMLnRZ
>>665
スレッド処理といえば解るのかな?スレッド自体プログラムで処理してるわけでしょ。
スレッドが無いじゃんというのはかまわないけど、実際そうだからしょうがないしw
668:Now_loading...774KB
07/10/19 17:36:43 O6fMLnRZ
>>666
多少伸びるとか、体感的とか、、ちゃんとベンチマークしたんかいw
たまたま、そんとき常駐ソフトがうごいたとかじゃねーのかw
669:Now_loading...774KB
07/10/19 17:44:17 8bxNeY9T
普通に考えればこんなアホいるわけないんだから、釣りに決まってる。
みんなも釣られるなよ!
670:Now_loading...774KB
07/10/19 17:46:13 O6fMLnRZ
>>669
典型的なゆとりの捨て台詞だなw
671:Now_loading...774KB
07/10/19 17:46:30 dqfD4AMd
>>668
わざわざtrace()つきでサンプルあげたんだから実行してみろよww
・C2D 2.4Ghz / 1ループ100万処理
1.2秒間で完了。処理中は他の処理全てが停止。
・C2D 2.4Ghz / 1ループ5万処理 x 20
1.4秒間で完了。同時(擬似)に他の処理が可能
俺だったら、後者を取る。
672:Now_loading...774KB
07/10/19 17:51:36 O6fMLnRZ
>>671
だからさ、そんなの意味無いっていってるじゃん。
純粋なPCで、せめて1000回試行して、、ってつか、1.4秒間に他の処理って何なんだそれ?w
673:Now_loading...774KB
07/10/19 17:56:17 46rUnYyO
/ ̄ ̄ ̄ \ ホジホジ
/ ― ― \
/ (●) (●) \
| (__人__) | 動けばどうでもいいよ
\ mj |⌒´ /
〈__ノ
ノ ノ
674:Now_loading...774KB
07/10/19 17:57:13 dqfD4AMd
ポカーン(゜Д゜)
純粋な技術の話が、ゆとり論点「そんなの意味ない」に変わったので、もういいやw
制作の現場でんな事言ったら、
「お前の存在のが意味ねーよw」って言われちゃうんだから(><
675:Now_loading...774KB
07/10/19 17:58:51 O6fMLnRZ
>>674
ゆとり発言にはゆとりで返答したんだけど、、、、
676:Now_loading...774KB
07/10/19 18:01:42 tuMxnnGk
膨大にfor,while回す場合は最低限、FlashPlayerに無限ループフラグを建たせない程度に分割する必要はあると思うよ
677:Now_loading...774KB
07/10/19 18:01:50 O6fMLnRZ
厳しいようだけどホントにそうだからね
678:Now_loading...774KB
07/10/19 18:02:54 tuMxnnGk
>>677
え?何が?
679:Now_loading...774KB
07/10/19 18:04:34 8bxNeY9T
だから釣られんなって
680:656
07/10/19 18:24:12 fpwmazCs
すいません。分かる方いたら>>656お願いします。
681:Now_loading...774KB
07/10/19 18:31:22 EXfWcKY4
>>680
それだけじゃわからんから、flaとHTMLをUpしたら?
682:Now_loading...774KB
07/10/19 18:44:27 8bxNeY9T
>>680
その「30行くらいの処理」に問題があるんじゃないのかな?
trace(a);だけで実験したけど何の問題も起きんよ。
683:Now_loading...774KB
07/10/19 18:54:49 bT3V+drs
だよなあ。他の言語ならともかく、Flashはループでプレーヤーからブレーキかけられるからなあ。
良く使い慣れてる人ほど、分割する仕組みを考えるわな、常識的に考えて。
脳内の人はどうかしらんけど。
684:656
07/10/19 19:05:16 fpwmazCs
>>681-682
返信ありがとうございます。
仕事でクライアント企業のために作っているホームページなのでうpする事は出来ないのですが、
>>682の発言から、テストでLocalConnectionを実験するためだけのSWFを作って実行してみたところ、
何の問題もなく何回でも通信出来ました。
「30行くらいの処理」の中に外部テキストファイルを読みに行ったり、onEnterFrameを作ったりと色々やってるので、
その中の何処に問題があるのか自分なりにテストして調べてみたいと思います。
すいません。ありがとうございました。
685:Now_loading...774KB
07/10/20 13:41:10 imkaZe3i
URLリンク(www.kisekae.jp)
ここの壁紙を作るゲームのようなことをやりたいのですが、
どのように作ってるのかわかりません。
無数の壁紙を用意してるようでもなさそうですし、サーバーで壁紙を
作ってるとは思いますが、どうすればできますか?
winXP FLASH8です
686:Now_loading...774KB
07/10/20 13:49:05 2Mx4Dfp7
質問です。
Flashを表示した時に、はじめからテキストボックスにキャレットを表示させて
おきたいのですが、どうすれば良いでしょうか。私で調べたところ、
Selection.setFocusでフォーカスを与えられるようですが、
1フレーム目にSelection.setFocus("_root.textFild1");と記述しても
キャレットは表示されません。。(文字を打ち込むことだけは出来るようですが)
一般的な方法を教えていただけると助かります。
687:Now_loading...774KB
07/10/20 23:20:33 +I8Fy8oj
class Book1 {
var vol:Number = 20;
class Book2 {
function Book2() {
trace(vol);
var titleS:Book1 = new Book1();
var titleJ:Book2 = new Book2();
クラスBook2でBook1のvol変数を参照したい場合どうすればいいのでしょうか?読み込みテストでtraceをしています
調べたらpublicを付ければ他のクラスからもアクセス可能とあって、
実際にpublic var vol:Number = 100としても「'vol' という名前のプロパティはありません。」とエラー
ただ試しにとtrace(Book1.vol);としてみたら「参照されているプロパティには、静的属性がありません。」とエラーが出ます
どうすれば読み込む事ができるのでしょうか?AS2.0です
688:Now_loading...774KB
07/10/20 23:35:43 /VMUh1e8
public function getVol():Number{
return vol;
}
でどうだ
689:Now_loading...774KB
07/10/20 23:36:14 0hjIJdd/
>>687
そこはBook1.volじゃなくて、titleS.volじゃない?
Book1、Book2てのはあくまでクラスという殻の名前で、
そのクラスの殻をかぶった実体はtitleS、titleJという
クラス変数なのだから。
変数の中身はBook2中のtrace(vol);のとこを
trace(titleS.vol)にすれば多分いける(クラスの宣言の仕方・位置によってはできないけど)。
690:Now_loading...774KB
07/10/21 01:10:29 z6nWa6iZ
>>687
場合によってはclass Book2 extends Book1 として継承すべきところかも知れないし、
public static var vol:Number = 20;と静的メンバにすべきところかも知れないし、
Book2のコンストラクタでfunction Book2(b1:Book1)として持たせておいてb1.volと参照べきかも知れない。
正解は687しか分からない。
691:Now_loading...774KB
07/10/21 14:45:22 ac0oRU+C
ものすごい初歩的な質問かもしれんが
ステージに自分でMCを配置して
そのMCのリスナーをドキュメントクラス(main.as)から登録ってどうやるんですか?
var MC_A:MovieClip;
MC_A.addEventListener( MouseEvent.MOUSE_DOWN, ふぁんくしょん );
エラー
「null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」
みたいな事になります。
ちなみに、Windows CS3のAS3.0です。
ご教授お願いします。
692:Now_loading...774KB
07/10/21 15:01:11 B82okr/G
FLash Lite1.1でボタン機能を無効にする方法を教えてください。
AS2.0だと
button.enabled =false;
でボタン機能がむこうになりますが、こんな感じでボタンを作動させない方法は
LITE1.1にありますか?
_visibleで非表示にもできませんよね?
693:Now_loading...774KB
07/10/21 15:15:13 wjACHB4b
外部ファイルの読み込みがうまくいきません。
FLASHで写真アルバムのようなページを制作しています。
読み込む方のphoto.swfを単独で開いたらうまくいくのですが、
親のmain.swfにload_□□mc.loadMovie("photo.swf");
でphoto.swfを読み込ませると最初のstop();まで読み込み、
次の写真へは送りボタンを押しても機能しません。
これはどういったことが問題なのでしょうか。
分かる方ぜひともお教えください。お願いします。
694:Now_loading...774KB
07/10/21 15:20:45 ac0oRU+C
>>693
たぶん、photo.swfのASに_root何チャラって書いてないか?
mainの中のphotoだからRootはmain.swfになるのよ
っで、AS2.0だよね?
695:Now_loading...774KB
07/10/21 15:28:20 ac0oRU+C
>>693
ちなみに、Rootの設定がAS内でできたような。。。
すまん、わすれた
696:Now_loading...774KB
07/10/21 15:33:41 wjACHB4b
>>694
ご回答ありがとうございます。
最近はじめたものであまりAS1.0とAS2.0の違いも分からないのですが
多分2.0です。
photo.swfの中のボタンに_root記述してありました。
photo.swfのシーン1のタイムラインに飛ばしたいのですが
_rootの代わりに何と記述すれば良いでしょうか?
697:Now_loading...774KB
07/10/21 15:37:19 ac0oRU+C
this.gotoAndPlay( )
だな
698:Now_loading...774KB
07/10/21 15:40:42 e47dlEKS
>>691
ドキュメントクラスってのがよくわからんが、オーサイズ時にインスタンス名付ければ
そのままそれが使えるけど。
>>692
FlashLite1.1はas1レベルだっけ?ヘルプ見て無ければ無いのでしょう。
>>694
パス指定が合ってるかどうか確認。_lockrootあたりをヘルプで調べてみ。
699:Now_loading...774KB
07/10/21 15:43:41 ac0oRU+C
>>698
あ、ほんまや。。。
ありがとう。
いちいち、宣言しなくてもいいですね。orz
700:Now_loading...774KB
07/10/21 16:10:33 wjACHB4b
693です。
みなさまありがとうございました!
_lockrootで解決いたしました。
701:Now_loading...774KB
07/10/21 16:20:09 wjACHB4b
もうひとつ質問です。
親swfからloadMovieで読み込ませている外部ファイルswfの
任意のタイムライン(ラベルをつけてある)に親swfからリンクできますか?
702:Now_loading...774KB
07/10/21 16:29:04 ac0oRU+C
インスタンス名.gotoAndPlay("ラベル名")
でいけんじゃね?
親SWFの子SWFにちゃんとインスタンス名を指定してあげること
703:Now_loading...774KB
07/10/21 16:48:04 wjACHB4b
>>702
ご回答ありがとうございます。
親swfに配置してあるボタンに
on (release) {
_root.load_shoppingmc.gotoAndPlay("tee");
}
と記述したのですが、やはり飛びません。う~む
704:Now_loading...774KB
07/10/21 17:06:24 jBT9Iizq
>>703
親swfのバージョンと、子swfのバージョンは?
あと、trace(_root.load_shoppingmc) でちゃんと配置されてるか試してみた?
705:Now_loading...774KB
07/10/21 17:30:21 wjACHB4b
ご回答ありがとうございます。
パブリッシュの設定はそろえてあります。
trace(_root.load_shoppingmc) はどこに記述すれば良いのでしょうか?
706:Now_loading...774KB
07/10/21 17:40:45 jBT9Iizq
>>705
on(release) に
707:Now_loading...774KB
07/10/21 17:43:49 wjACHB4b
出力画面にはundefinedとでました。
708:Now_loading...774KB
07/10/21 17:48:31 jBT9Iizq
パスが間違ってる可能性があるので、見てみてください
709:Now_loading...774KB
07/10/21 17:59:45 ac0oRU+C
load_shoppingmcはインスタンス名ですか?
load_shoppingmcを選択して左下のプロパティに「load_shoppingmc」ってでてますか?
710:Now_loading...774KB
07/10/21 18:47:14 QezD4BGt
setIntervalの話が出てたんでついでに質問。
URLリンク(www.adobe.com)
↑の、
>切り替えタイミング単純にをsetIntervalアクションで制御すると、時計と映像がずれる場合があり、
>時間と時計の動きを正確に合わせるという所も注意を要しました。
って具体的にどうやってのかね?
俺も1秒間隔で実行するスクリプトを組んだんだがたまにずれてくんのな。
711:Now_loading...774KB
07/10/21 18:55:56 ac0oRU+C
setIntervalで実行されるファンクション内で時間を取得してるんでは?
setIntervalでコンマ単位で実行
その中のファンクション内で1秒たったら実行
みたいな感じかな~
なんか、力技っぽいけど
712:Now_loading...774KB
07/10/21 19:04:09 ac0oRU+C
またまた質問で申し訳ないんですが。
Flash.swf?a=12
みたいな感じでGETで渡した値ってメインフレームの「a」に入るけど
AS3.0のドキュメントクラスを使って作ってるFlashの場合どうやって取得するの?
一応、自分の書いたAS張っておきます。
■ドキュメントクラス
package {
public class main extends MovieClip {
var a:Number;
function main(){
trace( a );
}
}
}
■メインフレームアクション
なし
■結果
null
orz...
713:Now_loading...774KB
07/10/21 19:18:51 wjACHB4b
>709
load_shoppingmcはインスタンス名です。
プロパティのところに表示されてます。
714:Now_loading...774KB
07/10/21 20:01:03 ac0oRU+C
>>713
すまん。わからん。
とりあえず、trace(_root.load_shoppingmc)でundefinedって出たなら
そんなインスタンスねえよってことだから
アクションスクリプト書くところの上部分「ターゲットパスを挿入」でみてみたら?
715:Now_loading...774KB
07/10/21 20:18:35 wjACHB4b
>>714
ありがとうございます!
なんとかやってみます。
716:Now_loading...774KB
07/10/21 20:28:32 zqyeyAul
>>712
trace(LoaderInfo(loaderInfo).parameters.a);
かな?
>>710
>>711の言う通り。setIntervelは結構いい加減。FPSによってもズレるから
時間とかカウントダウンは都度、PCの時間をチェックした結果を使った方がよさげ。
717:Now_loading...774KB
07/10/21 20:45:31 sgZ6F/K5
>>710
>>711
>>716
getTimer(); が楽だぜ。
718:Now_loading...774KB
07/10/21 21:09:08 ac0oRU+C
>>716
おお!!
助かる!!
ありがとう!
719:Now_loading...774KB
07/10/21 23:56:42 ac0oRU+C
またまたまた質問で申し訳ない
現在動的にPOSTデータを生成してるんですがうまく動きません。
ご教授お願いします。
動作環境:AS3.0
package {
import flash.net.*;
public class main extends MovieClip {
var PostRequest:URLRequest = new URLRequest();
public function main() {
test1();
}
function test1(){
for ( var N:Number in PostArray ){
myCString = "c"+N+ "_";
PostStr = myCString + "test";
PostRequest[PostStr] = N;
}
}
}
}
結果-----
flash.net.URLRequest のプロパティ c0_test を作成できません。
わかりくいソースですが、よろしくお願いします。
720:Now_loading...774KB
07/10/22 00:03:15 LJ9icd3x
環境 OSはWinXP-Pro,ソフトはFlash8-Pro
root(ステージ)上のマウスの位置を把握したいのですが出来ません。ASはrootの
フレームのイベントとして下を書いています。
this.mouseDown = function() {
trace("mouseX= "+_root._xmouse);
};
traceが表示されません。どこが駄目なのでしょうか?
721:Now_loading...774KB
07/10/22 00:06:10 qfpgHYn7
>>720
this.onMouseDown = function() {
trace("mouseX= "+_root._xmouse);
};
722:720
07/10/22 00:28:41 LJ9icd3x
>>721
ああ、そうだった。
さんきゅう。
723:Now_loading...774KB
07/10/22 01:20:02 eOPDElNt
>>719
URLRequestはdynamicじゃない
724:Now_loading...774KB
07/10/22 01:54:34 8gzli1sS
>>17
回答になるURLだけ。
URLリンク(livedocs.adobe.com)
725:724誤爆
07/10/22 01:57:03 8gzli1sS
おかしいな、スレタイ確認してから書き込んだのに(ノ∀`)
726:Now_loading...774KB
07/10/22 02:38:42 +xTs4Kq3
>>723
え!!
そうなんですか!?
でも、どうやって動的な変数を作るんですか?
727:Now_loading...774KB
07/10/22 03:15:52 +xTs4Kq3
>>726
URLVariablesですね。。。
自己解決しました。
>>723
ありがとうございました。
728:Now_loading...774KB
07/10/22 14:55:07 J3FeIoLe
>>711>>716>>717
なるほど時計と同期とればいいのか、
当たり前の話だけど目から鱗だった。
ありがとう。
729:Now_loading...774KB
07/10/22 16:09:21 MLLh9Prc
間違って 兆速で答えるスレ に書いてしまったのですがこちらにもポストさせて頂きます、申し訳ありません。
AS2におけるMovieClipLoaderについて質問です。
例えば、
_root
-testMC
-loadingMC
という構成でMCを2個置くとします。
testMCには単純に矩形を描画して、とりあえず試しに
this.onEnterFrame = function(){
this._rotation += 10;
}
とか書いて回しとくとします。
で、loadingMC内でMovieClipLoaderを使い、
jpgやswfを何かのタイミングで読み込むと、
ファイルのロード中(onLoadProgressが呼ばれている間)に
testMCの回転も止まってしまうのですが、自分の環境だけでしょうか?
ロードが終わればtestMCの回転も再開します。
onLoadProgress以外の処理が全てストップしているように見えるのですが…
読み込むswfやjpgのファイルサイズが小さい場合には気にならないのですが、
大きくなると止まっているのがよく分かる状態です…。
どなたかこの対処法などご存知ないでしょうか…?
730:Now_loading...774KB
07/10/22 16:25:01 gP/TdxM1
環境)OS:WinXP-Pro,Mem=1GB,ソフト:Flash8-Pro(Player7,AS2.0)
マウスポインタの動きについて質問です。
root内あるいはMC内でオリジナルデザインのマウスポインタを動かす際に
マウス(分解能は変えない)を20cmくらい動かしてもroot内あるいはMC内に
収めるにはどういう方法が考えられますでしょうか?
当方で試した仕組みは、オリジナルデザインのマウスポインタMCをnewMouseM
として、このイベントを(すいませんAS全部書きます)
onClipEvent (load) {
Mouse.hide();
moveRate = 50; //比率を50%に
}
onClipEvent (mouseMove) {
this._x = 0.01*_root._xmouse*moveRate;
this._y = 0.01*_root._ymouse*moveRate;
//moveRateが100の場合、動きが一致する
updateAfterEvent();
}
としました。これで一応は本物のマウスの半分の動きが実現できますが、本物
のマウスポインタがディスプレイ(15インチ,10024*768)の端に到達すると動か
なくなります。
マウス自体の分解能は変えれば一番手早いのですが、同じPCを他の用途にも
使うのでマウスの設定はなるべく避けたいです。なお、マウスポインタ自体の座標
を変えようと _root._xmouse = _root._xmouse/10; などとしましたが駄目でした。
アドバイスを願います。
731:Now_loading...774KB
07/10/22 18:08:55 vxixU9N4
Flash CS3Pro WinXPsp2 を使ってます。ActionScript3について質問します。
MovieClipを順番に並べて各MCにアクセスしたいんですが、
AS2でやってた方法が使えず困ってます。
var cnt:int;
var mc:MovieClip;
for (cnt=0; cnt<3; cnt++) {
mc= new bt();
mc.name = "bt"+cnt;
mc.y= cnt * 30;
container.addChild(mc);
}
これでリンケージされたムービーbtを配置することは出来たのです。
しかし、各MCにアクセスすることが出来ません。
例えば2個目のmcをvisible=falseにしたりとか、mc.visible=false でも bt1.visible=falseでもダメでした。
AS2の頃はmc[cnt] = new bt();みたいにして、
オブジェクト名を付けられた気がするんですが、AS3ではどうすればいいのですか?
732:Now_loading...774KB
07/10/22 18:19:03 qMJFNePx
>>729
そもそも、フレームレートはどの位?
速すぎるのは駄目だから、1fpsでは試した?
733:730
07/10/22 18:47:05 qMJFNePx
(訂正)
マウスの分解能は通常のマウスでは調整できないですね。
失礼しました。
代わりに コンパネ → マウス → マウスポインタ → ポインタの速度を選択する
で調整できますが、さっき書いた通り、他の用途を考えるとこれは避けたいです。
734:Now_loading...774KB
07/10/22 18:54:58 9lhBhZOc
>731
俺はAS2しかわかんないから違うことを言うかも知れないけど、例えば
mc[i]=this.attachMovie("myMC","mc_"+i,i);
としたとき、参照名である mc[i] と、インスタンス名である ["mc_"+i] は
別物だと言うことは理解できるよね?
きみはどうも、「オブジェクト名」という言葉に、参照名とインスタンス名の
両方をごっちゃにして意味を当てているように思える。
>731のソースで、変数mcに3回、別の意味を与えているけれど
ソレだと最後の1つしか、意味を成さなくないのかな?
735:Now_loading...774KB
07/10/22 19:03:04 /GsMCeXm
>>731
cs3でもできるcontainer["bt1"].visible=false
736:Now_loading...774KB
07/10/22 19:52:20 3U1uYhkA
>>731
735のでもいいしgetChildByName使ってもいいし配列に入れてもいいしいろいろ
やり方があるよ。個人的にはgetChildByNameを結構使う。
737:729
07/10/22 20:00:25 MLLh9Prc
>>732
試してみたのですが…
他にEnterFrameなりTweenなりのアニメーションが
動いている状態で外部読み込みをしたいので、結局1fpsにしてしまうと意味が無いというか…
1fpsの間にファイル読み込みが終わってしまって結局現象の確認もしづらいので。
ちなみに初めは30fpsでやっていました。
読み込むファイルの、描画的負荷が高い方が止まる率が高いように思います…。
サイズの大きいjpgであったり、それを配置してあるswfだったり。
でも、それほどサイズの大きくないjpgでも1瞬カクっとなる事もあり、、
loadMovieではこんな風になった記憶は無かったのですが…
738:Now_loading...774KB
07/10/22 20:40:00 w//pZjr4
>>737
10°単位なら力技で36フレームに分割するという手もある。
739:Now_loading...774KB
07/10/22 20:58:59 LM6crXUA
>>737
onLoadProgressで、ループ回してたりとか何か複雑な描画をさせてたりとかはないの?
onLoadProgressリスナーを使わなくても、描画が止まるの?
740:729
07/10/22 21:28:41 MLLh9Prc
>>738
回転させているMCは確認用に置いてあるだけで…回転しているMCはそれほど重要ではないんです、、申し訳ありません…
>>739
以下にソースを書きます。onLoadProgressにはtraceだけ入っていましたがコメントアウトしても変わりませんでした。
var mcLoader:MovieClipLoader = new MovieClipLoader();
var objListener:Object = new Object();
objListener.onLoadStart = function(target_mc:MovieClip){
target_mc._visible = false;
}
objListener.onLoadProgress = function(target_mc:MovieClip, nLoadedBytes:Number, nTotalBytes:Number){
//trace(Math.floor(nLoadedBytes/nTotalBytes*100));
}
objListener.onLoadInit = function(target_mc:MovieClip){
target_mc._visible = true;
}
mcLoader.addListener(objListener);
function loadingStart(){ mcLoader.loadClip("sample.jpg", MCLoader_target); }
で、外からloadingStart();を呼ぶと、onLoadInitの部分に来るまでストップしてしまう状態です。
テストで読み込んでいるsample.jpgは1MBちょっとありますが、それほどパフォーマンスに影響が出るサイズとも思えません、、。
というか737でも書いたのですが、処理が止まるタイミングがブラウザによって違うような挙動が見受けられました…。OSはMac OS Xで、
Safari→onLoadInitのtarget_mc._visible = true;のタイミングで1瞬止まる
Firefox(最新)→ロード開始~target_mc._visible = true;の間止まっている
これはFlashというよりブラウザのパフォーマンス(かwebエンジン)がFlash Playerの挙動に影響してると考えた方が良いのでしょうか
741:Now_loading...774KB
07/10/23 00:06:45 bmsGLdDw
>>734-736
ありがとう。
>>734
AS2ならattachMovieでなんとか出来るのは知ってるんだけど、
それをAS3に書き直そうとして混乱してる状態です。
>>735-736
まだAS3は全然馴染めてないので、教えてもらった方法で色々試してみます。
742:Now_loading...774KB
07/10/23 05:43:55 rIGy1SeP
連想配列を列挙するにはどうすればいいのか。
this._hash = new Object();
_hashに色々登録
for(var key in this._hash) {
}
とやっても列挙されない。
743:Now_loading...774KB
07/10/23 06:41:52 4gII7L/z
var hash:Object = new Object();
hash.s1 = "ABC";
hash.s2 = "DEF";
hash.s3 = "GHI";
for(var key in hash) {
trace(key + ":"+hash[key]);
}
744:Now_loading...774KB
07/10/23 06:46:04 rIGy1SeP
_hash[name]
と参照したいんだよね。
745:Now_loading...774KB
07/10/23 06:53:34 4gII7L/z
>>744
列挙って言ってるじゃんw
trace(hash["s1"]);
あとcじゃないんだから_つけるのやめれ。
746:Now_loading...774KB
07/10/23 07:47:15 rIGy1SeP
意味が分からん。
traceしてどうすんだよ。
747:Now_loading...774KB
07/10/23 09:45:12 kcpsvox1
なんでtraceに目がいっちゃうんだろうね、この子は
748:Now_loading...774KB
07/10/23 10:15:55 vmkXA1Uz
>>744
>>745に補足すると、要素名を引用符を付けない形で
指定したい場合は、 _hash.name と記述する。
foo["bar"] と foo.bar は同じ意味。
749:Now_loading...774KB
07/10/23 11:04:06 rIGy1SeP
name = "bar";
_hash[name]
とやりてぇんだよ。
_hash.name
はただのプロパティnameじゃねぇか。
750:Now_loading...774KB
07/10/23 11:19:28 vmkXA1Uz
>>749
そのとおり。じつはASに「連想配列」なんてものはないんだ。
オブジェクトのプロパティを代用しているに過ぎない。
だからそのルールに従ってくれ。
751:Now_loading...774KB
07/10/23 11:43:52 lvJbSOUs
3.0ならfor each in使うかdictionaryクラス使えばいいよ
752:731
07/10/23 11:51:22 1xuCy3hW
たびたび、すまんけど教えてください。
for (cnt=0; cnt<5; cnt++) {
var mc[cnt]:MovieClip = new MovieClip();
}
という感じをAS3にするにはどうしたらいいの?
mc0~mc5を作りたいだけなのに…
753:Now_loading...774KB
07/10/23 13:12:12 lvJbSOUs
>>752
いまいちわからんけど
var mc:Array = new Array()
for(cnt=0;cnt<5;cnt++){
mc[cnt] = new MovieClip();
addChild(mc[cnt]);
mc[cnt].name = "mc" + cnt;
}
trace(mc[0].name)
ってことかな?それとも
var _mc:MovieClip
for(cnt=0;cnt<5;cnt++){
_mc = new MovieClip()
_mc.name="mc"+cnt;
addChild(_mc);
}
trace(getChildByName("mc0").name);
ってことかな?
754:731
07/10/23 13:28:46 1xuCy3hW
>>753
ありがとう。
最初ので出来ました。
var mc:Array = new Array();
と
var mc:Array;
の違いがいまいち理解出来てない。
755:Now_loading...774KB
07/10/23 13:34:15 8DpBRXr5
>>754
変数宣言しているだけか、変数宣言と同時に初期化しているだけの違い。
756:Now_loading...774KB
07/10/23 13:46:06 4gII7L/z
初期化でなくインスタンス作成だべ
757:Now_loading...774KB
07/10/23 17:24:49 SA2GJuLv
//Etude.as
package{
import mx.core.*;
import mx.containers.*;
public class Etude extends Application{
public function Etude(){
addToCreationQueue( new Panel());
}}}
これ実行時にエラーになるんですが何ででしょうか?
758:Now_loading...774KB
07/10/23 17:48:13 4gII7L/z
>>757
エラーメッセージがでるならそれを書く。
出ないなら、自分が期待する状況とどう違うのかを詳しく書く。
759:Now_loading...774KB
07/10/23 18:39:08 SA2GJuLv
>>758
エラーメッセージが二つでます
エラーが出るだけで一応意図した通りの画面にはなってます
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
at mx.core::UIComponent/getStyle()
at mx.core::Container/::isBorderNeeded()
at mx.core::Container/mx.core:Container::createBorder()
at mx.core::Container/styleChanged()
at mx.core::Application/styleChanged()
at mx.managers::SystemManager/URLリンク(www.adobe.com)()
at mx.managers::SystemManager/::initializeTopLevelWindow()
at mx.managers::SystemManager/::docFrameHandler()
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
at mx.core::UIComponent/getStyle()
at mx.core::Application/mx.core:Application::layoutChrome()
at mx.core::Container/mx.core:Container::updateDisplayList()
at mx.core::LayoutContainer/mx.core:LayoutContainer::updateDisplayList()
at mx.core::Application/mx.core:Application::updateDisplayList()
at mx.core::UIComponent/validateDisplayList()
at mx.core::Container/validateDisplayList()
at mx.managers::LayoutManager/::validateDisplayList()
at mx.managers::LayoutManager/::doPhasedInstantiation()
at Function/URLリンク(adobe.com)()
760:Now_loading...774KB
07/10/23 18:44:26 SA2GJuLv
ついでに言うとas3です
761:Now_loading...774KB
07/10/23 19:22:15 VpHSj7ab
AS3.0
動的にライブラリから読み込みたいのですが、どうやるんですか?
AS2.0ならこんな感じだったかと
var tmpStr:String = "Class"+ event.target.name ;
tmpObj = new [tmpStr];
おねがいします。
762:Now_loading...774KB
07/10/23 19:47:37 rIGy1SeP
var hash = this._hash;
for(var key in hash) {
trace(key);
}
どういう理屈か知らんがローカル変数にコピーして回したらできたわ。
763:Now_loading...774KB
07/10/24 00:03:32 GQiP6Itg
>>759
意図している動作なのなら良いと思うがw
>>762
よかったねw
764:Now_loading...774KB
07/10/24 00:07:39 GQiP6Itg
>>761
AS2.0でそんなことするの初めて見たw
3.0なら普通にnewすればいいんだけどなw
まあ、どうせつりだろw
765:Now_loading...774KB
07/10/24 00:16:45 wpQfbzCf
ローカルのswfをdebugフォルダに入ってるSAFlashPlayer.exeで開くと、
「Flash 8 オーサリングツールはどこで実行されていますか」
っていうダイアログが延々出るんでうざったいです
このダイアログってどうやってでないようにすればいいんでしょうか?
うまく設定すると出ないようになるらしいんですがどうにもわかりません
お願いします
766:Now_loading...774KB
07/10/24 00:48:03 2VhgWVSn
>>764
そりゃたんにお前がド素人なだけだ
767:Now_loading...774KB
07/10/24 06:26:59 GQiP6Itg
>>766
そりゃ失礼しました。どうぞ、先生の回答をお願いします。
768:Now_loading...774KB
07/10/24 06:44:49 GQiP6Itg
>>765
CS3だけど、そんなメッセージ出ないよw
769:Now_loading...774KB
07/10/24 06:52:05 uRrCiYtD
GQiP6Itgから漂うオーラ
770:Now_loading...774KB
07/10/24 06:57:02 I9aNxL8h
>>761
getDefinitionByNameかな。こんな感じ。
var str:String = "Hoge"
var c:Class = getDefinitionByName(str) as Class
addChild(new c())
771:Now_loading...774KB
07/10/24 06:57:10 GQiP6Itg
>>759
エラーメッセージのままでしょ。実体化されてない、または初期化されていない
オブジェクトを参照しようとしたとか。
772:Now_loading...774KB
07/10/24 07:00:24 GQiP6Itg
>>769
くさくてごめんよっw
773:Now_loading...774KB
07/10/24 08:07:52 64F7xZqC
イライラ棒のような、コースに触れたらゲームオーバーといった物を作っているのですが
右クリックを禁止にする方法ってありますか?
右クリックをしたら指定したフレームに飛ばすというような
やり方があれば教えてください。ちなみにFLASH8を使用しております。
774:Now_loading...774KB
07/10/24 10:31:39 96cApCeQ
>>773
右クリックじゃなくて、右クリックによって可能になる特定の動作を
無効にしたいんじゃないのか?
AS2以前ならStage.showMenuでコンテキストメニューを制御できる。
あとは作り方次第。
うっかり右クリックしただけで特定のフレームに飛ばされたり警告出すような
クソ仕様はおすすめしない。
775:752
07/10/24 15:29:30 n2r5SaOW
またまた、お世話になります。
>>753で教えてもらったスクリプトにイベントリスナーをつけたんだけども、
引数の渡し方が良くわかりません。
var mc:Array = new Array()
for(cnt=0;cnt<5;cnt++){
mc[cnt] = new MovieClip();
addChild(mc[cnt]);
mc[cnt].name = "mc" + cnt;
mc[cnt].addEventListener(MouseEvent.CLICK, clickHandler); //ここで[cnt]を渡したい
}
function clickHandler(event:MouseEvent):void {
trace("クリックしたのはmc"+cnt); //何番目のmcをクリックしたか知りたい
}
かなり初心者的な質問だと思いますがよろしくお願いします。
776:Now_loading...774KB
07/10/24 15:31:42 Unkk+PUd
>774
いや、「イライラ棒」をやりたいと言っているんだから、
コンテクストメニューを出して、その間に(OSのフォーカスがムービーに当たっていないうちに)
ショートカットされるのを防ぎたいと言っているんじゃないかな。
俺は、「イライラ棒スタート!」の時に、ムービーをユーザーにクリックさせる
ことで、ムービーがフォーカスされていることを保証した上で、
フォーカスが外れたときに「ズルすんなバーヤ」と割り込めばいいと思う。
777:Now_loading...774KB
07/10/24 15:36:10 Unkk+PUd
>775
AS3には、MCのイベントにonPress()はないんだろうか。
俺ならMCのイベントで管理する。
そう言えばAS3のイベントは、イベントリスナーをaddする方法に
統一してるんだよねぇ。さぞかし面倒くさかろう。
778:752
07/10/24 16:25:33 n2r5SaOW
>>777
残念ながらAS3では、onPress()は使えないです。
779:Now_loading...774KB
07/10/24 18:13:49 b0Ww0dA7
>>775
cntを渡さなくても、event.targetを参照すればおk
780:Now_loading...774KB
07/10/24 19:00:07 lYVhsjTE
あ~
ックスしてぇ、まじでックスしてぇ
アスでックスしてぇ
781:Now_loading...774KB
07/10/25 00:28:17 KgbHXGW/
URLリンク(www.takopus.ru)
↑のブラーかける前の処理はどうやってるんでしょうか?
透明度下げたコピーを複数配置してるだけ?
782:Now_loading...774KB
07/10/25 00:35:02 SN5ZQWTW
>>781
おしい。
配置するのではなくビットマップにブレンドする。
783:Now_loading...774KB
07/10/25 02:34:47 TzFr2+vP
外部に定義したクラス(たとえばTest.asに記述したclass Test)は
一度読み込むと変更不可?
コンストラクタに描いたTraceが消しても出てきてるんですが。
わざと文法間違えてもエラー出ない。
784:Now_loading...774KB
07/10/25 02:35:48 TzFr2+vP
ちなみにFlashProfessional8です。
785:Now_loading...774KB
07/10/25 02:53:03 6yVvSMIH
君に罪悪感がある限り、いくら消しても消えないんだよ
786:Now_loading...774KB
07/10/25 03:14:51 T6GVh0dz
質問させて下さい。
フラッシュ(使用ソフトはFLASH MX2004)で単純なゲームを作っているのですが、
敵の出現テーブルを作った後プレビューしたら、敵が一回画面に出たら何回も無限に出てきてしまいます。
これを消す方法は無いのでしょうか?
787:Now_loading...774KB
07/10/25 03:40:51 whJwIs1L
>786
マルチ禁止
いくつの掲示板に書き込んだか知らないけど、
全部取り下げて、1つだけにしな
788:Now_loading...774KB
07/10/25 06:12:52 jZxOtniy
>>783
ASOファイルを削除して実行するとか。
まあ、Test.asセーブしないで実行したとかが大だけどね。
789:Now_loading...774KB
07/10/25 06:16:17 p03kdx1/
環境)OS:XPSP2 ソフト:Flash 8
もしかして、ライブラリに置いてある MC 等を使用→削除してもメモリは開放されない?
デカイ画像を使用しててメモリ使用量がすごい事に…
そのライブラリを持つ SWF を loadMovie 等で別の SWF に変えるとメモリが
開放されるんで上記のように思ったんだけど、教えてください。
790:783
07/10/25 06:57:53 TzFr2+vP
うーむ。
多分ファイルの更新日時が関係してそうです。
VMで実験してるんですが、ローカル上でやってる限りは問題ないようなので。
791:Now_loading...774KB
07/10/25 07:03:57 jZxOtniy
>>790
ブラウザのキャッシュクリアしてみ。
792:Now_loading...774KB
07/10/25 09:16:54 okiGzzI4
>>789
何を教えればいいのか俺には分からないんだが
変に重くなったりしない限りはそういうもんなので心配しないで大丈夫
793:Now_loading...774KB
07/10/25 09:27:10 a7tUtpms
テキストボックスに入力したものをボタンを押すと
他のテキストボックスに入力される っていうASってある?
あれば教えていただきたい
794:Now_loading...774KB
07/10/25 10:46:06 7B7qaW8b
>>782
㌧クス
795:Now_loading...774KB
07/10/25 12:01:44 TzFr2+vP
MovieClipの_widthを設定すると表示されなくなってしまうんですが、
これは仕様ですか?
LoadMovieの後です。
_xとか_yは設定してもちゃんと反映されて表示するんですが。
796:Now_loading...774KB
07/10/25 12:44:32 T6GVh0dz
>>787
すいません。カキコしたのはこことflash質問スレのみです。
flash質問スレの質問取り下げてきます。
797:775
07/10/25 14:18:39 DzABpMvh
>>779
ありがとう。
ちょっと思ったのと挙動が違うのですが、(MC上のobjectが参照されてしまうので)なんとなく理解できました。
も少し試行錯誤してみます。
>>795
AS3の.widthなら普通に反映されましたよ。
798:Now_loading...774KB
07/10/25 17:25:51 1wgJvXC7
mcの中にloadMovieしたswfに含まれるmcをアクセスする方法が分かりません。
まず、_rootに配置したmc「aaa」の中に配置したmc「bbb」にアクセスするには
_root.aaa.bbb
と記述すればオケ。
_rootに配置したmc「aaa」の中に読み込んだ外部swf「bbb.swf」の中にあるmc「ccc」にアクセスするにはターゲットパスはどう記述すればいいのでしょう。
通常通り
_root.aaa.ccc
と記述しても、上手く動いてくれません。
_nameをtraceしようとしてもundifinedと言われて困ってしまっています。
誰かヘルププリーズ。
799:Now_loading...774KB
07/10/25 17:35:04 1wgJvXC7
>>798
>mcの中にloadMovieしたswfに含まれるmcをアクセスする方法が分かりません。
mcにアクセスする方法が分かりません。
800:Now_loading...774KB
07/10/25 17:49:00 eGg7yBOp
>>798
MovieClipLoder.loadClipとonLoadInitでヘルプれ
801:Now_loading...774KB
07/10/25 18:59:45 TzFr2+vP
矩形ツールで四角を描いて、それをムービークリップとリンケージを適応し、
それをダブルクリックして編集状態にすると、矩形が出てきますが、
編集でのAlpha値はいじれるんですが、ActionScript上からいじる方法が見つかりません。
this._alphaだと上に置いたムービークリップも消えてしまうので、
シェイプ(?)のみにAlpha値を適応したいんですが、何か方法はあるんでしょうか?
802:Now_loading...774KB
07/10/25 19:01:47 whJwIs1L
>801
アルファ弄りたい部分だけMCにする
803:Now_loading...774KB
07/10/25 23:03:09 iHmsOFFX
質問です。
actionscript内部で、動的に wmode を設定することは可能なのでしょうか?
"transparent" と "設定無し" を、必要に応じて切り替えたいのです。
どなたかご教授下さいませ。