ActionScript 誰かが物凄い勢いで解答するスレ 13
1 :
Now_loading...774KB :
2006/06/29(木) 20:43:49 ID:yHa4zmYO
2 :
Now_loading...774KB :2006/06/29(木) 20:45:16 ID:yHa4zmYO
3 :
Now_loading...774KB :2006/06/29(木) 20:46:19 ID:yHa4zmYO
シェアードオブジェクトの名前を持つ配列を元に複数のシェアードオブジェクトを取得し、取得したシェアードオブジェクトを同時に同期させたいです。 配列の中身、長さは一定ではないです。 同期はonSyncで。 インスタンスの中のonSyncが動かないので困ってます。
>>4 おそろしく意味不明な文章だな。
具体的にこういうことを実現したいと言ってくれ。
動かないので困ってますと言われても、ソースがなきゃなんともいえないよな。
ソース、手元に無いんだわ。 自分でも訳ワカンネと思ったw 処理のイメージはこんな感じ。 これは極端だけどw nc = new NetConnection(); nc.connect("サーバのアドレス"); for(配列がなくなるまで回す){ hoge = getSharedObject(配列[i]); hoge.connect(nc); hoge.onSync = function(){ //配列[i]の中身の名前のシェアードオブジェクトが更新されたら実行 } }
connectより先にonSyncを定義した方がいいとかそんなのなかったっけ
>8 そういや有ったな。そこは無視して。 実現したいのは、動的に取得した複数のSharedObjectの更新を同時に監視する事。
>>1 さん乙です
すみません、初歩的な質問かもしれませんが…
Sharedobjectで呼び出したテキストが、一度テキストフィールドを
クリックしないと表示されないのですが、フレームを読み込んだときに自動的に表示させる方法はあるのでしょうか?ヒントになるASなどあれば教えていただきたいです。お願いします。
環境:FLASH8 マカー
>>9 更新を同時に監視。。。ってよくわからんが、複数あるSOLにトランザクション番号を
保存するフィールドでも作って、それが等しいかどうか比べるとか。
>>10 普通に表示されるけど。ソース見ないとわからん。
onSyncが更新を見てくれ筈だが、複数で出来るかってことか。
for文の中にonSyncを書いても大丈夫なの?
多分駄目。 だから、どうやるのか?って事かと。
つ ポイントは、soArray.push(so)して SharedObjectへの参照をなくさないようにすること。 // ---------------------------------------------------------------------- // NetConnection つなげるよー var nc:NetConnection = new NetConnection(); nc.onStatus = function(info:Object) { if (info.code == "NetConnection.Connect.Success") connectSO(); }; nc.connect("rtmp://ipadd/appname/"); // ---------------------------------------------------------------------- // SharedObjects つなげるよー var soNames:Array = ["unko", "chinko", "manko"]; var soArray:Array = new Array(); function connectSO() { for (var i:Number = 0; i<soNames.length; i++) { var so:SharedObject = SharedObject.getRemote(soNames[i], nc.uri, true); so.onSync = function(info) { trace("変更キタコレ"); }; so.connect(nc); soArray.push(so); } } // ---------------------------------------------------------------------- // 定期的に更新しようぜー (本当は接続終わってから開始するべきだけどめんどくせーので省略 setInterval(function () { for (var i:Number = 0; i<soArray.length; i++) { if (!soArray[i].data.count) { soArray[i].data.count = 0; } soArray[i].data.count++; } }, 2500);
16 :
Now_loading...774KB :2006/06/30(金) 23:15:05 ID:oxFAlmF4
「A」というflashの中の「1」というMCに外部swf「B」を呼び出す時に、 「A」の側で、「B」が完全に読み込まれたか調べて、「B」の再生が始まったらどうこう〜という事がしたいのですが、どうすればいいですか?
>>16 > 「1」というMC
識別子は数字からはじまってはいけない。
> 「A」の側で、「B」が完全に読み込まれたか調べて、
MX2004以降なら、MovieClipLoaderを使うと便利。
hensu1=101、hensu2=102、hensu3=103・・・ という感じで変数を定義したいのですが、 for (i = 0; i < 100; i++) { var eval("hensu" + i):Number = (i + 100); } このように記述してもうまく動作しません。 ひとつずつ宣言していくのはホネが折れます。 何かよい方法があればアドバイスお願いします。
>>18 配列使えば?
var my_array = new Array();
for ( i = 0; i<100; i++){
my_array[i]= i+100
}
配列アクセス演算子(っていうんだっけ?)で、いいじゃないの? for (i=0; i<100; i++) { this["hensu"+i] = (i+100); }
>>19 できました。
配列ってこんな使い方もできるんですね。
ありがとうございました。
23 :
16 :2006/07/01(土) 04:21:13 ID:SH5y200k
>>17 ありがとうございました。
まだよくわからないので続けてMovieClipLoadeについて質問させてください。
onLoadComplete = function([target_mc:MovieClip], [httpStatus:Number]) {}
を使えばいいのだと思うのですが、
8フレームでstopをかけつつ、以下のように書いたのですが、パラメータが必要だとエラーが出てうまくいきません。(aaaaはMCのインスタンス名です)
onLoadComplete = function([aaaa:MovieClip], [httpStatus:Number]) {
gotoAndPlay(9)
}
[aaaa:MovieClip] を [aaaa] に変えるべきですか?
それとも [httpStatus:Number] を何か変更しなければいけないのでしょうか・・・?
>>23 ヘルプのサンプルプログラムでどう使ってるか確認。
25 :
23 :2006/07/01(土) 04:35:56 ID:SH5y200k
>>24 onLoadComplete = function([target_mc:MovieClip], [httpStatus:Number]) {}
MovieClipLoader.loadClip() でロードされたファイルが完全にダウンロードされたときに呼び出されます。
としか書いてなくてサンプルがないので。。。
>>25 onLoadCompleteは読み込みが完了したタイミングで実行。
onLoadInitが読み込んだswfの1フレーム目が再生されたときに実行。
28 :
Now_loading...774KB :2006/07/01(土) 13:35:31 ID:mFRIPiSH
あさだ ってうとうとすると「ちとちしち」ってなるのはどうやればかいじょできますか いまはIMEいちらんってのでうってるのですが
>>28 釣り臭いんだがAlt + カタカナひらがな/ローマ字
Flash4(FlashLite)で this.onEnterFrame=function(){ _x+=1;} みたいに 毎フレーム移動とかするにはどう書けばよろしいでしょうか?
こちらで定めた時間からの経過時間を表示させるようなものを作りたいのですが (たとえば、7/1からの経過時間を表示させるような感じ 7/2にアクセスしたら24:00〜 7/3にアクセスしたら48:00〜) どういったスクリプトを書けばいいんでしょうか?
34 :
Now_loading...774KB :2006/07/01(土) 23:02:01 ID:Xd2K/1ry
AS3でリンケージしたサウンドを使うときはどうやればいいですか? new XXX(); ←リンケージ名 とやってもダメのようです。 attachMovieもできないみたいし、AS3のリンケージ全般に詳しい方がいましたら 教えてください。
35 :
Now_loading...774KB :2006/07/02(日) 00:26:58 ID:6SmTO9dA
AS3というかnew XXX();って、識別子ってそうやって使うもんか?
>>34 AS3というかAS自体わかってんのか?
どういうソース書いてダメなのか提示しないとわからん。
>>34 AS3というか、それ以前の問題な気がする。
リンケージ設定しただけで書き出してないとかさ。
var str:String = new String("re@@@@place"); trace(str); str = str.replace("@",""); trace(str); 結果: re@@@@place re@@@place 新しく増えたString.replaceメソッドの挙動がアホなんですが・・・。
trace(this.mc._x); trace(this.mc.x); 結果 undefined 116 マジか・・・・ 全然仕様違うじゃねーかAS3.0
var entF:Function = function(){ x++; } this.mc1.addEventListener('enterFrame', entF); this.mc2.addEventListener('enterFrame', entF); イベントハンドラ使い方が違う・・。
正規表現あるの?
なんかさ、AS3.0がAS2.0のマイナーバージョンアップと勘違いしてるみたい。 大幅な変更になるってことはUSサイトでずいぶん前から明らかだし。
>>44 どういう話の流れに対して書いてるのか知らんが
3.0には大幅な変更が入っている
ってことと
ドキュメントに記載されたことと実際の挙動が違う
ってのは違うだろ
「ドキュメントが間違っている」のであれば、それもまた違う話
どこからドキュメントと違うなんて話が出てくるんだ?
Flash8から9で変わったのはスクリプト部分だけ?
FlashPlayerは9になっても、もちろん古いFlashを見ることが出来る。 何ら問題ない。あたりまえだけどね。 作る側が、AS2.0とAS3.0で違うということ。べつに、AS2.0で作ったのが 見れなくなるわけでもないし、今まで通り2.0で作ってなんら問題ない。 ただ、3.0と2.0はソースレベルでは相容れないよということ。
マイナーバージョンアップとして捕らえられない奴は苦労するだろうな ぜんぜんわかってないって事だからなww
50 :
Now_loading...774KB :2006/07/02(日) 19:12:07 ID:9lwENiW3
AS3.0って8で使えるの? どうやってAS3.0試してるのか教えて。 おれの8Proではパブリッシュ設定とかでは2.0までしかないぞ。
9で使えるよ
52 :
Now_loading...774KB :2006/07/02(日) 20:28:52 ID:UlfZUmuj
>>50 AS3はFrex2で使える。Frex2はadobeから提供されてる。
3.0の具体的な仕様を知りたいならkamijo akihiroのブログでも読んでみ。
質問です インスタンスの階層変えるってどうやるんでしょ? _root.test.sprを _root.sprに持っていきたいんですが。 さっぱり分かりませんorz できれば座標もそのままで
コピペ
ASで頼む
無理。 どうしてもというなら元インスタンスのパラメタをセーブして attachMovieでそれを初期値としたインスタンスを作って元を消す。 というか、設計自体間違ってる。
> というか、設計自体間違ってる。 同意。 そんなコトをしなくちゃいけなくなる状況って何だろうな。
こういう要件自体は、例えばエディタみたいの作っていれば階層を上下させる要件は出るよね
普通は「配置したいもの」と「_rootからの配置」は論理的に分けるから
>>56 のような方法で実装することになる
もしエディタ的なものなのにそうやって悩んでいるのであれば、要件に対するアプローチの方向を間違えている(設計が間違っているとも言える)
エディタとかはデータが中心だから、プロセスからのアプローチじゃなく、データからのアプローチで実装した方がいい
ゲームとかネタフラで悩んでいるのであれば、多分根本的に何か間違っていると思う
深度だけで解決できるはずの要件だったとか
このスレの存在意義は、どんな質問の仕方をすると叩かれるかを学べるとこだね。
× 叩かれる ○ 理解してもらえない ○ 突っ込まれる
61 :
Now_loading...774KB :2006/07/03(月) 17:15:17 ID:ghbCNBZn
質問です。 ゲームのセーブデータをSharedObjectで作ってみました。 任意でセーブとロードが出来ました。 しかし、時々勝手にデータがセーブされる時があり、調べてみると「アプリケーション終了時に自動的に保存される」と言う事が分かりました。 任意セーブのみ可能でアプリケーション終了時に勝手にセーブをさせない方法はあるのでしょうか?
前スレだっけ、他かもしれんがその話題あったな。 結論としてdeleteする。ただし、その結果その変数は使えなくなる。ということだったとおも。 プログラム変数にロードしたらすぐdeleteしてしまえばいいかと。
返答ありがとうございます。 早速試してみます。
64 :
Now_loading...774KB :2006/07/03(月) 18:58:19 ID:u8v2WoAO
>15 Arrayにぶち込んでも参照きえねーか?
>>64 いちおー、FCS1.5+FlashPlayer8で確認済。
ちなみにpushしないと1個の更新(たぶん、最後のSharedObject)しか取れない。
ところで、ActionScript 3.0勉強したくてFlash9 Public Alphaダウンしたんだけど
解説のってるところ無いのかな?
ここしか知らない、、
[akihiro kamijo]
ttp://weblogs.macromedia.com/akamijo/
67 :
65 :2006/07/04(火) 14:04:55 ID:WJ7eXEiA
68 :
Now_loading...774KB :2006/07/04(火) 18:31:30 ID:Vhmi+ziQ
class classifyData { var datstr:String; var datstr_array:Array = new Array(); var dat:Array = new Array(); function classifyData(datstr) {datstr_array = datstr.split(",");} public function getData() { for (var i:Number = 0; i<datstr_array.length; i++) {dat[i] = datstr_array[i];} return dat; } } ------------------------ var AA = new classifyData("1,ATB,Available in comfort and aero design"); var Aarray:Array = AA.getData(); var BB = new classifyData("0,Clipless Pedals,Excellent cleat engagement"); var Barray:Array = BB.getData(); trace(Aarray); trace(Barray); クラスの練習で書いてみたのですが、トレース結果が同じになってしまいます。 何が間違ってるのでしょうか。
>>68 varじゃなくて、コンストラクタで初期化すればおk。
基本、変数の宣言時には new 出来ない気がするんだけど(ごめん、理解あやふや
どうしてエラー出ないんだろ。
class classifyData {
var datstr:String;
var datstr_array:Array;
var dat:Array;
function classifyData(datstr) {
datstr_array = datstr.split(",");
dat = new Array();
}
public function getData() {
for (var i:Number = 0; i<datstr_array.length; i++) dat[i] = datstr_array[i];
return dat;
}
}
ActionScriptは簡単にはエラーが出ません
datには参照が入ってるからじゃねーの。 なんで、わざわざ転送してるかわからんが。
72 :
69 :2006/07/04(火) 20:07:36 ID:WJ7eXEiA
はーはー。 コンストラクタの外で、初期値を設定した変数(インライン初期化)は クラスのFunction.prototypeプロパティに定義されると。 だから、AA、BB両方のインスタンスで共通になるんだね。 Flash OOP 19ページ辺り。 てか、そもそも↓でいいじゃんと思うけど。 class classifyData { private var datstr_array:Array; function classifyData(datstr) { this.datstr_array = datstr.split(","); } public function getData() { return this.datstr_array; } }
65 FMSだと動かねーわ。
正確に言うとリファレンス型がそうなるわけで、Number,Stringなどのプリミティブ型は 普通にインスタンス変数として初期化される。クラス変数にするにはstaticをつける。
75 :
68 :2006/07/05(水) 09:55:39 ID:ZKfRhZzf
OOPがよくわからずヘルプサンプルソースを適当にいじってました。 みんなの話がいまいちまだわからず、as2.0になじめない orz とりあえずもっと勉強します。 みなさんありがとう。
77 :
Now_loading...774KB :2006/07/05(水) 19:30:23 ID:oQTHpudo
>>76 野中氏は
onEnterFrame = nullじゃなくて
delete onEnterFrame;
の方が良いって言ってたけどなぁ。
理由は忘れたが。
質問しますー。 MovieClip拡張クラスを作って ライブラリのMCシンボルのプロパティのリンケージでAS2.0クラスに拡張クラス名をいれると 関連付けられることがわかりました。 そこで、プロパティのリンケージを操作せずにASのみでMovieClip拡張クラスを既に存在しているMCに動的に関連させることはできるでしょうか? ご存知の方、ご教授ください。
80 :
Now_loading...774KB :2006/07/05(水) 23:23:58 ID:KQYo0IMb
WIN IEのポップアップブロックで困っています。 HTMLにjavascriptで function opn() { window.open("hoge.html","win","width=300, height=300"); } という関数を作りました。 これをAタグから呼び出す方法だとうまくいくのですが、 flashのボタンMCからgetURL("javascript:opn()")で 呼び出すとブロックされてしまいます。 おなじ関数を呼び出しているのにgetURLだけが引っかかるのは 何が原因なのでしょうか。 またこの回避策があるとしたらどうしたらいいのでしょうか。 ネットでいろいろ探したのですが、それらしきものは見つかりませんでした。 知ってる人いますか?
81 :
Now_loading...774KB :2006/07/05(水) 23:46:41 ID:NAJAqIlf
83 :
80 :2006/07/06(木) 00:13:21 ID:LpIuP4Zp
84 :
Now_loading...774KB :2006/07/06(木) 00:32:49 ID:LkiRuFHh
どこで質問すればいいのかよく分からなかったので、スクリプトってことでここで質問させていただきます。 htmlからswfに変数を送る際に、FlashVarsを使えば送れるのは分かったのですが <param name="FlashVars" value="hensuu=●●●(変数)"> (ちと分かりづらいですが)hensuuという変数に別の変数を突っ込む事はできるのでしょうか。 いろいろ試してみたのですが、やはりflash内部では●●●という文字列としてしか扱われないので。。。 やっぱり連動させるならJavaとかphpとかの方が楽なんでしょうかね。。。
>>80 wmode入ってると、ポップアップブロック引っかかるよー。
>>84 具体的に何がやりたいの?
例えば、Flash内部にあるどの変数を指定するか。を、flashvarsで送りたいとかだと
this[hensuu]とかで指定すればおk。
>>86 htmlからプルダウンメニューで項目を選ぶと、flashの絵が変わるような感じです。
flash内部にメニュー作ろうと思ったのですが、130項目x6 くらいなのでいかんせん量が多くて。。。
例えば魚の絵を操作する場合だとすると
頭の項目で「角」と選ぶと、flashの魚に角の絵が追加される。
ヒレの項目で「大」を選ぶと、flashの魚のヒレが大きいヒレの絵に変わるみたいな感じです。
絵の変化は、htmlから受け取った変数でタイムラインが動く感じです。
>>87 それ、Flashから操作する方式のほうがよくないか?
わざわざhtmlに選択肢を置かなくちゃいかんの?
>>84 ユーザーが選んだデータをhtmlからswfにデータを送るならjavascriptつかう。
>>88 1つのプルダウンメニューに、130個くらい項目があって、さらに種類ごとにプルダウンメニューがあるので
Flashでプルダウン作ると大変かなぁと。。。
┌──────┬─┐ ┌──────┬─┐
| メニュー... |.V.| | ...|.V.|
└──────┴─┘ ├──────┼─┤
.. | ●●●.. |三|←このスクロールが欲しい
.. | ×××.. ├─┤
.. | | |
.. | |. .|
.. └──────┴─┘
ズレてるかもですが、Flashでプルダウン作ると右のやつみたいにスクロールが作れないような気がしたので。。。
プルダウンから選択→選択した部分の変数をflashに送る〜みたいな流れにしたいのです。
>>89 AA書いてる間に解答が!
むむ、やはりjava必要ですか。
javaも考慮しつつもう少し頑張ってみます。
皆様ありがとうございました!
JavaとJavaScriptは別物なわけだが。
>90 余計の世話かもしれませんが、 130個もの中から選ばせるには サムネイルの一覧を作って選ばせる等の工夫をしないと 面倒くさくて利用してくれない気がします 現状で使いやすいと思ってますか?
>>92 そのあたりの区別は大丈夫です。
クセでjavaと。。。
>>93 Flash内でプルダウン作れれば、もう少し分かりやすく作れるのですが
htmlで作るのであればあの状態で作るしかないかなあと。
メニューの中身は結構単純な物なので、使いやすくは無いですがあのままでも一応それなりに機能する(といいなぁ)と思います。
まあ、ユーザーがそれを使う頻度によるよね。会員登録の住所みたいに一回で済むなら、 130個とかあっても良いだろうが、日常業務で頻繁に繰り返し使うものだったら、 UIを考えないと悲惨な結果が待っている。
利用側としては、Flashで出来ることをJavaScriptに委ねるのはあんまり…。JavaScript切ってるだけで使えなくなっちゃうし、だったら全部JSで作ればと思ってしまう。
利用者側としてはどんな技術使ってもいいから動いてくれればいいだけ そもそも背景技術なんてのを理解できるのはほんの一握りの人間だけ とは言えFlash単体より複数技術の組み合わせの方がリスクは高い でもそこは前提条件ってのを明示すればいいだけの話 > だったら全部JSで作ればと思ってしまう。 これはリスク回避の点から間違い。 JavaScriptというかDHTMLははブラウザ毎の実装が微妙に違うためにFlashとは比べ物にならない。 エンジンが複数の会社で作られるDHTMLとMacromedia(Adobe)だけで作られる全Flashではリスクのレベルが違う。
>>97 そんなことはないだろ
いまやAJAX > FLASHなんだから
>>97 > そもそも背景技術なんてのを理解できるのはほんの一握りの人間だけ
そうだろうね。
だからこそ利用者としては、うまく動かない時に、原因がFlashなのかJSなのか何なのか
判断しづらいよりは、最初から原因は全部FlashとかJSとかにわかれてくれてた方がマシだし
諦めもつくって言いたかったんだけど。
100 :
Now_loading...774KB :2006/07/06(木) 14:24:49 ID:Wd1RosUG
初歩の初歩ですみませんが 動くボタンを作りたくて質問です。 例えば、上下に動いているボタンで、マウスオーバーしたときは左に少しずれ、 外れたときは右にぶれてから元に戻るというようなものを作りたいのですが 階層的には ムービークリップ:上下に動くムービークリップ Lボタン Lオーバー時:左にぶれるムービークリップ のようになると思うのですが マウスが外れたときの動作はactionscriptで定義しないといけないのでしょうか? (Rolloutというやつですか?) 動かすにはボタンに相対?座標を指定して動かすのでしょうか? また1フレームごとの動作を指定するのでしょうか? 質問ばかりですみません。
101 :
Now_loading...774KB :2006/07/06(木) 14:26:58 ID:wP39Qjrr
a
102 :
Now_loading...774KB :2006/07/06(木) 15:10:17 ID:hZGDSJqR
正直
>>90 を見て、素直にコンポーネントのコンボボックスで作ればいいじゃんとオモタ・・・。
JS -> SWF をやりたいなら、ExternalInterfaceクラスね。
ActioScriptリファレンスとかにサンプルコードとか付いてるから、それ見りゃ分かると思う。
>>98 Ajax(≒JavaScriptがりがり使う)だとブラウザ間の挙動の違いを吸収するのに
けっこう苦労するよー。Flash内で完結できるなら、Flash内で完結しちゃう方が楽。
>>100 いろんなやり方があるけど個人的には。
ボタンのムービークリップを用意して、タイムラインにそのままアニメーション作成。
onRelaseでgotoAndPlay()でアニメーションするかな。↓な感じ
ttp://read.kir.jp/file/read51174.gif ASで移動させるのも楽しいけdね。
>>98 リスク回避の観点から書いてるってのが理解できないのか?
DHTMLだけでも面倒なのにAjaxなんて持ち出して更にリクスを上げてどうする
>>99 だから、判断しづらいも何も問題が起きても理解できない人の方が多いんだって
大多数の利用者は問題の切り分けして解決なんてしてくれない
コンテンツの提供側に文句を言うか、それを使わなくなるかのどちらか
だから前提条件を明示しろって書いてる
105 :
100 :2006/07/06(木) 16:26:54 ID:Wd1RosUG
>>102 回答ありがとうございます
ラベルを使って制御するやり方ですね
イメージがつかめたのでチャレンジしてみます
107 :
Now_loading...774KB :2006/07/07(金) 05:06:54 ID:LTyM6s3T
ボタンをクリックして画面Aから画面Bへ切り替えたり戻ったりしたいのですがどうすればよいのでしょう?
普通にフレームに書いてるならgotoAndStopつかうとか。
109 :
Now_loading...774KB :2006/07/07(金) 08:48:24 ID:3byMiGJU
アクションスクリプトでムービーの背景色を変えるのはどうすればいいんですか
>>109 MCのことを言ってるなら背景色は無いよ。MC内にあるグラフィックやら、子MCやらに
対しての色の変化は設定できるけど。ほしい背景色の矩形作って配置する。
111 :
109 :2006/07/07(金) 11:23:54 ID:rc+VZbFn
>>110 そうだったんですか
なんか処理が重くなりそうなんで敬遠したかったんですが
もし背景色変えれる機能あったとしても 110の方法と重さ変わらないと思うんだけど・・
113 :
Now_loading...774KB :2006/07/07(金) 16:36:02 ID:rUdV3DeQ
今actionscriptの本を見ながら勉強中なのですが その本の「for」の項目で 九九の計算を1の段から9の段まで順に実行する、 という以下のような例文が載っています。 var result_str = "" for (var dan = 1;dan <= 9;dan++){ for(var i = 1;i <= 9;i++){ var kuku_str = "dan"+"×"+i+"="+dan*i; result_str += kuku_str + newline } } 四行目が「段×行=答え」の文字列になるということはわかるのですが、 var dan もvar i も数字なのに、どうして前者は""の中にあって 後者は""の中にないのかが理解できません…。 あと五行目のnewlineってのは、なにをさしているんでしょう??
>>113 "で囲むと文字列扱いになる
なので、その例だとkuku_strはdan×1=1とかdan×5=25になる。
newlineは改行。
いつのことか忘れたけど、newlineで改行文字ではなくて
復帰文字になったりしたいやな記憶があるので、
おれならdanの""を取って\nで改行する、
var kuku_str = dan+"×"+i+"="+dan*i+"\n";
で、result_str += kuku_str + newlineを消す。
>114 >なので、その例だとkuku_strはdan×1=1とかdan×5=25になる。 !その通りですね、danのまま書き出されますね。 ここ、勘違いしてました。恥ずかしい。 newlineについては\nを覚えておくことにします。 どうもありがとうございました。理解しやすかったです。 結局、この例文、おかしいってことですよね? やたらと誤植多いし、買い替え検討しようかな…。
はじめまして。Flash Media Serverを使ってライブ配信をあれこれ試してます。 NetConnection/NetStreamクラスを使うとカメラ等のキャプチャデバイスからの入力を サーバに送ることが出来ることは確認したのですが、キャプチャデバイス以外(例えば 外部のFLVファイルを連続的にとか、FLASH内で動的に生成されたムービー等)を Live Streamとしてサーバに送り、それを他のブラウザ上のSWFでLive Streamとして視聴 させることはできないでしょうか?
117 :
61 :2006/07/07(金) 19:52:45 ID:o0OoBkCX
>>61 でSharedObjectについて質問した者です。
62さんの助言を元に、
//dataNoはセーブファイルのナンバー
sd = SharedObject.getLocal("save_0"+dataNo, "/");
Flg1 = sd.data.Flg1;
Flg2 = sd.data.Flg2;
delete sd;
のようにしてみました。
しかし、やっぱり勝手に保存「される時がある」状態です。
同じ事をやっても保存される時とされない時があり、もう何が何だかよく分かりません。
どなたかSharedObjectに詳しい方、改善方法は無いものでしょうか?
118 :
61 :2006/07/07(金) 19:55:17 ID:o0OoBkCX
あっと、ちなみに上のはデータをロードする時のもので、データをセーブする時は sd = SharedObject.getLocal("save_0"+dataNo, "/"); sd.data.Flg1 = Flg1; sd.data.Flg2 = Flg2; sd.flush(); delete sd; となっております。
>>117 Flg1やFlg2は構造体じゃないよな?
セーブやロード処理は関数内で処理し、ローカル変数のsdから、
メインタイムラインだかどこだかのゲーム中変数に代入するといい。
122 :
120 :2006/07/07(金) 22:48:19 ID:jWp/Vx9H
deleteしても参照が切れないってどーゆー事だよw データが書き換わるごとにセーブされるって事!? ゲーム等で敵の情報を構造体にする事は一般的な手法だろ なんでそんな仕様なんだ使い物にならねーじゃねーかあああ …どうすればいいの?
自分も正しく理解してるわけじゃないんだが、 変数sdをdeleteしても、ローカルにあるsolのデータは消えないために 参照関係が維持されてしまうようだ。 そうでなくとも構造体をそのまま代入するのは好ましくないと思うんで 構造体の場合はfor...inとかでプロパティを逐一コピーして使うのがいい。 arrayならconcatでもおk。
ver.7の頃はそういう仕様ではなかったはずだ SharedObjectを変数代わりに 使いたかった大馬鹿野郎がメーカー側に進言した為にこのような結果に なったのだ プレイヤーの意図しない所でsolが書き換わってたらsave,loadなど 何の意味も無い つまりflashでゲームなんか作ってんじゃねぇ! とメーカーから ユーザーへの暗黙の…なんだその つまり氏ねと
SharedObjectの仕様を元に戻せ adobe
126 :
61 :2006/07/08(土) 04:04:30 ID:nCT7DQo3
>>71 さん
助言を下さってありがとうございます。
助言を元に色々やってみたのですが、やはり勝手にセーブされたりされなかったりします。
もしかしたら他の部分が間違ってるのかも知れませんので、なるべく忠実に再現してみます。
//配列Flgを宣言
var Flg = new Array();
for(i=0;i<64;i++) {
Flg[i]=0;
}
//dataのロード
function dataLoad(dataNo) {
var sd = SharedObject.getLocal("save_0"+dataNo, "/");
Flg = sd.data.Flg;
delete sd;
}
//dataのセーブ
function dataSave(dataNo) {
var sd = SharedObject.getLocal("save_0"+dataNo, "/");
sd.data.Flg = Flg;
sd.flush();
delete sd;
}
上記の関数を、セーブロード時にタイムライン上で使用します。
_root.dataSave(2);
こんな感じなのですが、「ここが悪いかも」と言う部分は無いでしょうか?
127 :
61 :2006/07/08(土) 04:19:29 ID:nCT7DQo3
うほ、アンカーが全然間違ってました。
>>119 さんでした。
>>127 勝手にセーブと言ってるけど、どうなったから勝手にセーブされたと判断してるの?
その部分があいまい。
それは普通にオブジェクトのプロパティとして使えるというだけのこと。 .data以下のものはセーブ対象になるが他に設定しても、 プログラム変数としては使えるがセーブされないよということ。
SharedObjectについて報告
ウチはdeleteすれば勝手にSolファイルは書き換わらなかったお
当然構造体のままブッ込んでるが問題無し 構造体内の変数が変わるごとに
Sol読み込んでtraceで確認したから間違いない…はずだ
環境はWinXP MX2004 AS1,2共に問題無し
>>123 はもっとkwsk説明頼む
61はvar Flg = new Array(); の varをとってタイムライン変数にしれ 参照ターゲットは間違ってないんだろうな? dataNo固定にしてテストしてるよな? あと環境書け
133 :
Now_loading...774KB :2006/07/08(土) 15:37:09 ID:MZOTeZGH
135 :
61 :2006/07/08(土) 17:16:21 ID:nCT7DQo3
何となく解決しました? まだ良く分かってませんが今のところ勝手にセーブされてません。
環境はWinXP、Flash Professional8、AS2.0です。
ターゲットは間違っていないと思います。dataNoを0に固定してもダメでした。
勝手にセーブされていた箇所は、イベント管理用のフラグで、
新規スタート>セーブ>最初のイベントでフラグが変わる>セーブせずに終了>セーブしたところから再開>何故かフラグが変わっていてイベントが起きない
こんな症状でした。他の変数も時々セーブされたりもしていましたが、主にこのフラグが良くセーブされました。
結論としては、
sd.data.Flg = Flg;
としていたところを
for(i=0;i<64;i++) {
sd.data.Flg[i] = Flg[i];
}
要するに多次元配列を、まとめて入れるのでは無く一つずつにしてみたところ、勝手にセーブされたりされなかったりする症状が消えました。
>>129 さんや
>>132 さんのレスを見る前でしたので、それらはやっていないのですが、今のところ大丈夫なようです…。
Flashをメニューとして使おうと思っています。 Flash内に配置されたボタンが押されたら、そのFlashの張られているページの インラインフレームに表示されるページを変えるにはどうすればいいんでしょうか?
>136 getURL();
138 :
136 :2006/07/10(月) 22:15:34 ID:Zib5yx2L
いま137のを見て、getURLについて検索してやってみましたが、どうもうまくいきません。 新しいウィンドウでそのURLのページが開かれてしまいます。 //ActionScript on (release) { getURL("filename.html", "framename"); } //HTML <iframe src="" name="framename" frameborder="no" scrolling="auto" width="601" height="490"></iframe> なにかおかしいところはありますか?
>>138 getURLでやるのってフレーム(インラインじゃないやつ)じゃなかったっけ?
javascriptでいいなら、
htmlの name="framename"のところを id="framename"にして
on(release){
this.getURL("javascript:void(document.getElementById('framename').src='filename.html');");
}
140 :
136 :2006/07/11(火) 08:13:26 ID:nBIkb+Wr
139さん レスありがとうございます。 早速javascriptの方法でやってみましたが、どうも動きません。今度は何も起こらなくなりました。 ブラウザで件のページを開いて、直接アドレスバーに javascript:void(document.getElementById('framename').src='filename.html') を入力して実行すれば、確かにインラインフレームが切り替わるので、javascriptおよびhtml側には問題ないように思えます。 どうもflashがjavascriptを実行できていない気が・・・ flashはswLiveConnect属性をtrueにして張らないとjavascriptが動かないそうなので、そうしています。 うーん難しいです。
OSX10.4 Flash8Pro 1フレーム目にMC_A、2フレーム目にMC_Bがあり、 ボタンを押すと1、2フレームを切り替えるようにしています。 MC_A, MC_Bはそれぞれのフレームで、 MC_A.swapDepths(this.getNextHighestDepth()); MC_B.swapDepths(this.getNextHighestDepth()); という風に深度を変更しています。(attachMovieしたMCよりも上に来るようにするため) で、1フレームから2フレームに行き、その後1フレームに戻ると キーフレームで分けていたのにMC_AとMC_Bが同時に表示されてしまいます。 なぜこうなってしまうのか教えてください。
142 :
Now_loading...774KB :2006/07/11(火) 18:05:18 ID:SCMMGpFS
WinXP + FlashMX2004Pro
クラスのメソッド内に定義されたコールバック関数から、
クラスのメンバ変数にアクセスするにはどうすればいいでしょうか?
下記の例だと onData 関数内で、メンバ変数の fuga にアクセスしたいのです。
--- hoge.fla ---
var hoge:Hoge = new Hoge();
hoge.SendAndLoad();
--- Hoge.as ---
class Hoge
{
private var fuga:Boolean; // メンバ変数の fuga
function Hoge()
{
this.fuga = false; // メンバ変数の fuga を初期化
}
function SendAndLoad()
{
var result_lv:LoadVars = new LoadVars();
result_lv.onData = function(result_str:String)
{
// ここで Hoge クラスのメンバ変数の fuga に値を入れたい
};
var send_lv:LoadVars = new LoadVars();
send_lv.foo= "bar";
send_lv.sendAndLoad("
http://localhost/hoge.cgi ", result_lv, "POST");
}
}
>>141 swapDepths使うと、キーフレームの意味なくなります。
フレーム移動する度にいらない方のMCをremoveMovieClipする。
>>143 ありがとう。
もやもやが解消しました。
145 :
142 :2006/07/11(火) 20:30:57 ID:SCMMGpFS
以下のように、onData の引数として this の参照を与え、
それのプロパティ fuga を操作するという形で実現できました。
でもこれで本当にいいのかなあ?
function SendAndLoad()
{
var result_lv:LoadVars = new LoadVars();
result_lv.ref = this;
result_lv.onData = function(result_str:String)
{
// ここで Hoge クラスのメンバ変数の fuga に値を入れた
result_lv.ref.fuga = true;
};
var send_lv:LoadVars = new LoadVars();
send_lv.foo= "bar";
send_lv.sendAndLoad("
http://localhost/hoge.cgi ", result_lv, "POST");
}
}
146 :
Now_loading...774KB :2006/07/12(水) 00:26:27 ID:Uwc1g0n/
>>142 とりあえずこうするかな〜。
同じfunction内だったら、onData内でも参照できるから
result_lvには突っ込まず、ローカル変数にしちゃう。
function SendAndLoad() {
var target = this;
var result_lv:LoadVars = new LoadVars();
result_lv.ref = this;
result_lv.onData = function(result_str:String) {
target.fuga = true;
};
var send_lv:LoadVars = new LoadVars();
send_lv.foo= "bar";
send_lv.sendAndLoad("
http://localhost/hoge.cgi ", result_lv, "POST");
}
個人的にはこっちの方好みだけどね。Delegateクソ便利。
import mx.utils.Delegate;
〜中略〜
result_lv.onData = Delegate.create(this, function(result_str:String) {
fuga = true;
});
147 :
146 :2006/07/12(水) 00:55:58 ID:Uwc1g0n/
>>146 削除し忘れ → result_lv.ref = this;
ところで質問!
getURLの第二引数で window が指定できるじゃないすか。
特定のターゲットのウィンドウで開きたい時
getURL("hoge.html", "WindowName");
ってすると、最初に新しいウィンドウ開いて
後は何回クリックしても同じウィンドウに上書きされるはずなんだけど
クリックする度に新しいウィンドウが開く。
とりあえず下記で見つけたんだけど、
もっと詳しい説明書いてあるところないかな・・・?
ttp://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=203&forum=8 一応:
WinIE / MacIE / Safari(コンカラ) → 新しくウィンドウがバンバン開く。
FireFox+NN (Gecko) / Opera → 正しく動く (最初だけウィンドウ開いて後は上書き)
説明が分かりづらくてスマン。もうちょい詳しい挙動が知りたいだけなんだけd。
>>147 リンク先には2ページ目があるので見てみては。
>>148 レスどうもです。
一応、2ページ目も見たんだけど、javascriptの説明になってて
「第二引数でウィンドウ名を指定した時の挙動の詳細」は書いてないんすよねー。。
Flash9のベータ版入れてみたんですが、 AS3でパッケージをimportしなくてもflash.mediaやflash.eventの 関数がグローバルのように叩けてしまうんですが、これって仕様?
>>150 質問なんですが、
Flash9の仕様は公開されているんでしょうか?
If you want to use a class that is inside a package, you must import either the package or the specific class. This differs from ActionScript 2.0, where importing classes was optional. ↑ってことはパッケージインポートしないと使えないってことだと思ってたんだが・・・ AS3の仕様はFLEX向けだろうからFlash9は若干違うのかもね
それ使ってるコンポーネントとかライブラリの中にあるんじゃね?
155 :
Now_loading...774KB :2006/07/13(木) 15:17:52 ID:MixsuYFa
すみません、マルチです。 こちらのスレの存在を知らなかったので。 質問です。Flash8proです。 ステージの外にある マウスカーソルの座標を取得することは可能でしょうか? 試しに、 ダイナミックテキストにマウスカーソルのX座標を表示させる 100x100ピクセルのflashを作り、 HTMLで画面左上に配置して実験してみたのですが、 onEnterFrame = function(){ zahyo(←ダイナミックテキストの変数)=_root._xmouse; } としてやってみたら、 ステージ内ではちゃんと座標が取得でき 99までは表示されたのですが、 ステージ外だと反応がなくなりましたが、 なぜかステージ外でクリックをした場合は座標が返ってきて ダイナミックテキストに表示されました。 クリックをしなくても座標を取得したいのですが、 可能でしょうか? よろしくお願いします。
156 :
Now_loading...774KB :2006/07/13(木) 16:32:18 ID:fsBkZdkT
ロジック(理論)に関しても質問できますか? 環境:初代MX ASを使ってピクチャークロスワードを作りたいと思っています。 マスをクリック判定で□→■→×→□・・・ と変更させてゆく使用です これを実現するために私が起せたロジックは マスの個数分ムービークリップを作成しhitTestとon(Press)で一々判定をする、という 非常に貧弱なものでした。 確かに5×5のフィールドではこれは可能(w)ですが、これを25×25で再現しようとすると えらい労力です。 私は、指定した座標から四角形を塗りつぶす関数、直線を引く関数、 及び数字(文字)を表示する関数があれば、これを簡単に実現できるものと考えますが 資料及び経験不足のため五里霧中です。 手解きを頂きたいです。
>>156 クリック判定は共通の処理でできるからマスになるMCを1つ作ってそれを
duplicateなりattchMovieなりでループ処理でグリッド上に複製すればいいだけだよ。
んで各MCごとにIDふって正解かどうかの判定は各MCのIDを参照すれば良いだけ。
他にもやり方はあると思うけど・・・
何マスあろうが関係ナス
158 :
Now_loading...774KB :2006/07/14(金) 13:27:35 ID:xgkB4vvZ
ダイナミックテキストに、あらかじめ文字列が入っていて、 マウスでクリックすると、その文字列が消えて、入力できるように するには、何か方法はあるでしょうか? ヒントをお教えください。 たとえば、問い合わせフォームみたいなもので、 あらかじめ「こちらにご入力ください」と記載されていて、 ユーザがその枠内で、クリックすると、文字が消えて入力できるように なる。 という具合です。 よろしくお願いします。
>158 テキストフィールドのイベントハンドラ関係 addListener onSetFocus
160 :
159 :2006/07/15(土) 20:25:52 ID:61hoNu0p
ちょ、スレ止まってるって 俺が悪いの?
( ´д)ヒソ(´д`)ヒソ(д` ).
getURL( '
http://www. 〜', '_self', 'GET' ) ;
これを指定したメールアドレスに送信されるようにしたフォームをつくりたいのですが。
メアドの指定はどのようにすればいいのでしょうか。
>>162 Flashからのメール送信は不可能
CGIとsendmailと連携する
>>162 mailto でメーラー起動させられる。
メーラーをつかわない送信フォームはFlashだけでは無理。cgiと連携させる。
>162
'
http://www. 〜'って書いてあるから分かんないけど、cgiに飛ばすん?
getURLじゃなくて、loadVarsクラスを使う。
btn.onPress=function(){
myLoadVars=new LoadVars();
myLoadVars.mailadd="メアド";
myLoadVars.memo="今日やっと24-1stシーズン-見ました";
myLoadVars.send('
http://www. 〜', '_self', 'GET' ) ;}
みたいな。まぁヘルプ嫁。
166 :
Now_loading...774KB :2006/07/16(日) 00:22:46 ID:pAVKjb2M
テキスト入力にキャレットをASでおくことはできますか?
>166 アイコン等は無理だけどフィールドの色を替えることはできる テキストフィールドのプロパティをとりあえす嫁 ところで158=162=166か?
>167 補足。わりぃ。getCaretIndex()ってのがある。 使ったことは無いから、この件はパス
169 :
Now_loading...774KB :2006/07/16(日) 00:43:23 ID:pAVKjb2M
>>168 それは参照しかできないっぽい・・・?
あと158,162とはまったく別人。
もなちゃとみたいに
読み込み→テキスト入力にキャレット表示、みたいなことがしたんだけど・・・
ぁ、後半は不特定多数に向けたお願いです。
>169 そかー、失礼しました 単純にフォーカス当てればいいだけだよな onLoad setFocus
フォーカスは当たるけどキャレットが出てこないんですよ
HTMLに書き出してみた?
どうして?
>>174 ムービープレビュー(デバッグプレイヤー)で見るとフォーカス移動わからない。
普通のプレイヤーで見れば分かるよ。
>>175 フォーカスはちゃんとなっているけどキャレットが出てこないんです。
HTML、プレイヤーでみたけど表示されず・・・
>>176 テキストフィールドのタイプはテキスト入力になってるよね?
>フォーカスはちゃんとなっているけど
キャレット出てこないのにどこで判断してるんだろう?
onSetFocus?
フォーカス与える記述見せて貰わないとちょっと分からない。
普通にSelection.getFocus()があったの忘れてた
>>178 テキスト入力です。クリックすれば表示されるし・・・
あとsetFocusしか使ってないです。
>179 一問一答できりが無いなw setFocusのASを晒せ とりあえず基本 btn1.onRelease=function(){Selection.setFocus("_root.t1");}
>>180 MC:mc_t,インスタンス名:ins_t
onClipEvent(load){
Selection.setFocus("ins_t")
}
>181 これでどう?Selection.setFocus("_root.ins_t"); >クリックすれば表示されるし・・・ クリックした時にフォーカスされるので、 最初からフォーカスされてるかは関係ないっす
>>182 問題としているのはフォーカスじゃなくてキャレットの問題なんです。
181でフォーカス問題は解決されているんです。
だけど、半角文字はいれられても全角文字が入力時に別に表示されたり
文字を消せなかったりするんです。キャレットが表示されないから・・・
もなちゃととか入力するところに読み込んだら自動的にいくじゃないですか?
それを目指しているんです。
181だとパスが合ってないから、フォーカス当たってないしキャレットも出ない こちらから質問なんですが、181でフォーカスがins_tに当たってるのは、 どうやって確認してるんでしょうか? とりあえず、新規ファイルで最小構成で試せば、キャレット出せる つまり、いまの制作物のバグと考えていいのかな?
半角文字入力です。 フォーカスがあってる→入力できる で判断しています。 入力できるのにキャレットが出てこない。 そちらではキャレットの確認はできましたか?
sound1,sound2......sound30の30個のSoundオブジェクトを作成したいのですが for(i=1;i<=30;i++){ sound+i=new Sound(); } 等としても無理でした。地道に30個書くしか無いんでしょうか
>>186 それだと変数の値 + 変数の値 = new Soundとかいう扱いになってるから、
this["sound" + i] = new Sound() ;
に入れ替えれば良いと思いますよ。
[]ってそう使うんですか。 ありがとうございます
>185 どうもお互い言葉たらずで話がすすみませんねw キャレットは出てます。ただ、IEからフォーカスをはずすと消えてしまいます。 不安定です。こっからは試行錯誤になってしまいますが、 mc_t.onEnterFrame = function() { Selection.setFocus("_root.mc_t.ins_t"); }; lis = new Object(); _root.mc_t.ins_t.addListener(lis); lis.onChanged = function() { delete mc_t.onEnterFrame; }; これで解決します。当然、ブラウザ上のflash本体にフォーカスが当たってないと駄目。 あと、オブジェクトアクションじゃないけどね; こんなんでどうでしょう?
補足すると、なにかのイベントの後はキャレットは安定して表示される onEnterFrameじゃなくてもいい
onClipEvent(load){ if (hensuu=="あ"){ _root.AAA.gotoAndPlay(1); }else if (hensuu=="い"){ _root.AAA.gotoAndPlay(2); }else if (hensuu=="う"){ _root.AAA.gotoAndPlay(3); }else (以下略) コンボボックスによる操作で変数hensuuの値が変わったときに、あるMCのタイムラインを操作したいのですが 上記の文だとサッパリ動きません。 OnClip〜が問題っぽいのですが、if文がOn内じゃないとダメだと警告されるので少々詰まっております。 どなたかご教示お願いいたします。
>>192 よく分からないけど、
onClipEvent(enterFrame){
かな。
>>193 enterFrameでもダメでした。
俺Flashさんに嫌われてるのかな。
ちと順序が逆になりましたが、一応詳細を書きますと
コンボボックス内には「あ」〜「お」の項目があって、「あ」を選ぶと変数「hensuu」に文字列「あ」が入ります。「い」以下も同じ。
ムービークリップ「AAA」は、タイムラインが1〜5まであり、hensuu内に入っている文字列によってページが移動する感じです。
「あ」が入っていたら1、「い」だったら2みたいな。
ムービークリップ「AAA」に
>>192 で書いたスクリプトを記述。が、まったく動かず。
ダイナミックテキストで、変数をhensuuにすると、「あ」とか「い」とか表示されるので変数は受け取っているようです。
コンボボックスから変数に値を設定しているコードはどうしてる? そこにgotoAndPlay()も書けばいいだけなんじゃない?
>>195 trace(hensuu)で値返ってくる?パスが違うんじゃないの。
>>196 マクロメディア(アドビ)HPのテクニカルノートにあったやつを少しいじっただけです。
>>197 か、返ってこない。。。
ちといじってみます…。
解答ありがとうございます。
AS3やAS2のOOPなソースやファイル群のサンプルを配布しているところはありませんでしょうか? いまいち勉強しようにも、構造が掴めずに苦戦しておるのであります。
>>199 普通にJavaの入門書とか読めばいんでね。
Flash 8Pro / Mac OS10.3.9 Flash Player 7を対象にしたビデオ(.mov)の読み込みをしました。 展開方法/Webサーバーからのプログレッシブダウンロード エンコード/Flash 7(標準) コンポーネントMedia Playbackを使用しています。 このコンポーネントMedia Playbackの右上に クリックでdisplayサイズを変更するボタンがついているのですが このボタンの機能を無くそうと思い、 (できれば、ボタン自体の削除をしたいので) ヘルプを読みました。 ASでは無く、スキンの変更かと思い、 ComponentFLA内のMediaComponents.flaを開きましたが、 空?というかなにもありません。 コンポーネントMedia Playbackの 変更の手順を教えてもらえると嬉しいです。 よろしくお願い致します。
202 :
Now_loading...774KB :2006/07/18(火) 22:55:36 ID:fn93Aytd
>>201 あんまエレガンントではないけど、
↓で隠せるよ。playerは、MediaPlayBackのインスタンス名ね。
player._chrome._visible = false;
203 :
201 :2006/07/19(水) 00:51:11 ID:haZnN9+v
>>202 ありがとうございます。
隠せました。
でも、_chromeはヘルプの検索にも無かった?
みたいなのですが。
MediaPlayBack _chromeでぐぐったら
海外サイトばっかりでした。
読み込んでみます。
204 :
202 :2006/07/19(水) 01:15:46 ID:OeKBFg/i
>>203 あ、ゴメン。
_chrome自体を、_visible = false しちゃうと枠まで消えちゃうんで、
↓の関数を呼び出す方がよさげ。
player._chrome.setEnabled(false);
俺も前に、拡大ボタンを無効にしたくてリファレンス探したんだけど
特にそれに当たるが見つけられなくて、for (var name in player) で、
チマチマ探して消してた。
205 :
201 :2006/07/19(水) 02:35:30 ID:haZnN9+v
>>204 枠も消してデザイン替えたかったので、
_visible = falseの方法で
かえって助かりました。
player._chrome.setEnabled(false);
これでボタン設定だけ無効になるんですね。
最短で解答してもらえてラッキーです。
_rootのフレームにfunctionを登録しておいて 子のムービークリップからそのfunctionを呼び出した時に 呼び出した子のムービークリップの階層を「_root.XXX.YYY」のような感じで取得したいのです 最後は呼び出したMC自体なので、「._name」で取れるのですがその親たちの名前を どうやって持ってきたらいいかで悩んでます
207 :
206 :2006/07/19(水) 04:37:03 ID:D7sbcBAW
自己解決いたしました 申し訳ございません
>>200 そう思ってFlash OOP買ったんですが、
初っ端からオブジェクト指向の知識があるものとして説明されていてサッパリでした。
やっぱりJAVAから入るべきですかね?
>>208 オブジェクト指向の解説書買えばいいじゃない
Javaでオブジェクト指向開発しようとしても結局オブジェクト指向開発の解説書を買うことになるだけ
Javaはオブジェクト指向開発しかできない言語ってわけじゃないし
それにActionScriptは言語実装がJavaと違うから、Javaで覚えてもActionScriptへの覚え直しが必要
そんなの両方覚える必要が無いならややこしくなるだけで邪魔なだけ
だったらオブジェクト指向の解説書とFlashOOPで最初からActionScriptとしてのオブジェクト指向開発を覚えればいい
210 :
Now_loading...774KB :2006/07/19(水) 11:52:12 ID:k+kTKxx/
>>206 単純に、_rootのfunctionを呼び出す時に自分自身(呼び出したMCへの参照)を
引数につければいいじゃん。
■_root
function test(mc:MovieClip) {
mc._xscale = 200;
trace("お前を横長にしてやろうか!");
}
■子MC
_root.test(this);
て、あれ、自己解決してた。。。スマン。
212 :
Now_loading...774KB :2006/07/19(水) 14:13:18 ID:h1c2nJ/A
ASで時間経過をテキストフィールドに表示したいのだけど、 どういう記述にすればいいのかわからず、詰まっています。 AS辞書で”時間”で検索してもみつかりませんでした。 何かヒントください。
>>212 getTimerとかでいいんじゃないかな。
>>212 AS関連の検索をするなら英単語でも調べるとヒットしやすい。
この場合ならtimeとかtimerとかね。
>>213 が簡単だと思うけど、応用も身につけたいならDateクラスについて読む。
あぁ、そうか。英単語で調べるべきでした。 getTimerで解決しました。ありがとうございました。
216 :
Now_loading...774KB :2006/07/19(水) 21:52:00 ID:c4QFcSyY
環境: FlashMX2004(Player7) substringで文字列を抽出する際の質問です。 元の文字列txt1: FIELDJOB(A=MOM,INDEP=9.62e+009) から位置A,Bを 指定して、txt1.sbstring(A,B) により 9.62e+009 を取り出そうとした ところ、プラスが抜けてスペースになった 9.62e 009 が得られました。対策はどのようにすればいいでしょうか?
>>216 そうなったASを書かないと何ともいえんがな。
var txt1:String = "FIELDJOB(A=MOM,INDEP=9.62e+009)";
trace(txt1.substr(21,10));
218 :
Now_loading...774KB :2006/07/19(水) 23:35:37 ID:wrxtMWmn
すみません今リアルタイムでトラぶってます。 速攻で教えて頂けると大変助かります。 AS1 から、今自分がいるドメインを取得する方法はありますでしょうか? どなたかご教授いただければと思います。
trace(_root._url); var my_lc:LocalConnection = new LocalConnection(); trace(my_lc.domain()); もっといい方法ないかな
trace(_url.match(/^.+?:\/\/([^:]+)(:.+)?\//)[1])
正規表現使えないんだった 代わりにindexOfでちょっと簡単に i1 = _url.indexOf("://")+3; i2 = _url.indexOf("/",i1); trace(_url.substring(i1,i2))
>>221 宣言せずに使えたっけ?<RegExp
あれ?
226 :
218 :2006/07/20(木) 01:05:34 ID:WHa0wfq8
227 :
216 :2006/07/20(木) 01:15:07 ID:btBme1Pn
>>217 さんきゅうです。抽出作業の記述は対象範囲をmom1以降として、
配列 indep[id] に格納しつつ
indep1 = txt1.indexOf("=", mom1);
indep2 = txt1.indexOf(")", mom1);
indep[id] = txt1.substring(indep1+1, indep2);
trace( indep[id] = "+indep[id]);
としています。抽出範囲は正しいのですが、プラス記号が消えてしまします。
再びアドバイス願います。
情報を小出しにするのは最近の流行なのか?
>>218 突っ込まれる前に該当AS全部晒して。たぶんそれが一番早い
>>227 txt1 = "FIELDJOB(A=MOM,INDEP=9.62e+009)";
var mom1 = 15;
indep1 = txt1.indexOf("=", mom1);
indep2 = txt1.indexOf(")", indep1);
var id = 0;
var indep = new Array();
indep[id] = txt1.substr(indep1+1, indep2-indep1-1);
trace(indep[id]);
で試したけど問題なかった。
txt1の値を外部から読み込んだりしてない?
それだと確か+はスペースに置き換わるはず。
trace(txt1)で確認する。
230 :
216 :2006/07/20(木) 02:32:45 ID:btBme1Pn
>>229 そうです。txt1は外部Txtです。
trace(txt1)をやってみます。
ところで、+ → スペース って、AS上では何か
意味のある変換なんですか?
application/x-www-form-urlencoded の仕様
232 :
Now_loading...774KB :2006/07/20(木) 05:38:14 ID:Cq9pbyUq
FlashMX2004です。 改行の数がわからない文章を、for文を使って改行数をカウントしようと しています。AS2.0で最大整数の予約語というのはあるのでしょうか? 使い方は、例えばこれがMaxNumという表現だったとき、 for(i=0; i<MaxNum; i++){ //改行を感知する記述 if(文末まで達した){ break; } } として、breakでfor文を出るようにしたいと思っています。
>>232 i=0;
while (1) {
//改行を感知する記述
if(文末まで達した){
break;
}
i++;
}
trace("最大行数は"+i+"です");
これでは?
235 :
232 :2006/07/20(木) 06:08:20 ID:Cq9pbyUq
>>234 Thx。
ところで、最大整数ってのは存在しないのでしょうか?
「最大整数の予約語」というのはない 「"予約語" は、コードで識別子として使用することができない単語です。これは、ActionScriptによって予約されているためです。」 最大整数って何?bottomScrollじゃなくて? この場合だったら行数が変わるとMaxNumも変わるけど変更不可にするってこと? それならwatch()なり、setterなりで出来るけど行数は変わるかもしれないから不都合出てこない?
質問ですー。 Num = 1〜10の数字 を 戦闘に0を付けた2文字の文字列("00"とか"01"とか"04"とか"10")に するにはどのような処理をしたらよいでしょうか? 単純に思いつくのは10未満ならば"0"+String(Num)で、10ならばString(Num)のまま。 ですが、条件文などを使わずに効率の良い方法ないでしょうか?(文字列操作のみで実現できる方法とか)
>>237 Str="0"+Num
trace(Str.substr(-2,2));
条件文使ったほうが効率は良いと思うけど
条件文だけど、条件演算子使ってみた。 for(var num = 0;num<20;num++){ trace( num < 10 ? "0"+num : num); } 0埋めは桁数指定した関数作った方が汎用性あって良いと思う。
占いのコンテンツを作りたいのですが、どこから手をつけていいのか分からないのでご教授ください。 環境はXP、FlashMXです。 コンテンツの内容としては、3択(A〜C)の質問が10問あり、それぞれの組み合わせで違った占い結果(三種類)がでるという内容のものです。 例えば3択の内、A3点B2点C1点とし、最終的に20以上なら1、10以上20未満なら2、10未満なら3といった感じの分岐にしたいのです。
>>240 変数は扱えますか?
ボタンを押したら任意の値を出力する、ということはできますか?
ボタンを押したら変数に任意の値を加算する、ということはできますか?
if()などの論理式は扱えますか?
上記が出来れば作れる。
わかんなかったらその内容をググったりして調べれば出来る。
それでも理解できない部分はここで質問してみるといいかも。
>>241 レスありがとうございます。
普段タイムライン寄りの作業しかやらなくて、actionscriptは全然なので、
とりあえずリストアップしていただいたその四項目について調べてみます。
>>232 trace(str.split("\n").length)
>>239 for(var num = 0;num<20;num++){
trace( typeof(num < 10 ? "0"+num : num));
}
これだけだったら特に問題はなさそうだけどね。
>>243 ヒント "\r"
>>244 思わずペプシ吹いたwww弁償汁w
>>245 ん、何かあるのかな?
アンカーついてるし、なにか不満ならそういっておくれ。
>>246 for (var num = 0; num<20; num++) {
trace((tokuninanimo=num<10 ? "0"+num : num)+" これに1を足すと");
trace("こうなる "+(tokuninanimo+1));
trace("");
}
trace("どうでもいいことだけどね");
>>247 あのう、勝手に追加してこうなると言われても困るんだが。。。
最初の条件の範囲でのコードなので。
>>248 だから
>>245 で言ってるのに
9以下が文字列で10以上が数字になる
なにか処理を加えた時に容易に不具合が起きるだけで
”これだけだったら特に問題はなさそうだけどね。”
そういっておくれと言われて、わかりやすく言ったら困られたw
>>249 言いたいことはよくわかるけど、trace文で何か問題があるのかと
おもった。traceはNumberも自動的にStringとして出力するし。
そんなわけです。
おれ、こんな感じの function 使ってる。 function padLeft(digit:Number, src:Number) { var src_str:String = String(src); var pad:String = ''; if (src_str.length>=digit) return src_str; for (var i:Number=1; i<=digit; i++) { if (i>src_str.length) src_str = '0'+src_str; } return src_str; }
>>249 口で簡単に説明出来る事をASにするのが悪いだろ。
大体が質問者が求める仕様通りの記述に対して、
何か言い出す時点でキティ。
横からスマンが >大体が質問者が求める仕様通りの記述に対して、 >何か言い出す時点でキティ。 別に仕事で仕様通りにしなけりゃならないわけじゃないんだから問題ないだろ。 俺は人様の質問で勉強したりしてるんで、 何らかの不具合がでそうなスクリプトならその対処法も知りたい。 だからそういうこと言うのやめてほしいな。
>>250 【最初の条件】
戦闘(先頭)に0を付けた→2文字の文字列←("00"とか"01"とか"04"とか→"10"←)に
するにはどのような処理をしたらよいでしょうか?
0-9までは問題ないけど10以降は条件の範囲外ですよ?(素)
汎用性云々とか言ってたけど、脇の甘くて汎用性が高いコード使うとさ、どんな結果になると思う?
>traceはNumberも自動的にStringとして出力するし。
完全にダウト。
NumberはNumberのままです。それについては
>>245 の出力結果の通り
trace文は問題を見つけるための道具だろ?
問題の種が見つかったのに
「言いたいことはよくわかるけど、trace文で何か問題があるのかとおもった。」
この発言はコーダーとして相当に恥ずかしいよ?
んだば、ちと改造。変な書き方だがこれもあり。String(num)が普通。 for(var num = 0;num<20;num++){ aa= num < 10 ? "0"+num : num+""; trace( typeof(aa)+":"+aa); }
>>254 あのう。。。typeofでの出力がNumberになるのとStringで出力するのは違うと思うんだが。。
>>251 var pad:String = '';
は何の意味が?w
>>255 >String(num)が普通。
普通というか何もせず直接変更するなら推奨かな
10ミリ秒程度ですがそっちが軽く速いと言われてます。
>>256 trace出力=stringなのか
スイマセン、ぜんぜん知りませんでした
ごめんなさいこの通りです
というか出力時点でstringにしてもnumberだったにしても俺にはわからんが。
コピペ出来るから文字列っていうなら確かに文字列かも。
258 :
251 :2006/07/20(木) 18:57:57 ID:esw1xiaM
>>257 俺も書き込んだあと「padって何だよ!」って思ったwww
260 :
Now_loading...774KB :2006/07/21(金) 11:19:13 ID:Ual8fOcO
flashから getURLを使ってjavascriptの関数を呼び出して document.title を変更してるのですが FireFoxでは反映されるのですが IE6では反映されません。 値の参照をすると設定されているのですが表示は変わりません。 FlashからでなくHTML上のボタンからコールすれば 期待どおり動作します。 flashから関数を呼ぶときはなにか他に処理が必要なのでしょうか?
meで、PLAFLAなんですが、文字に、ランダムで動き(ガクブルや、回る) をされられるASあるでしょうか?一応試したいのですが、ちょうどいい ASがみつかりません。(´・ω・`)
randomに_x , _yを設定したり、 randomで_rotationさせたりすればいいんじゃないの?
>>260 javascriptは各ブラウザ毎にコードの書式が違う。
色々調べないとだめぽ。
的外れ
>>260 動かないコード示せよ
貴様のコードが間違っているのかブラウザ仕様の違いなのか分かんねーよ
そろそろプログラム板にうつりたくなるような質問ばかりになってきたな・・・。
>266 具体的にどの質問がプログラム板にふさわしい内容なの?
もしFlash板が無かったら、ActionScritptスレはム板にあったはず
269 :
Now_loading...774KB :2006/07/22(土) 12:05:11 ID:y78bzqHu
初心者です。外部から読み込んだJPG画像のサイズを求めるにはどうしたらいいですか? ちなみにスクリプトはこんな感じです。 image = "pic"+this.num+".jpg"; _root.screen.loadMovie(image); sframe._xscale=image._height+6; 写真のフレームをダイナミックにつくりたいだけなんですが。。 よろしくおねがいします。
270 :
Now_loading...774KB :2006/07/22(土) 13:53:52 ID:vxjEPQfO
>>269 _root.screenがjpgを表示させるためのものなら
jpg読み込み後に_root.screen._widthとかじゃだめ?
271 :
Now_loading...774KB :2006/07/22(土) 15:46:58 ID:l5IrSP/3
>>269 MovieClipLoader使ってロードする。
onLoadInitイベントでサイズを拾えば画像のサイズが取れるから。
loadMovieでやるなら、1フレーム置かないと
画像読み込み前のMovieClipのサイズが返ってくる。
※createEmptyMovieClipしたなら0が返る。
1フレーム置くのは、
・onEnterFrameで実行後delete onEnterFrameで停止
※onEnterFrameは即時実行されないので次のフレームでの実行となる
・setIntervalで実行ごcrearIntervalで停止
※上記と同じく。
あたりかな。
まぁ、MovieClipLoader使うのが楽だよ。
>>268 ASスレはもともとweb製作板から移転した
まっつんとかがよく質問に来てたよ<web板のASスレ
別にム板に持って行かなくてもいいんじゃね? ただ、デザイナとしてのASと、デベロッパとしてのASは接し方が違うから、ム板に“も”あって良いとは思う
>>273 4年前の5月に立てられたスレがある。
はっきり言って需要なし。
んで懐かしいやり取り見つけた
--------------------------------------------------
9 名前:デフォルトの名無しさん[sage] 投稿日:02/05/10(金) 18:59
Web 制作板と交流でも図らないとレスつかないよたぶん。
10 名前:デフォルトの名無しさん[sage] 投稿日:02/05/11(土) 00:06
>>9 あっちはアニメーションなどが中心と思われ。せめてWebProg板かも
知れんが、どっちにしても適当なところは意外にないと思う。
12 名前:デフォルトの名無しさん[sage] 投稿日:02/05/13(月) 17:30
>>10 WebProg板じゃ、そもそも人がいないからあまりレスがつかないだろうな。
16 名前:デフォルトの名無しさん[] 投稿日:02/05/13(月) 18:47
>>12 >>15 場所は難しいな。サーバサイドだけじゃないし、ActionScript
だけでもないし。本当はこういうときこそ、Flash板に機能して欲しい
ところだ(w 強いて言えば
>>15 の振った先なのかな。ここでも良い気がするが。
17 名前:デフォルトの名無しさん[sage] 投稿日:02/05/13(月) 18:49
>>16 Flash板はムービーを探してきて鑑賞するだけだし(笑)
亀だけど、桁揃え関数。
>>251 をちょっぴりスマートにしてみた。
function padLeft($digit:Number, $src:Number):String {
var $num:String = $src.toString();
while ($num.length < $digit) $num = '0' + $num;
return $num;
}
ActionScriptのリファレンスを公開しているサイトってありませんか? 1.0相当のものが参照できれば満足です。
>277 adobeのサイトにあるじゃん。PDFだって置いてるし。 それとも、サイト製作者独自の解説が欲しいの?
2.0のものは見付かるのですが、どの程度互換があるのがわからないので1.0を求めています。
>>279 ヘルプのAS辞書とかじゃだめなのかな。
リファレンスなら一番確実だけど。
いやPalaFlaというフリーソフトで生成するので、MXは手元にないのです。
282 :
251 :2006/07/23(日) 18:08:21 ID:9VR0IgAG
>>276 うほー。使わせてください!
(NumberUtil なんつークラス作って static function padLeft()入れてます)
数字にメソッド書けたらいいのにね Number.prototype.square = function () {return this*this;} trace(10.square());//構文エラー n = 10; trace(n..square());//100
ipod用のムービーを作ったので 私のHPを訪れてくれる人がダウンロードしてくれるようにしたいです。 flashでボタンを作って普通にgetURLの記述をしたんですが、 うまくいきません。 on (release) {getURL("ファイル名.m4v"); } windowsだと一応ダウンロード出来るんですが、 コンピューターに問題を起こす可能性がありますというメッセージが出て macだと変な文字列が表示されてしまいます。 ファイルのダウンロードの指定の方法を教えて貰えませんか? スレ違いだったらすみません。
>>284 macは知らんけど、普通はzipとかに圧縮する。
>>284 そのファイルを置いてるWebサーバ側でMIME typeの設定をする。
拡張子".m4v"に対して"video/m4v"とかね。
自前で運用しているサーバならhttpd.confをさくっと編集、
そうでないなら管理者に依頼。
んでもiPod用に作ったんだったら、Podcast用のRSSを書いて
置いておけば?で、iTunesで落としてもらえば、見るのもiPodに
転送するのも簡単だし。
287 :
284 :2006/07/24(月) 23:32:13 ID:mr7F5Eww
>>285 様
>>286 様
ありがとうございます。
iPod用なんでRSSというのを使うのがよさげですね。
ちょっと勉強してみます。
ちなみに私のサイトはほとんどflashで作っているんですが、
RSSはflashでも書けるのかな?
>>287 Flashからはファイル操作できんな
PHPとかと連携する必要がある
289 :
Now_loading...774KB :2006/07/25(火) 00:45:54 ID:YGv3b/TZ
はじめまして。現在紙芝居のようなものを作っております。 SWFにloadMovieで別のSWFを次々と切り替えて読み進めていくものなのですが、 親のSWFに操作ボタンを配置して子のタイムラインを操作したいと考えております。 上手く表現できないのですが、 親.swfに _root.screen.window.loadMovie("data/01.swf", 1) というASを書いて子を表示させています。 子のムービーはそれぞれ表示させるMCに応じてラベルを付けてstop(); で止めてあります。 そこに透明ボタンでキーボードの左と右で進めたり戻ったりするようには してあるあります。 しかし、マウスでも操作できるようにと、画面の端にカーソルを当てればメニューが出てきて同じように操作できるようにしたのですが、この場合、場面が変わる度にメニューが消えて使い勝手が悪いものになってしまいました。 そこでこれを、親に配置したボタンで 00.swfラベル1→00.swfラベル2→00.swfラベル3→ 01.swfラベル1→01.swfラベル2→01.swfラベル3→ 02.swf・・・・ こんな感じで進めたり、また逆に一つづつ戻したりしたいのですが、 どうすればよいでしょうか。
290 :
Now_loading...774KB :2006/07/25(火) 00:58:13 ID:uQv80YYw
>>289 _root.screen.window.gotoAndStop("ラベル1");
ってボタンに書く。
>>290 var date1 = new Date(2006, 7, 25, 22, 0, 0);
var date2 = new Date(2006, 8, 1, 23, 0, 0);
var s = (date2-date1)/1000; //秒
var day = Math.floor(s/3600/24);
trace(day+"日");
var hour = Math.floor((s-day*3600*24)/3600);
trace(hour+"時間");
こんな感じ。
293 :
289 :2006/07/25(火) 02:11:47 ID:YGv3b/TZ
さっそくありがとうございます。 私の質問の仕方が間違っていたみたいです。ごめんなさい。 親に配置したボタンは同じボタンのままで押すたびに次のラベル、次のSWF、に進むように したかったのです。 表現力がなくて大変ご迷惑をおかけしております。
>>293 変数を用意してボタンを押すたびに +1 していく。で、その変数の値によって
switch ( hensu ) {
case 1:
_root.screen.window.loadMovie("data/01.swf")
case 2:
_root.screen.window.gotoAndStop("ラベル1");
}
hensu++;
ってこと?
>293 movielist = ["00.swf","01.swf","02.swf"]; movieposi = 0; btnNext.onPress = function(){ _root.screen.window.loadMovie(movielist[movieposi], 1); movieposi++; }
296 :
289 :2006/07/25(火) 03:01:58 ID:YGv3b/TZ
ただいま子のMC側に親ボタンからの入力を受けて次に飛ぶナニかができなかと、 原始人のようなことをいろいろためしておりました…。 なるほど、変数で変えていけるんですね…。 そちら方面で試したりググったりしてみて頑張ってみます。 お二方とも、ありがとうございましたm(_ _)m
>>290 SharedObjectにDateオブジェクトを保存しとく。
初めまして 現在フラッシュのゲームでランキング機能を搭載しようと思っているのですが CGIとASを連携するランキング機能について教えていただけないでしょうか? よろしくお願いします
301 :
Now_loading...774KB :2006/07/25(火) 15:10:53 ID:O8rdZETq
meでplaflaです。 あの、(フォームに)特定の文字を打って、ENTER押すと、自動的に指定の フレームに飛ぶのありますか
303 :
284 :2006/07/26(水) 00:22:10 ID:ohlVdbWK
>>288 様
レスありがとうございます。
そうですか〜。。。
Flashだけでは無理なんですね。
PHPとかプログラムはよくわからないし・・・。
これ以上はスレ違いになりそうなんで、
ダウンロードさせる方向で頑張ってみます。
やっぱりム板に行きたい。
btnMax = 5; for (var i:Number = 0; i<btnMax; i++) { this.createEmptyMovieClip("btn"+i, 1000+i); this["btn"+i].beginFill(0x666666, 100); this["btn"+i].lineStyle(1, 0x000000, 100); this["btn"+i].moveTo(0, 0); this["btn"+i].lineTo(30, 0); this["btn"+i].lineTo(30, 30); this["btn"+i].lineTo(0, 30); this["btn"+i].lineTo(0, 0); this["btn"+i].endFill(); this["btn"+i]._x = Math.floor(Math.random()*250); this["btn"+i]._y = Math.floor(Math.random()*250); } this.onEnterFrame = function() { for (var i:Number = 0; i<btnMax; i++) { if (this["btn"+i].hitTest(_xmouse, _ymouse, false)) { trace(this["btn"+i]._name); trace(this["btn"+i].getDepth()); } } }; mcをn個作成し、ランダムに配置してそれぞれロールオーバーの処理をしたくて 上記のスクリプトを書いたのですが、凄く効率が悪そうです。 何か分からない物にロールオーバー等の処理をするにはどのようにすればいいのでしょうか。
btnMax = 5; function buttonRollOver(){ trace(this._name); trace(this.getDepth()); } for (var i:Number = 0; i<btnMax; i++) { var b:MovieClip = this.createEmptyMovieClip("btn"+i, 1000+i); b.beginFill(0x666666, 100); //略 b._y = Math.floor(Math.random()*250); b.onRollOver = buttonRollOver }
>>307 ありがとうございます。
var b:MovieClip = 〜
b.onRollOver = buttonRollOver
で変数にインスタンス名入れて関数割り当てられるんですね。
勉強になりました。
309 :
Now_loading...774KB :2006/07/27(木) 04:44:29 ID:dJwGkT/s
FlashMX2004 (Player7)を使っています。 配列への文字列の格納についてご指摘願います。 hess = new Array();//フレームアクションで定義 on (release) {//ボタンアクション hess = "あ,い,う,え,お,か,き,く,け,こ"; for (id=0; id<10; id++) { trace("hess, id = "+hess[id]+", "+id); } } 目標では、 hess, id = あ,0 hess, id = い,1 hess, id = う,2 としたいのですが、これらは undefined,0 などとなります。 どうしたらいいでしょうか?
>>309 hessに文字列を代入してるから、型がストリングになってる
ヘルプでArrayクラスのシンタックスを確認すれば解決
311 :
309 :2006/07/27(木) 07:39:10 ID:qko6vaRh
>>310 レスさんきゅう。
str1 = "あ,い,う,え,お,か,き,く,け,こ";
hess = str1.split(",");
で自己解決しました。
str1 = "あいうえおかきくけこ"; hess = str1.split(""); カンマ付けなくてもこれでいいと思う
フラッシュに文字を打ち込む欄を作って たとえば変数textFild1に 200 って入力された時に 動作を起こすと言うものを作りたいんですが、(←このif関数は作れました) 文字を打ち込む欄を作るにはどうすれば良いのでしょうか?
ちなみにparaflaを使ってます。
ここに質問したってことはActionScriptで動的に生成する方法を聞いているんだよね?
一応コード載せとくよ _root.createTextField("hoge_txt", _root.getNextHighestDepth(), 0, 0, 200, 20); hoge_txt.border = true; hoge_txt.type = "input" hoge_txt.onChanged = function() { if(this.text == "200") { trace("200だよ"); } }
ひとつのオブジェクト中に作成するアクションの中の変数って、 ファンクションごとに変数を独立させる事ができないのかなぁ。 VBとかだと、プロシージャ毎に独立した変数になるのだけど。。。
普通にできるよ?
フレームアクションとクリップアクションを混同してるんジャマイカ?
320 :
Now_loading...774KB :2006/07/28(金) 21:11:51 ID:vxDDDrrk
質問お願いします ボタンが3つあってそれぞれ関数を 以下のように定義してるのですが btn1.onPress = function() { trace("click 1"); } btn2.onPress = function() { trace("click 2"); } btn3.onPress = function() { trace("click 3"); } これを、まとめてfor文を使ってかくことはできないでしょうか? for (i=0; i<3; i++) { eval("btn"+i).onPress = function() { trace("click "+i); } } とすると関数内でその外側の i が取得できず 関数実行じのiの値になってしまい、 どのボタンをクリックしても「click 3」が表示されます。 関数の外側の変数(関数定義時の値)に アクセスする手段はあるのでしょうか?
構文の意味をちゃんと理解してプログラムしな サンプルをコピペするだけじゃ向上できんよ var doPress = function() { trace(this); } btn1.onPress = doPress; btn2.onPress = doPress; btn3.onPress = doPress;
どうでもいいが
eval("btn"+i)
って構文は動くが推奨できない
ボタンが_rootにあるなら
_root["btn"+i]
が正しい
ついでに
>>320 で i が使えない理由を教えとくと、function() の中身は定義に過ぎないわけで、実際に動作するのはターゲットのonPressがファイアしたとき
そもそも匿名関数は定義と実行が同時に行えないためその構文は不正
変数の宣言が強制され、スコープが厳密に適用される処理系ならコンパイルエラーで終わる
こういうのはちゃんと基礎から勉強しておけ
別にこれでいいだろ for (i=0; i<3; i++) { this["btn"+i].id = i; this["btn"+i].onPress = function() { trace("click "+this.id); } }
for (var i=0; i<3; i++) {
325 :
Now_loading...774KB :2006/07/28(金) 22:35:47 ID:9bfmAjWT
以前も質問したことあるのですが、 またアドバイスいただければと思います。 FlashLite1.1にて携帯用のFlashアプリを作っているのですが、 traceで値を表示させるだけではデバッグがやりにくいので、 ダイナミックテキストフィールドを用い、 常に変化する複数の変数を、リアルタイムに画面上に表示させたいと思っています。 ここで質問なのですが、そのダイナミックテキストの変数のところで、 他のムービークリップ内の変数を指定する方法はあるのでしょうか。 ダイナミックテキストの変数の部分に、test_mc.hensu などと入力しておいても、何も表示されません。 また、携帯用Flashの開発では、ブレークポイントの設定などができず、 デバッグが非常にやりにくいのですが、普通はどのようにデバッグしているのでしょうか? アドバイスいただければ幸いです。
プレーヤの歩いた軌跡が、あらかじめ引いてある直線にどれくらい近いかを数値化するにはどうしたらいいでしょうか? (x,y)座標を取って計算をすればよいらしいっていうのはなんとなくわかるんですが 具体的にどういった計算をすればいいかご教授願います ちなみに最小二乗法だと、 \ / \ / このように蛇行した場合も直線に近似されてしまうのでダメですよね・・・
>>323 お前も基礎から勉強した方が良いよ
動けば良いってもんじゃない
>>325 どういうコード組んでる?
とりあえずこれは動くぞ
hoge_mc.foo = 10;
fuga_txt.variable = "hoge_mc.foo";
//この後 hoge_mc.foo の値を色々と変更
同じようなコードで動作しないなら環境の違いがあるのかもね
FlashLiteや携帯用プレイヤーの挙動の違いはしらんから、そこに原因があるのかも
>>326 アルゴリズムスレで聞いた方がいいぞ
類似度関数をどう作るかって命題な気がする
#現役離れて長いからかなり忘れた
330 :
325 :2006/07/28(金) 22:58:27 ID:9bfmAjWT
>>328 返答ありがとうございます。
しかしながらFlashLite1.1では、
テキストフィールドにインスタンス名は付けられない仕様になっているようです。
現在はルート上に、表示させたい変数分のテキストフィールドを作り、
それぞれの変数ボックスに、同じくルート上にあるムービークリップの変数名を入力しています。
もし何か思い当たりましたら、またよろしくお願いいたします。
>>329 ありがとうございます。そっちで聞いてみます
>327 私もボタンが多いときなんか>323でやってましたが、 具体的に何がまずいんでしょうか?動作中に止まってしまう等あるのでしょうか? 私はグラフィック専門なので、やはりプログラム専門の方の意見を聞けると、 大変参考になると思うので是非教えてください 合わせて正しい方法も聞けると助かります よろしくお願いします
とりあえず分かりやすいところはこの辺
・匿名関数を複数回宣言する意味がない(意味がないことはやるべきではない)
・わざわざidプロパティを作ってメモリに負担を掛ける意味がない(ただしその方が処理負荷が軽くなる場合は別だが、
>>320 からは読み取れない)
・文字列結合はコストの高い処理だから回避できるなら回避すべき(あらゆる処理系で言えること)
・オブジェクトをインスタンス名で検索するのもコストの高い処理だから回避すべき
・thisでパスが通る保証がないのにthisを使うのは不親切(
>>322 のように前提として書くべき)
・コードが見づらいため、後の保守の際に手間取る可能性がある(他人が保守する可能性もある)
これは
>>320 で「ボタンが3つあって」とあるため、ボタン数は固定であり、3つと少ないことが前提だ。
カッコにも書いたように、前提が変われば話は変わるが、元質問から読み込める範囲は大してない。
ちなみに数が多い場合はこうなる。
//_root.btn1〜_root.btn9まである場合
var doPress = function()
{
trace(this);
}
for(var i = 1; i <= 9; i++)
{
_root["btn"+i].onPress = doPress;
}
「いやそれはおかしい」って突っ込みがあれば是非欲しい
おれも自分自身が向上するためにそれを検証する
334 :
Now_loading...774KB :2006/07/28(金) 23:35:18 ID:79PhIH/k
ActionScriptで、どうしても解決できなかったので投稿させて頂きました。 【前提】 1. 合計、2フレームあります。 2. 1フレーム目にボタンがあります。 3. 2フレーム目にムービークリップがあります。 【目的】 ボタンのアクションに以下のような記述をして2フレームに遷移させた上、 2フレーム目にあるムービークリップを不可視にしたい。 ================= on (release) { _root.mc._visible = false; _root.gotoAndStop(2); } ================= 【実行結果】 上記の結果なのですが、ボタンを押すと2フレーム目に遷移するのですが、 ムービークリップが不可視になりません。 ちなみに、2フレームにボタンを作ってこのムービークリップを不可視にする スクリプトを上記のように記述して上で実行すると思った通りに不可視になります。 【質問】 1フレーム目のボタンのクリックによって、 2フレーム目のムービークリップの操作する場合には、 どのようにすればよいのでしょうか? モシクハ、2フレーム目に入った際に初期化処理みたいなものを書くような機構とかがあるのでしょうか? 【環境】 WindowsXP, Flash 8 Proffesional 宜しくお願いします。
>>334 gotoAndStop(2)と
mc._visible = false を入れ替えればおk。
ActionScriptを処理していくときに、 Flashってバカ正直に上から1個1個実行していくわけじゃん。 だから、まず mc が居るフレームに移動してから、 _visible してあげないといけない。 Flashの気持ちはこんな感じ。 ================= @ _root.mc._visible = false; いや、、_root見てみたけど、 mcとかいう名前のやついねーから無視だな。無視。 A _root.gotoAndStop(2); _root のタイムライン移動するわ。 ================= ↓ ================= @ _root.gotoAndStop(2); _rootのタイムライン移動して、2フレに行くぜ。 A _root.mc._visible = false; (ここは2フレの世界) mcいるじゃん。_visible をオフにしてやるZE!!! =================
>333 理由は分かりました。細かい部分で非効率的なんですね 留意するべき点が興味深いです >・オブジェクトをインスタンス名で検索するのもコストの高い処理だから回避すべき これはコードのどの部分なんでしょう? 私の通常の書式は関数を外に出してるんで、問題はないかな for(var i = 1; i <= 9; i++){ _root["btn"+i].onPress = _root.doPress(); } function doPress(){trace(this);}
>>336 処理全部終わってからフレーム移動するもんだと思ってた。
処理全部終わってから行われるのは画面の再描画であって、
フレーム移動は別なんだね。
目からうろこ。
339 :
320 :2006/07/28(金) 23:55:42 ID:vxDDDrrk
340 :
Now_loading...774KB :2006/07/28(金) 23:57:44 ID:79PhIH/k
>>335-336 親切な説明どうもありがとうございました。そういう仕組みなんですね。良く分かりました。
ただ、せっかくアドバイス頂いたのですが、逆にしても動かないみたいです。
1フレーム目と2フレーム目は両方ともキーフレームなのですが、これとか関係ありますか?
ムービークリップを念のため作り直してみたのですが、これもダメでした。。。
なんでだろう。。。
>>336 今回のとは関係ないけど、上から実行する前に一回フレームのスクリプト全部見てるよね?
trace(Hoge()); // ほげ
function Hoge() {
return "ほげ";
}
>>340 俺の環境では動いたぞ
_root.gotoAndStop(2);
trace ( _root.currentframe )
で 2 って出力されない?
>>340 んー。同じようなサンプル作っても実にバッチリ動くけどね…。
2フレ目においてあるムービークリップには、
ちゃんとインスタンス名書いてるよね?とか、そういうことしか思いつかない。
343 :
Now_loading...774KB :2006/07/29(土) 00:09:37 ID:+CLlUTWl
>>341 ありがとうございます。
デバックのために、以下のように書き換えてみて実行してみました。
================================
on (release) {
trace("実行(1):" + _root._currentframe);
_root.gotoAndStop(2);
trace("実行(2):" + _root._currentframe);
_root.mc._visible = false;
trace("実行(3):" + _root._currentframe);
}
================================
すると、実行結果が...
================================
実行(1):1
================================
だけしか、表示されないですね。
肝心の「_root.mc._visible = false;」が実行されていないみたいです。。。
原因がよく分からないのですが、この症状から考えられることってありますか?
>>341 あー、うんうん。分かる分かる。その書き方で問題ないよね。
基本上から実行されて行くよ(いくよ! っていうのが説明のキモだから特に説明いらないかと。
クラス定義した時の、コンストラクタとか
突っ込んだ処理の順番とかは理解できてないし... (´・ω・`)
>>343 何故だかは分からんが、そのボタン自体もMCインスタンスだよね?
MCボタンの場合にそうなる。
MCをボタンとして扱ってる場合でも、 trace("実行(1):" + _root._currentframe); _root.gotoAndStop(2); trace("実行(2):" + _root._currentframe); _root.mc._visible = false; trace("実行(3):" + _root._currentframe); の処理を関数化して、それを呼び出すようにすれば出来た。 MCアクションとボタンアクションの処理方法の違いは分からない。
347 :
Now_loading...774KB :2006/07/29(土) 00:21:33 ID:+CLlUTWl
>>345 あ、解決しました。
ボタンなのですが、ムービークリップのボタンではなく、
予め用意されているコンポーネントのUser Interface!?を使ったのですが、
おそらくそれが原因なのかもしれません。仕様なのかな。
シンボル変換でボタンにしたものに、前述の通り書いたら正常に実行されました。
User Interfaceを使うのが簡単で一般的なのかなぁと思って気軽に使ってしまったのですが、
今度からシンボル変換後のボタンで実装することにします。
ありがとうございました。
>>347 AS2でMacromediaが推進してるくさいのは、
ボタンに名前を付けて、タイムラインの方(フレームアクション)で、イベントリスナーを登録みたいな感じだよね。
var btnListener:Object = new Object();
btnListener.click = function() { _root.gotoAndStop(2); _root.mc._visible = false; }
btn.addEventListener('click', btnListener);
動作しない時は、「2フレーム目に移動すると、function への参照がなくなるために続きが実行できない」ってことだと
思うんだけど、、、その根本的な原因を説明できるほど詳しくない・・・ (´・ω・`)
× btnMC内
-----------
on (release) { _root.gotoAndStop(2): _root.mc._visible = false; }
× btnMC内
-----------
this.onRelease = function() { _root.gotoAndStop(2); _root.mc._visible = false; }
○ _rootのフレームに
-----------
btnMC.onRelease = function() { _root.gotoAndStop(2); _root.mc._visible = false; }
ゲームのスコアで、 1000点未満…ランクA _root.rank.gotoAndStop(1); 2000点未満…ランクB _root.rank.gotoAndStop(2); 5000点未満…ランクC _root.rank.gotoAndStop(3); ・ ・ ・ のようにスコアによって分岐させたいのですけど、 これはどのようにしたらいいでしょうか?
>>349 var tokuten:Number = 2500 ;
if(_root.tokuten < 1000){
_root.rank.gotoAndStop(1);
}else if(_root.tokuten < 2000){
_root.rank.gotoAndStop(2);
}else if(_root.tokuten < 5000){
_root.rank.gotoAndStop(3);
}
>349 ゲーム作れるんなら分かる筈なんですが・・・ if文を使って下さい
>>349 var tokuten:Number = 2500 ;
if(_root.tokuten < 1000){
_root.rank.gotoAndStop(1);
}else if(_root.tokuten < 2000){
_root.rank.gotoAndStop(2);
}else{
_root.rank.gotoAndStop(3) ;
}
だったごめん
353 :
Now_loading...774KB :2006/07/29(土) 00:46:34 ID:+CLlUTWl
>>348 なるほど。色々なActionScriptのサンプルを見ながらやっているのですが、
・ フレームアクション(
>>348 さんのやり方かな?)
・ ムービークリップアクション
・ ボタンアクション(今やっている実装方式?)
と色々やり方があるんですよね。
私は、Javaのエンジニアなのですが、お客さんからの要望で急きょインターフェイスを
改良してくれとの要望で、初めてのFlashでInterfaceを1画面書きなおす作業を四苦八苦しながらやっています。
Java(オブジェクト指向)に近いのは
>>348 さんのやり方かなぁと思うのですが、
画面系の実装は、VisualBasic以来ほんと〜に久しぶりでよく分からないので、
VisualBasicの画面系の実装に近いボタンアクションで実装しています。
時間がないので、とりあえず動くものを作ってプレゼン用のサンプルを作った後で、
ゆっくりとFlashの仕様を良く理解してリファクタリングしていこうと思います。
どうもありがとうございました。
354 :
349 :2006/07/29(土) 00:53:21 ID:7Pp6JQM7
AS3は型指定したコードと指定しないコードと比べると、後者のほうが遅いでしょうか? それとも型推論を行って最適化してくれるんでしょうか? 今試せる環境になくて、突然気になったもので・・・スイマセン
>>355 同じ速度はあり得ると思うが、速くなるとは思えない。
>>356 同等程度の速度がでたら問題ないと思うんですが、そのあたり気になります。
二択クイズを作りたいのですが、どこかにサンプルソースを置いてるところはないでしょうか? CとC++ならそれなりにできるので、サンプル見ながら手っ取り早く一つ作ってみたいのですが…
>>358 CとC++がわかればサンプル無くても簡単に作れると思うけど何がわからないんだ?
問題文を表示させるテキストボックスと、○と×ボタンを用意して、問題表示して、
正解したら カウント++ したり gotoAndPlayやattachMovieで
正解ムービー(画面に正解!!とか)を表示させてやればいい。
360 :
Now_loading...774KB :2006/07/30(日) 10:58:43 ID:m71tNJzi
2つのa.swfとb.swfがあって、a.swfからb.swfを呼びたいとおもっています。 a.swfにムービークリップを作って、 _root.mc_loadB.loadMovie("b.swf"); で、b.swfを読み込むことまでは出来たのですが、 b.swfに値を渡したり、渡されたり出来ればと思います。 これは技術的に可能でしょうか? 可能だとして、イメージが全くつかないのですが、 どのようにa.swfやb.swfに記述すれば宜しいでしょうか? 環境は、XP & flash8 Proです。 宜しくお願いします。
>>360 例えば、a.swf内で
_root.aaa=1;
と書いておくと、
b.swfからも、_root.aaaが1だということが参照できます。
362 :
Now_loading...774KB :2006/07/30(日) 11:09:07 ID:m71tNJzi
>>361 さっそくのお返事ありがとうございます。
そんな単純な記述できるんですね。驚きです。
外部swfといいつつも、全く同化しているようなイメージの実装ですね。
ありがとうございます。早速やってみます!!!
# あ、逆に変数名が競合してしまっているので、それを直さなきゃ。。。
>あ、逆に変数名が競合してしまっているので、それを直さなきゃ。。。 いや、それはちょっと勘違いしていると思う。 _root.abc _root.mc_loadB.abc で競合しない。
364 :
Now_loading...774KB :2006/07/30(日) 11:46:03 ID:m71tNJzi
>>363 今、双方とも値のやりとりができることを確認しました。
>いや、それはちょっと勘違いしていると思う。
確かに、仰られる通りです。やってみて今分かりました。
どうも、お世話になりました。助かりました。
ありがとうございました。
いわゆる#constとか#defineみたいに定数を定義したいんだけど、どうすれば良いですか? 2.0です。
>>365 普通の変数と同じ。
var c = 0;
>>366 tttttttttttttttttttttttttttttttttttthhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2.0ではクラス使わないとできないよ。3.0ならconstあるよ
369 :
355 :2006/07/30(日) 15:25:15 ID:f1U+D2+i
できる環境になったら試してみることにします
>>369 数値は型によって速度が違う(他言語と同じ)
参照型はほぼ差が無い
>>370 >数値は型によって速度が違う(他言語と同じ)
そうでない言語もいくつか存在するのですが、AS3はその仲間では
ないようですね。ありがとうございました。
372 :
Now_loading...774KB :2006/07/30(日) 19:13:16 ID:qJEInHtW
ボタンのラベルを変更したいのですが、うまくいかず悩んでいます。 ボタンのように、アップ・オーバー・ダウンでデザインを変更でき、 かつ、ダイナミックテキストのように、動的にラベルを変更したいです。 具体的には、Aボタンに「はい」と書かれてあって、それをクリックすると「B」に変わるようなイメージです。 Windows上でflash 8を使っています。お願いします。
>>372 MCをボタンとした場合のことなら
btn.txtField.text = "はい";
//
btn.onRelease = function() {
btn.txtField.text = "B";
btn.gotoAndStop("release");
};
374 :
Now_loading...774KB :2006/07/30(日) 19:58:21 ID:qJEInHtW
>>373 レスありがとうございます。
やってみたのですが、ボタンの作り方が悪いせいか、うまく動いてくれないです(無反応)。
テキストツールでテキストを作り、それをシンボル変換してボタンを作っているのですが、
何か勘違いしているでしょうか?
375 :
Now_loading...774KB :2006/07/30(日) 22:13:52 ID:qJEInHtW
>>374 自己レスです。textFieldをキーワードに色々試したところ思い通りの動作になりました。
createTextFieldを書くのを忘れていました。
お騒がせしました。ありがとうございました。
コンポーネントのscrollpaneの中に何を何個入れるか、をxmlで定義しようとしてます。 で、読み込ませるためにリンケージを貼ったMCの中でXMLをonLoadして、 そのXMLの定義にしたがって画像などをloadMovieしてるんですが、 何故かスクロールペインにスクロールバーが出ません XMLのonLoadや画像のloadMovieが時間差を生んで、読み込み以前の状態が反映されてるのかと思い、 スクロールペインのonEnterFrame( )に redraw( )をつけたりしてるんですが、 特に効果はありませんでした。 こういう時はどういう処理でスクリプトの流れを作ればいいんでしょうか よろしくおねがいします。
378 :
377 :2006/07/30(日) 23:09:27 ID:e/Y30jR+
すいません、自分で書いててわかりにくい文だと思ったので、 何がどこに書かれているかを明確にしておきます。 書き出しはFlash player8です ・スクロールペイン onEnterFrame( ){this.redraw();} ・リンケージされたMC XML.onLoad = function(success:Boolean) { if (success) { (XMLを解析して処理 略) hoge.loadMovie(hoge); } } 結果:スクロールペインからはみ出してもスクロールバーが出ない
>>378 //ScrollPaneのインスタンス名をspとすると
//左右のスクロールバーを自動的に出す。
sp.hScrollPolicy = "auto";
sp.vScrollPolicy = "auto";
//スクロールペインに読み込む
sp.contentPath = なんちゃら
って感じだったはず。
>>379 ありがとうございます
//左右のスクロールバーを自動的に出す。
をonEnterFrameに入れるとちゃんと動きました。
すいません質問です。 duplicateMovieClip後にその中のムービークリップhogeMCにloadMovie("hoge.jpg")して、 先ほどduplicateしたムービークリップの高さを取得したいのですが、 なぜかloadMovie("hoge.jpg")する前の状態の高さが返ってきます。 自分ではloadMovieで読み込んだhoge.jpgの高さが返ってくる予定だったんですが、 どこが悪いんでしょうか、コードは以下になります。 duplicate = scrContent.duplicateMovieClip("hoge"+n, n); duplicate.hogeMC.loadMovie("hoge.jpg"); trace(duplicate._height);
>>381 何がしたいのかよくわらなないけど、
loadMovieでjpg読み込んでもmcの高さ幅はかわらんよ。
>>382 loadMovieで読み込んだjpg分の高さを取得するにはみんなどのようにして実現してるんでしょうか
385 :
382 :2006/07/31(月) 02:47:55 ID:crTgYGdK
>>384 ありがとうございました、とても参考になりました
教えていただいたことを調べている内に
onData (MovieClip.onData ハンドラ)
というのを見つけたんですが、
これが簡単そうでいいなと思いました。
1フレーム内に全て記述できるから管理もわかりやすいし。
なのでものはためしと下記のように書いてみたのですが、
onDataの中身が実行されませんでした。
var duplicate:MovieClip = dummy.duplicateMovieClip("hoge", 2);
duplicate.onData = function() {
trace("データを受け取りました")
}
duplicate.loadMovie("hoge.jpg");
このやり方が無理なら素直にonClipEvent(Data)でも使おうと思うんですが…。
387 :
383 :2006/07/31(月) 05:18:20 ID:kgFf1l7K
どうもonDataイベントは評判がよろしくないようなので、 movieClipLoaderを使ってみました。 で、読み込みは見事に出来て画像が表示されたので、 リスナーイベントの.onLoadCompleteで ようやく読み込んだjpgの_heightを取得できると思ったのですが、 なんと_heightプロパティが0になっています。 _nameプロパティを見るとちゃんと指定したインスタンス名が入っているし、 画像はちゃんと表示されてるのにわけがわからなくなってしまいました。 設定したリスナーイベントは.onLoadCompleteのみで 変哲もない以下のコードになります。 oListener.onLoadComplete = function(target_mc:MovieClip) { trace(target_mc._height); }; ここまで来て力尽きてしまったのでどなたかアドバイスなど下されば幸いです
>>387 ドキュメントを見ると、onLoadComplete 時点ではプロパティーにまだアクセスできず、
onLoadInit なら操作可能とあります
>>388 慌ててて見逃したようです
おかげさまで出来ました、ありがとうございます!
>>376 ですが、こんな方法使ってますが無理っぽいみたいです
onClipEvent(enterfreme){
this.swapDepths(10+(this._y*50));
}
391 :
Now_loading...774KB :2006/07/31(月) 11:26:03 ID:zc1juRRQ
自分で深度管理すればいいじゃない
var X=Math.round( this._x ), Y=Math.round( this._y ); this.swapDepths( Y*X+X );//これでやってみ
393 :
Now_loading...774KB :2006/08/01(火) 00:25:27 ID:CcJ4WqSJ
質問させていただきます。 テキストファイルを読み込んで、その中身そのものを値にしたいのですが そのまま読み込んでしまうと変数になってしまいます。 たとえば、hoge.txtの中身が"abcde"で this.loadVariables ("hoge.txt"); とすると、"abcde"という変数ができます。 変数ではなく、変数の値として読み込みたいのですが・・・ ちなみにテキストファイルの中身をいじることは不可です。 どなたかご教授おねがいします。 バージョンはFlashMXです。
>>392 なんかようわからんがとりあえず近い事はできた 有難い
あとダイナミックテキストってどうしてもガタガタになるもんかね?
396 :
Now_loading...774KB :2006/08/01(火) 01:55:22 ID:heq7XnA8
ムービークリップのアクションのみ有効な変数を書きたいのですが、 どのようにすればよいでしょうか? onClipEvent (load) { trace(values); } onClipEvent (enterFrame) { trace(values); } 同一ムービークリップ内で、イベント間で変数を共有したいと思っています。 イベントの外に変数宣言を書くと文法エラーになるし、 _globalならできるのですが、できればあまり大域変数は使いたくないです。 基本的なところで申し訳ないのですが、宜しくお願いします。
>>396 ムービークリップの中に変数作ればいいんじゃないの?
onClipEvent (load) {
var values = 12;
}
onClipEvent (enterFrame) {
trace(values);
}
これでできない?
398 :
393 :2006/08/01(火) 04:01:24 ID:CcJ4WqSJ
>>395 ためしにXMLクラスでやってみたのですが、
タグで囲まれていないのでnodeNameで変数名(テキストの内容)を
取得することはできませんでした。
具体的にどのような手法をとればいいのか、教えてください。
399 :
Now_loading...774KB :2006/08/01(火) 04:17:26 ID:heq7XnA8
>>397 お返事ありがとうございます。
そのパターンもやってみたのですが、そのハンドラ内でしか有効にならなくって、
別のハンドラ内で参照するとundefinedになってしまいます。
>>394 深度は小数点、0以下の数値を使うと誤作動を起こす事があるらしい
ダイナミックテキストはフォント埋め込みしかないな
>>334 ,336
亀レスだけど
MCのmcHogeに
・・・
_root.gotoAndStop(2);
trace ("hoge");
・・・
ってASを記述した場合、移動先の_root.gotoAndStop(2)にmcHoge自身がいないと
_root.gotoAndStop(2)の先は実行されないぞ。
フレームに記述した場合も同じ事が言える。
>>393 lv = new LoadVars();
lv.load("hoge.txt");
lv.onData = function(val) {
//valがテキストの中身;
};
>>396 これじゃいけないの?
onClipEvent (load) {
values = 1;
}
onClipEvent (enterFrame) {
trace(values);
}
loadは最後に書くのが基本中の基本
407 :
Now_loading...774KB :2006/08/01(火) 10:10:20 ID:heq7XnA8
>>400 >>404 >>406 ありがとうございます。おかげ様で動きました!!
変数のスコープが、今までやってきた言語と比べて少し独特なような気がしました。
>>405 >loadは最後に書くのが基本中の基本
すみません、インタプリタなので上から実行されることを考えて、
loadを意識して先に記述していたのですが、最後の方がいいのでしょうか?
参考までに、もう少しだけ詳しく教えて頂けたら幸いです。
とりあえず、やっと先に進めます。どうもありがとうございました。
イベントハンドラを定義するより先に読み込んだらイベントの発生が保証されない どの言語でもコードの順番に処理され、後に書かれた処理が先に書かれた処理に影響するなんて事はない なお、非同期処理は処理の流れを増やすだけで、コードの順に処理される事に変わりは無い ちなみにVBSなどのいくつかのスクリプト言語は、変数定義のみ順番が後でも認識される事がある これは処理の最適化が関わっているらしいが、プログラムの一般的な流れからは異常と言える ※一般的な変数のライフサイクルとスコープに記述と実際の齟齬が生じる
409 :
393 :2006/08/01(火) 11:16:45 ID:CcJ4WqSJ
410 :
Now_loading...774KB :2006/08/01(火) 11:40:29 ID:heq7XnA8
>>408 関連事項も含めて、詳しく教えて頂きましてどうもありがとうございました。
確かに仰られるとおりですね。これからはload処理は最後に書くように
心に留めておきます。
どうもありがとうございました。
AS3での質問なんですが以下のコード package{ const SCREEN_HEIGHT:int = 300 const SCREEN_WIDTH:int =200 } をコンパイルしようとすると、ソースパス内で一つ以上の外部から見える定義が発見されました、と出ますが、 パッケージ内で定数を定義できないのでしょうか。 絶対にクラスでくるむ必要があるのでしょうか? ABA様のコードではこのように定義できているように見えるのですが、仕様が変わったのでしょうか?
ABA様とやらに聞け
413 :
411 :2006/08/01(火) 20:02:03 ID:Z9KWeDhp
この定義をはずしてマジックナンバーで直接入力したり、クラスで包むと通る みたいです。 パッケージのスコープではクラス以外は定義できない、という解釈でよいのでしょうか?
質問!ずっと眠ってたMX使い出したんだけど、 a=5 _root.field.eval("nurupo"+a) とかいうふうに、文字列をムービークリップとして参照するときって ターゲットのパスで指定できないのかしら。仕様?
a=5 _root.field["nurupo"+a]
>>415 即レスありがとう
[ ]ってピリオドつけちゃダメだったのね
ステージプロパティでフレームレート24に設定しています。 音楽をストリーミング設定にし、再生している最中に setIntervalで実行間隔を21(FPS約48)にして テキストフィールドの中身をインクリメントしていきます。 するとFPS24以上で画面の再描画がされないのですが仕様ですか? 勿論setIntervalで使用する関数の最後にupdateAfterEvent()は入れています。
setIntervalは、FPSに影響されるので、期待値はでないんじゃなかな 試しにFPSを上げてみたらどうなる?
419 :
Now_loading...774KB :2006/08/02(水) 01:21:47 ID:VOiPLKhy
一つのサウンドの再生が終わった時に何かアクションを実行させる場合 どういったスクリプトを書けばいいんでしょうか
>>418 サウンドの種類をスタートに変えた場合、FPSはほぼ48出ました。
ステージ全体のフレームレートを6にした場合、
サウンドの種類がストリーミングで、尚且つサウンド再生中だとFPS6以上出ず。
>>419 ストリーミング再生なら、サウンドの再生が終わるフレームに記述。
スタートやイベントといったタイプなら、Soundクラスで再生制御をして
Soundインスタンス.onSoundComplete = function(){
trace("soundの再生が終了しました") ;
} ;
を使う。
>>420 ちなみに何を作ろうとしてんの? 音ゲー?
423 :
Now_loading...774KB :2006/08/02(水) 03:43:52 ID:VOiPLKhy
>>421 ストリーミングだとアニメーションが意図しない動きになりませんか?
onSoundCompleteというのを使ったらうまくいきました
ありがとうございました
質問です。 ActionScriptで、ムービークリップの座標を操作して 動かしたい場合に、this.move._x = 100;(例ですが) といった感じにすると思うのですがfor文等を使用 しても座標X:1→座標X:500の場合、実行をかけると すぐ終了地点に移動してしまいます。(環境に依存?) この、一度に移動するのを普通にムービークリップ を手動で移動してトゥイーンを貼ったのと同じにする 場合はどのようにすればいいのでしょうか? gotoAndPlayとの組み合わせなど色々と考えてみま したがよくわかりません。ヒントでも構いませんので ご教授頂けると幸いです。 //ふと思ったことですが、FlashのトゥイーンよりASの 計算で動かす場合ってCPUのパワーに依存することにな るのでしょうか?(=環境によって動きがまちまちに)
425 :
Now_loading...774KB :2006/08/02(水) 04:41:23 ID:VOiPLKhy
>>424 少しずつ移動させたい場合は
this.move._x = this.move._x + 1;
または
this.move._x += 1;
とやるといいのではないでしょうか
この場合enterFrameなどで実行されるたびに+1ずつ動いていきますよ
flash8のXPです。 「こんにちは」とだけ書かれている外部テキスト(text.dat)を、text1という変数に代入したいのですが、どうやればいいのでしょうか?? text1 = "text.dat" ではできません。。。 text1 = loadVariablesNum("text.dat", 0); とかおかしいですよね。。。 どなたか教えてください。。
>>424 ループの間は画面更新されないので、少しずつ動かすような用途の時は
onEnterFrameかonClipEvent(enterFrame)を使う。
トゥイーンの方がASよりCPU依存は低く、完全にコマアニメにすると
更に低いと聞いた。
>>426 LoadVars.onDataを使う。
シンタックスはヘルプで確認してくれ。
428 :
Now_loading...774KB :2006/08/02(水) 11:42:14 ID:63CLJPyq
スタンドアローンで、 flash上から、ファイルをダウンロードさせるために ボタンに、以下の命令を与えました。 on (release) { getURL("file:///c://aaaa.zip"); } ダウンロードはできるのですが、ブラウザが必ず立ち上がります。 起動せずに、ファイルをダウンロードさせる方法はないでしょうか? よろしくおねがいします。
flvをFlashに埋め込んで逆再生させようとしてんだけど、 普通に再生してるときと違って遅くなるんだけど、 原因わかる人います?
>>428 それって、ダウンロードというよりもローカルファイルのコピーかな?
コピーするexeファイルを作ってfscommandで実行がいいかも。
>>422 すみません。ただの検証用です。
仮にストリーミング再生中は、規定以上のFPSで画面の再描画が出来ない。
という仕様であるのなら、setIntervalを使用したテキストエフェクトが
サウンドとの同期をとったアニメーションで使えないなぁと。
432 :
Now_loading...774KB :2006/08/02(水) 14:00:21 ID:iCMA08yz
お願いします mcが2つあって 1つに外部の画像を読みこみ そのあとでもう1つのムービーにコピーしたいのですが そんなことはできますでしょうか? もう1度読み込むと時間がかかるので あらかじめ読み込んでおいてコピーのような動作を期待してます。
433 :
432 :2006/08/02(水) 14:22:40 ID:iCMA08yz
すみません BitmapData を使うことでできそうでした
434 :
Now_loading...774KB :2006/08/02(水) 14:48:29 ID:63CLJPyq
428です。 コピーするexeをつくるというのは、どういうことでしょうか? 具体的に、お教え願えないでしょうか?
FileReferenceクラス使えばできるんだけど、httpじゃないとダメみたいだな。
>>429 mpeg4はタイムラインベースの圧縮が使われてるから正常に再生されないと
考えるのが普通。連番データとは違う。
Screenweaver使ってる人に質問です swFile.loadStringでファイルを読み込もうとしてるんですが パスに日本語が含まれていると読み込みに失敗してしまいます (例:C:\Documents and Settings\Test\デスクトップ) 解決方法あったら教えてください
438 :
クリシス ◆wkWWNcidQI :2006/08/02(水) 17:01:58 ID:MuNZaUzY
これを見たあなた!!ヾ(・ε・。) あなたゎこの1ヶ月以内に好きな人と両思い またゎ付き合っている子ゎすごくLOVE2になります!! それにゎこの文章をコピーして他の掲示板に3回別の掲示板に はればOK!!!たったこれだけであなたわぁ 最高の生活がおくれます!! ただしこれをしなかったら きっと両思いになることゎないでしょう!!(/□≦、) やった子ゎ今でゎ学校1のLOVE2カップルです!! これをやらなかった子ゎすぐに彼氏と別れてしまいました
439 :
Now_loading...774KB :2006/08/02(水) 18:19:05 ID:63CLJPyq
428>435さん、やはり、使用上無理なのでしょうか。
>>424 です。
>>425 >>427 の方のアドバイスを参考にした所
無事動かすことができました。ただ、おかしな
点が数点あります。
1.通常のフレーム間のアニメーションに比べ
てASの場合X座標に+1した場合の動く幅が大きい
気がする
2.以下のプログラムを書いてみました
onClipEvent(enterFrame){
for(i=0;i<20;i++){
trace(i);
this._x = this._x + (i/10);
this._y = this._y + (i/10);
}
}
これはムービークリップが徐々に加速していく
様子を表現しようとしたのですがfor文が終わる
とそこで処理が止まらず再度for文が実行されて
しまいます。if(i==19) stop();と書いても何も
起こらないですし…。onClipEvent〜の他の物で
対応するのでしょうか?
3.CPUパワーの問題
やはり、AS>通常のアニメーションなのですか;
できる限り配布前に検証を沢山の人にお願いし
たいと思います。情報ありがとうございます。
質問が膨らんでしまいましたが、何かわかりま
したらご教授頂けると幸いです。
改行制限にひっかかってしまい見にくくて 申し訳ないです。
>440 疑問の前に、ASが間違ってる onClipEvent(load){i=1;} onClipEvent(enterFrame){ this._x += i; this._y += i; i++;} 3.軽:モーショントゥーン>AS:重 >通常のアニメーション この言い方は止めた方が良い 何を意味してるかわからん
>>440 trace(i)してるんだから、iの変化を見れば自ずと解決すると思うんだが
というか、forとenterFrameをごっちゃにしてる気がする
onClipEvent(load){
//ここに書いた処理は、最初の一回だけ実行される
//"i"という変数の宣言と同時に0を代入
i=0;
}
onClipEvent(enterFrame){
//ここに書いた処理は、毎フレーム繰り返される
//例えばfps30なら、一秒間に30回実行される
this._x+=i/10;
this._y+=i/10;
i++;
//i/10をx,y両方に足した後、iを増やす
}
//これで試してみてごらん
444 :
429 :2006/08/02(水) 22:07:40 ID:S9bmErfU
>>436 情報サンクス。
元データはaviの非圧縮したものをflvとして書き出してる。
mpeg4と同じなんだろうか?
>>440 です。
forとenterFrameがごっちゃになってる…のがまさに
問題の根元でしたorz enterFrameと聞いてそのまま
書いただけで仕様をまったく理解してなかった私の不
手際でした、申し訳ないです。
ソースは、
>>442-443 の方のもので動作しました。
とまらずに画面外に行ってしまいましたが…。
後は、fpsとenterflameの関係の把握とこれを止め
れるように何とかしたいと思います。
色々と親切に教えて頂きありがとうございます。
繰り返して実行するっていう意味では同じだものね
447 :
Now_loading...774KB :2006/08/03(木) 10:30:28 ID:U7BfELUP
var mc2 = mc; mc2.attachBitmap(xxx, 〜〜); mc2の型を指定しないと正しく動作するのですが var mc2:MovieClip = mc; mc2.attachBitmap(xxx, 〜〜); と、mc2の型を指定すると 「タイプが一致しません。」 というエラーになります。 これってなんでなんでしょう?
>447 trace(typeof(mc));
449 :
447 :2006/08/03(木) 11:23:47 ID:U7BfELUP
>>448 movieclip
と表示されます
ちなみに
うまくいく場合のmc2もいかない場合のmc2も
もちろんmcも
movieclip
と表示されます。
どういうことなんでしょう?
>>449 mc2.attachBitmap(xxx, 〜〜);
の引数の型とかあってるのか?
451 :
447 :2006/08/03(木) 11:34:47 ID:U7BfELUP
>>450 うわ、ごめんなさい
第三引数にtrueって書いてたorz
なんで型を指定しなかったほうはうまくいくんだろ?
本当にすみませんでした
452 :
Now_loading...774KB :2006/08/03(木) 16:33:37 ID:5vMjC58x
>>452 ボタンの on(release) が二重定義されてるからじゃないのかな
後から定義した方だけ有効で、1フレ目のまま。多分
>>453 レスありがとう!
//1フレーム目
on (release)
{
this.gotoAndPlay(2);
_root.soundstatus = "off";
}
//2フレーム目
on (release)
{
this.gotoAndPlay(1);
_root.soundstatus = "on";
}
に書き直した、けどだめだった・・・
ううーなぜだ
原因が分からないときは変数とかカレントフレームとかtraceしてみなよ。
>>454 on(release){
if(this._currentframe==1){
this.gotoAndPlay(2);
_root.soundstatus="off";
}else{
this.gotoAndPlay(1);
_root.soundstatus="on";
}
}
ではどお?
>>456 レスありがとう!
1フレーム目のスクリプトにはっつけてみた!
音は小さくなったけど、もう一回おしても大きくならなかった・・・
>>455 レスありがとう!
>変数とかカレントフレームとかtrace
ぐ・・・ググってくる!
>>457 推測で悪いけど
gotoAndPlay() だとフレームが次行っちゃうので
--1フレ目--
stop(); //必要なら
on (release) {
_root.soundstatus = "off";
this.gotoAndStop(2);
}
--2フレ目--
on (release) {
_root.soundstatus = "on";
this.gotoAndStop(1);
}
----
あと
>>452 リンク先の突っ込み
・flaじゃ無くてswfが入ってる
・画像2のリンクが1と同じ
>>459 レスありがとうございます!
試して見ましたが音が大きくなるところでつまづきます、
とりあえず自分は今、トレースについて調べ中です・・・
すごく時間かかりそう
>・flaじゃ無くてswfが入ってる
>・画像2のリンクが1と同じ
うっわぁ・・・ごめんなさいです、
データを差し替えました
なんてことだ
>>461 flaファイル見たけど、とりあえずターゲットパス理解したら解決出来るよ。
スイッチ切り替えボタンのところだけど、MCでボタン用MC内包してるよね?
それがボタン用MCじゃなく、ボタンインスタンスだとパスは合ってるから
想像通りの動きをするはず。
けどMCだから、
this.gotoAndStop(2) ;
じゃなく
this._parent.gotoAndStop(2) ;
という記述じゃないと、MCの中身をフレーム移動してるだけって事になります。
XPでFLEXを使用し、画面を作成しています。 DataGridColumnにCellRenderを使用して組み込んだチェックボックスの true、falseの状態を判定し、trueの場合のみ処理をしたいのですが、 DataGridColumnに組み込んだチェックボックスの状態を取得するスクリプ トがわかりません。もし宜しければ、どうしたらよいか、教えてください。
_root.kansuu0() _root.kansuu1() _root.kansuu2() を他のムービークリップから呼び出すとき、for(i=0; i<3; i++){}を使いたいんですが、 _root.["kansuu"+i]()じゃ動かないですよね? どういう記述をすればよいのでしょうか?
465 :
464 :2006/08/04(金) 00:15:35 ID:CDDrbLBV
誤 _root.["kansuu"+i]() 正 _root["kansuu"+i]() でした
_root["kansuu"+i]()
467 :
Now_loading...774KB :2006/08/04(金) 00:22:45 ID:dsrhsQ5P
すいませんが…パスがわからないんです。 1つ上の階層のMCの中にあるラベルに行くにはパスはどうしたらいいですか? _root/main/mc1 の中のフレームにおいたボタンを押したら _root/main/mc2 の中のラベル("mc2_7")に行きたい _parent.mc2.gotoAndPlay("mc2_7"); と思ってたら違うみたいなんで絶対パスにしたけどダメでした 1つ上のMCの「ラベル」に移動なのがダメなのかと思ってフレーム数にしたけど できませんでした…
>>469 階層が違うとか、ASの書き方でデフォルト参照が変わってるとか、mc2が同じフレームにないとか。
とりあえずtrace(_parent.mc2)してみたら?
>>470 さん
そういえば同じフレームに置いてませんでした
mc1は _root/mainのラベルa1の位置に、
mc2は _root/mainのラベルa2の位置にあります
そしたらどうしたらいいんでしょうか…
>>471 わかりやすそうな解決策をあげてみる。
・mainのラベルa2に移動してからmc2に命令するfunctionを作っておいてそれを実行する
・キーフレームで区切らずにmainにmc1とmc2が必ず一緒に存在するように配置し
見せたくないフレームでは_visible=falseなどで対応する。
他にもありそうだけど、こんなんでどう?
>>472 さん
後者だとmainのラベルa1〜a50まであって今からやると作業量膨大なので前者かなと思うのですが
mainのラベルa2に移動してからmc2に命令するfunctionってやつがすでにわかりません・゚・(ノД`;)・゚・
あれ、ごめん。もしかしてフレームじゃなくてボタンアクションか? だったらそもそも階層が_parentじゃないんだが。 どっちにしても同じキーフレーム内にないものには命令できないんで、 絶対パスにしても動かなかったのはそのせいだと思う。 functionじゃなくても、ボタンに書いたアクションを まずmc2のあるフレームラベルに移動、 次にmc2のフレームを移動、という順にすれば動くとオモ。 functionは知っといた方がいいので、もし使ったことないなら、サイトや本で調べてみることをすすめる
>>優しい474さん 書き忘れてすいません、直接ボタンに書いてました。 on (release) { _parent.mc2.gotoAndPlay("a2");}で ラベルa2 に飛んで 続けてmc2の("mc2_7")に飛ぶように指定するにはどう書けばいいですか? こんな真夜中に初心者に付き合ってもらってありがとうございます
間違えました… on (release) {_parent.gotoAndPlay("a2");} でラベルa2に飛んで その次でした(´Д`;)
>>476 mainのa2のフレームにthis.mc2.gotoAndPlay("mc2_7")を書く。
この方法じゃ困る場合は、やっぱりfunctionにまとめるのが楽だと思う。
478 :
461 :2006/08/04(金) 06:45:48 ID:LErrCaAb
>>462 レスありがとうございます!
ご指摘どおりターゲットパスが間違っておりました、
おかげでMC内のタイムラインの理解が深まりました、
大変有り難う御座います!
・・・勉強して462さんのようにアドバイスできるよう精進します
Flash9AS3Previewでのクラスの呼び出し方で質問です。 document classかシンボルのクラスとして呼び出せるのは分かったのですが、 AS2のようにフレームスクリプトからnewを使ったりstaticで直接クラスを呼び出そうと するとエラーがでてしまいます。 newを使ってクラスを宣言するにはどうすれば良いのでしょうか?
>>479 簡単にはクラスをpackage{}でくくって、publicをつける。
あとは適当に実験してみて。エラー出力はstrict Modeで。
_root.sound1 = new Sound(); _root.sound1.attachSound("sound1.wav"); _root.sound2 = new Sound(); _root.sound2.attachSound("sound2.wav"); _root.sound2.setVolume(50); こんな風にするとsound2だけ半分の音量で鳴るはずだと思うんですが、再生ボタンを作って実際にそれぞれ鳴らしてみると、 信じられない事にsound1まで半分の音量で鳴りました。 なぜこんなことが起こるのか全く分かりません。
>>481 ヘルプのSoundクラスってとこじっくりを読むでよ。
「新しい Sound オブジェクトの作成時に target を指定しない場合は、
このクラスのメソッド を使用してムービー全体のサウンドを制御できます。
シンタックス
new Sound([target:Object]) : Sound」
ボリュームはターゲットごとに管理されるんで、それぞれボリューム調整したいなら
異なるターゲットを指定する。
>>480 以下のスクリプトで1046と1065エラーがでてしまいます。
どうすればちゃんと動くでしょうか?
hello.fla の1フレーム目
var Hello:hello = new hello();
hello.as
package{
public class hello{
public function hello(){
trace("hello");
}}}
>>484 エラー番号をいわれてもわからん。クラスパスとかかもね。
strictModeで実行すれば詳細出ると思うけど。
そのソースのままでこちらでは普通に動く。
>>485 これで動くということはうちの環境の問題のようですね。お手数おかけして
申し訳ございませんでした。
>>458 一通りみてみたけど、全部ASではなさそう
なんか他の人の動作が反映されてるしね
489 :
Now_loading...774KB :2006/08/04(金) 20:07:27 ID:al1jrldZ
htmlでjavascriptを扱う際に、外部テキストファイル(.js)が別サーバにあるとセキュリティの関係で動かないと検索で知りました。 今、swf内で loadVariablesを使って、 外部テキストファイルの内容を変数として読み込んでいます。 テキストファイルが同じサーバにあるときはURLを絶対値で書いても動くのですが、 テキストファイルを別サーバに置くと全く読み込めません。 (RSSのようなことがしたいんです。。) フラッシュから別サーバーにあるテキストファイルは読み込めないのでしょうか? 読み込めないとしたら、やっぱりセキュリティのせいですか?
490 :
Now_loading...774KB :2006/08/04(金) 22:22:08 ID:VOFkpICB
はじめまして。お願いします。
html上で、formタグを使い、データをサーバに送れるとおもいますが、
同じように、Flash上のボタンを押すと、サーバにデータを送信させる
ことは可能でしょうか?
たとえば、下のように、formタグを使い、
データを送ってみたいのですが、アクションスクリプト上から
指定するのでしょうか?
<form name="test" action="
http://aaa.com/aaaa " target="main"method="post">
〜中略〜
<input name="data01" value="30" type="hidden">
<input type="image" src="image/aaa.gif" WIDTH=100 HEIGHT=50 BORDER=0>
ご教授お願いいたします。
>>490 その例だとFlash必要ないじゃんと思うんだけど、
Flashからデータを送りたいならLoadVars()
hidden項目の中身をFlashに送りたいならjavascript
全部Flashにするか、Flashを使わないかのどちらかにしたほうが作りやすいと思う。
492 :
Now_loading...774KB :2006/08/04(金) 23:26:06 ID:VOFkpICB
491さんありがとうございます。
Flashからphpに向けてデータを送りたいのです。
いま、以下のようにテストしています。
AS//
on(release) {
System.useCodepage = true;
this.getURL("
http:// http://aaa.com/aaaa?data01= " + 30,"POST");
}
ページ自体は、移動して、移動した結果のページにデータが
反映されるような処理です。
上記の記載では、ページ自体は移動しているんですが、
データは送られておらず、ページに反映されておりません。
なにか、見逃しているのでしょうか?
よろしくおねがい致します。
493 :
Now_loading...774KB :2006/08/04(金) 23:27:14 ID:VOFkpICB
>>492 >なにか、見逃しているのでしょうか?
>>491 の Flashからデータを送りたいならLoadVars()ってトコを見落としてる
LoadVarsクラスのLoadVars.send()とかLoadVars.sendAndLoad()
を使ってみては?って意味ね。
495 :
Now_loading...774KB :2006/08/05(土) 00:23:36 ID:O5nM23I+
LoadVarsも試しているんですが、
以下。
on (release) {
value = 30;
System.useCodepage = true;
var data:LoadVars = new LoadVars();
data.value = data01.text;
data.send("
http:// http://aaa.com/aaaa.php?data01 ", "_top", "POST");
trace(value)
}
FORMデータの上の、 name値とvalue値をどういうふうにphpに受け渡せば
いいのか、ASの記載方法がわかりません。
データ反映されていないということは、うまく値がはいっていないようです。。
497 :
Now_loading...774KB :2006/08/05(土) 01:14:58 ID:O5nM23I+
php側で受け取った値を出力したりして確認する。>ここは、php上でどのように
記載すれば、確認できるんでしょうか?
っていうかFlashを使う意味は何?>>表現部分は、Flashで。データ処理部分は、
phpで制御する仕様なんです。データを送信する部分のみ、flash外にだしても
いいんですが、できることなら、Flash上からデータを送りたいと思っています。
on (release) {
System.useCodepage = true;
var data:LoadVars = new LoadVars();
data.name = "data01"
data.value = "30"
data.send("
http://aaa.com/aaaa.php?data01 ", "_top", "POST");
}
いま上記のように修正してみました。
やはり、送られていないようです。
498 :
Now_loading...774KB :2006/08/05(土) 01:30:03 ID:O5nM23I+
>>497 >php上でどのように記載すれば、確認できるんでしょうか?
printとかじゃなかった?
LoadVars.send()で送られるのはLoadVarsの中の値。
>>497 の書き方だとLoadVarsの中にnameとvalueと言う項目が出来て
それぞれにdata01と30という値が格納されることになる。
nameとvalueは自分で勝手に決める名前であってhtmlのinputタグのnameとvalueとは違う。
htmlで言うところの
<form name=・・・>
<input name="data01" value="30" type="hidden">
をFlashでやりたいなら
data.data01 = "30"
自分で作ったphpじゃ無いみたいだけど、
Flashを使わずにhtmlのフォーム使って送った場合はうまくいくの?
それでうまくいかないならFlash云々以前の問題。
500 :
Now_loading...774KB :2006/08/05(土) 02:08:57 ID:O5nM23I+
Flashを使わずにhtmlのフォーム使って送った場合はうまくいくの? >
問題なく、うまく動作してます。
data.data01 = "30" ←これは、inputタグで送る方法と同じ意味合いに
なるのでしょうか?
on (release) {
System.useCodepage = true;
var data:LoadVars = new LoadVars();
data.name = "data01"
data.data01 = "30"
data.value = "30"
data.send("
http://aaa.com/aaaa.php ", "_top", "POST");
}
↑上のようなかんじなのでしょうか? 教えて頂いた記載の仕方が
よく理解できていません。 具体的にお教えいただけないでしょうか?
>>500 だいたい同じ意味合いだが、そう羅列されるとイマイチ理解してるか
確信がもてんな。
<input name="data01" value="30" type="hidden"> が
data.data01 = "30"と同じ意味になる時
<input name="myname" value="taro" type="hidden"> は
どう書けばいいでしょう?
これがわかってれば大丈夫だと思うが。
それから、セキュリティ制限でphpにアクセスできてないとか
そういう話はないよな?
502 :
489 :2006/08/05(土) 08:53:10 ID:b5D79L9l
夜中もいろいろ調べたんだけどわかりません〜>< どなたか知ってたら教えてくださいませんか?
ポリシーファイル
504 :
458 :2006/08/05(土) 09:49:29 ID:hZrNge+I
505 :
Now_loading...774KB :2006/08/05(土) 17:05:32 ID:UhV7ScS5
リロードしたときに値を完全にクリアするスクリプトってありますでしょうか? ページを再読み込みするとムービーがはじまりません。 MovieClipLoader か setInterval が何か関係してそうなんですけど。。 何がいけないのかいまいち検討がつきません。 どなたか予想がつく方いませんでしょうか?
エスパー待ち?
はい〜
508 :
エスパー :2006/08/05(土) 20:34:00 ID:V40qE3bJ
>>505 さすがの私でもワカラン とりあえずブラウザ名を聞こうか
ロードした時点でその「値」をクリアするようにASを書けばいいんだと思うが いつどこで設定される何の値かわからんとどうしようもない。
510 :
Now_loading...774KB :2006/08/06(日) 00:12:32 ID:DMymWU/C
>>エスパーさん IE6でも、FIREFOXでも同じでした >>509さん スクリプトはこんな感じです。 this.onLoad = function() { var pic:Array = new Array(); var vx:Array = new Array(); var vy:Array = new Array(); mframe._visible = false; n = 32; for (i=1; i<=n; i++) { _root.attachMovie("pic"+i, "pic"+i, n+1-i); pic[i] = eval("pic"+i); −中略− function waku() { mframe._visible = true; bx = screen._height+30; by =screen._width+30; if ((bane != undefined) && (mframe._width == screen._width+30) && (mframe._height == screen._height+30)) { clearInterval(bane);}} function rels() { this._alpha = 50; if (bane != undefined) { clearInterval(bane);} mymcl = new MovieClipLoader(); var mclListener = new Object(); mclListener.onLoadInit = function() { bane = setInterval(waku, 50);}; mymcl.addListener(mclListener); mymcl.loadClip("pic"+this.num+".jpg", "_root.screen");} 大雑把な説明ですが、始まったらサムネイルが次々とロードされて、それをクリックすると大きな写真がロードされます。大きな写真にはフレームがついていて、写真の大きさによってダイナミックにサイズが変わります。 問題は、二回目のローディング時にサムネイルもロードされません。更新のボタンをすばやくクリックするとローディングされる時があります。
511 :
510 :2006/08/06(日) 00:25:16 ID:DMymWU/C
ちなみにキャッシュをクリアするともんだいなくロードされます。
>>510 よく読んでないけど、つか、もうちょっと自分で説明するとか問題点絞り込むとかした方が回答つきやすいと思うけど
this.onLoadをそんなふうに使ってるのがそもそも間違いだと思う。
使いどころはヘルプ参照。
>>510 キャッシュが残ってるとonLoadが定義される前に
読み込み完了しちゃうとかそんな感じ?
コードは全く読んでいない上でありがちなパターンを 初回は正しく動作するのに、リロード等による2回目以降は正しく動作しないというのは、処理フローが非同期処理の特性を意識していない場合に多い 外部のファイルを読み込む場合、初回は対象のサーバからロードされるが、2回目以降はブラウザのキャッシュにあればそれが読み込まれる ※ブラウザの設定や、URLを細工するなど、これに当てはまらない場合は別原因 MovieClipLoaderなどは非同期処理とは言っても、限られたりソースを効率良く使用するために指定された処理はできるだけ速いタイミングで処理しようとする ※一定コスト以内なら非同期のキューに入らない そして、処理フローを意識していないコードは、イベント定義とそのイベントが発生する原因を全く理解しておらず、誤ったサンプルを元に書いていたりする ありがちなのは、処理状況を通知するイベントより先に処理を書いてしまうパターン その結果、読み込みよりも後に取得イベントを定義した場合に、読み込みに時間の掛かる初回は上手く行くものの、キャッシュから読み込まれる2回目以降は上手く動作しなくなってしまう こういう話は本職の開発者としては常識なのだが、デザイナーや素人上がりの多いFlashAS開発では常識に至っていない 最悪なのはASの記事や書籍を書いている者にもそういった常識の無い場合があり、Webや書籍のサンプル自体が参考にならない場合がある 実に嘆かわしいが、元々Flashはデザインツール出身であり、開発的要素が入ってきたのが最近であるため、仕方ないのかもしれない。 ただ、AS3になれば素人お断りな世界になってくるため、こういった問題は減るのかもしれない。
515 :
Now_loading...774KB :2006/08/06(日) 16:37:33 ID:AX8geNmN
osx MX2004pro です。 複数の外部ファイルを読み込んでそれぞれのダウンロード状況を監視するスクリプトです。 これで正常に動作するのですが、いまいちスマートじゃない気がします。 どこか改善点はないでしょうか? loader = new MovieClipLoader(); var myListener:Object = new Object(); checkName = new Array(); lb = new Array(); tlb = new Array(); par = new Array(); n = [0, 0, 0, 0, 0,0]; this.onEnterFrame = function() { if (n[0] && n[1] && n[2] && n[3] && n[4]) && n[5]{ flag = "ok";}else{flag ="ng"} }; myListener.onLoadStart = function(target_mc:MovieClip) { //target_mc._visible = false var bytes:String = target_mc._name; checkName.push(bytes); lb.push(bytes); tlb.push(bytes); par.push(bytes); var loadProgress:Object = loader.getProgress(target_mc); };
516 :
Now_loading...774KB :2006/08/06(日) 16:39:11 ID:AX8geNmN
続き myListener.onLoadProgress = function(target_mc:MovieClip, loadedBytes:Number, totalBytes:Number) { for (var bytes in checkName) { if (_root.vvv[checkName[bytes]] == target_mc) { lb[bytes] = loadedBytes; tlb[bytes] = totalBytes; par[bytes] =Math.round(lb[bytes]/tlb[bytes]*100); _root.lod["cl"+bytes]._xscale = _root.lod["cl"+bytes]._yscale=par[bytes]; if (par[bytes] == 100) { n[bytes] = 1; } } } }; loader.addListener(myListener); bga = ["sbg01.swf", "sbg02.swf", "sbg03.swf", "sbg04.swf", "sbg05.swf","sbg06.swf"]; bgNum = 5; function foo() { for (var i = 0; i<=bgNum; i++) { vvv.createEmptyMovieClip("bgPos"+i, i); //this.createTextField("bdisp"+i, 100+i, 50, 20*i, 200, 50); _root.vvv["bgPos"+i]._x = _root.vvv["bgPos"+i]._y=0; loader.loadClip(bga[i], _root.vvv["bgPos"+i]); } }
CGIを介して、LineTo・MoveToを使って描いた画像を他の人と共有する方法を考えています すべての描画内容(点Aから点Bまで色Cで描いた、次に点Dから点Eまで色F描いた、次に・・・)をデータ化する方法を思いつきましたが、どうにも非効率的に思います Flashのある一場面の画像を、なんらかの拡張子に出力する方法はありませんか?
>>517 思いついた方法って何だよ
勝手に非効率とか言われても誰も理解できない
もしかしたら当たり前に使われてる手法かもしれないし、ありえないくらい非効率かもしれない
エスパーに聞きたいのか独り言言いたいのかハッキリしろ
あと拡張子に出力って何だよ
拡張子ってのは特定のOSでファイル名に意味付けするための命名規約であって出力方法じゃねーよ
ある一場面の画像って何だよ
Flashの用語を使え
あと画像ってのは結果であって取得元はムービークリップとかじゃねーのか?
状況を正しく説明しろ
そもそも描いた画像の共有って何だよ
お絵描き掲示板みたいな「描画結果を画像ファイルとして共有」なのか、ホワイトボードみたいに「描画している内容をリアルタイムに共有」なのかどっちだよ
どっちも共有だが方向性は全然違うぞ
目的を正しく説明しろ
エスパーじゃないから文章で読み込める範囲で突っ込んでみた
つか、投稿する前に一度くらいは読み直せよ
520 :
エスパー :2006/08/07(月) 08:52:49 ID:VRieYHh6
>>517 はこの前CSのTVに出ていた小太りのグラサンw
521 :
Now_loading...774KB :2006/08/07(月) 09:43:13 ID:AmtfUBzg
どもです。フラッシュライトの質問です。 ゲームを作ったんですけど、ハイスコアとか自作HPとか自作サイトに 送るのってどうやればいいんですかねえ?知っている神な人いませんか?
>>521 好きなのを選んでぐぐれ
HTTPのGETだったらURLさえ送れればいいわけだし
getURL
LoadVars
LoadVariables
XML
XMLSocket
WebService
・・・
問題は送った値をどう受けるかだ
その部分は別の問題
524 :
521 :2006/08/07(月) 14:03:42 ID:AmtfUBzg
ありがとうございます!!ググってみます。
バージョン8 AS2.0で質問です
リスナーイベント設定してonMouseWheelでマウスホイールのくるくるを使えるようにしてるんですが、
一度FLASHをクリックしないと検知されないのをなんとかしたいです
http://www.adobe.com/jp/support/flash/ts/documents/tn_15586.htm このページを見るとJavaScriptを使用してFlashにフォーカスを与える方法が紹介されてるんですが、
どうも上手くいきません。
XP SP2のIEではflashの表示をブラウザ側でブロックされてしまうため、
flashの埋め込み部分だけ外部jsファイルにしてたのでそれが問題なのかとも思いましたが
直接htmlに書いてもフォーカスされませんでした。
こういう時はみなさんどうやって対処されてるんでしょうか、よろしくお願いします
無理なのでスタートボタンやプレイボタンなどのクリックさせるギミックを用意する
テキストエリアに入力された文字を見て、機種依存文字ならエラー出したいのですが txtarea.onChanged = function() { if(txtarea.text == "A" ){ label.text = "機種依存文字は入力できません。" } } まず上のスクリプトなんですが、文字を入力してもチェンジイベントが発生しません。 ターゲットパスは合ってます。 次に、 on(press){ if(txtarea.text == "\u8740 - \u879F" ){ label.text = "機種依存文字は入力できません。" } } ここでIFの条件文の記述方がわかりません。 ひとつひとつ書いていくしかないのでしょうか? スクリプトの2つに分けたのに深い意味はないです 機種依存文字コード 13区の特殊文字 0x8740〜0x879F NEC選定IBM拡張文字 0xED40〜0xEEFC IBM拡張文字 0xFA40〜0xFC4B 外字 0xF040〜0xF9FC
>>527 上のイベントハンドラメソッドってセミコロンで終了させてる?
txtarea.onChanged = function(){
} ;
>>525 onloadは非同期読込の完了が保証されないからだめ
onreadystatechangeでreadyStateを監視して'complete'になったらFlashにfocusを当てる
530 :
1 :2006/08/07(月) 23:20:23 ID:68TZwFo+
クライアントの依頼でオールFlashのサイトを構築して、 特に大きな問題も無かったのですが、 最近そのクライアントの取引会社のPCからサイトが 見られないと連絡があったようです。 その会社はブラウザにプロクシを通す設定をしてあり、 外して直で見れば問題ないとのこと。 サイトが見られないとは、 「最初のローディング画面で先に進まなくなる」 という現象で、その部分は XML.load(CGIへの相対パス); というASを記述しています。 そのCGIは同じドメインに存在し、 --------------------------------- Content-Type application/xml <data num='1' /> --------------------------------- のようなデータを返します。
531 :
2 :2006/08/07(月) 23:20:31 ID:68TZwFo+
最初に疑ったのは、プロクシを通すことで80以外のポートが使えない、
それでXMLファイルのロードがうまくいかないのでは、
ということですが、ドキュメントを見ると
http://livedocs.macromedia.com/flash/8_jp/main/00002871.html#894395 XML.loadメソッドはHTTPを使用して呼び出すとあります。
念のため自分もファイアーウォールで80番以外のポートをブロックして、
キャッシュを消してからそのサイトを見てみましたが、
問題なく見られました。
今自分が考えてる可能性は、
その会社のプロクシサーバの設定で
XMLの呼び出しを禁止しているとか、
セキュリティソフト等でActiveXでのXMLの呼び出しを禁止している
(そんなのあるのかどうかもわかりませんが)
とかです。
ホスティングしているサーバ(IIS)にも問題があるかもしれません。
まず、そのCGIへブラウザで直接アクセスしてもらって
きちんとXMLデータが返ってくるかをテストしてもらおうと思っています。
確認できるまでまだ時間があるので、そのほかに調べておくこと、
確認しておくことがあればご教示いただけますでしょうか。
対象の会社のFlashPlayerのバージョンは9です。
自分のテスト環境のFlashPlayerは8と9です。
FlashのバージョンはPro8です。
宜しくお願いします。
Flashをどうこうする前に何か起きてるか切り分けろ まずはパケットキャプチャでリクエストとレスポンスがどこまで進んでいるのかを確認 話はそれからだ
>>533 Flashを基礎から勉強する
Flashのみでファイル操作は無理。cgi等を使う。
535 :
530 :2006/08/07(月) 23:54:54 ID:68TZwFo+
>>532 レスありがとうございます。
その会社の担当者と話せるまで何日かかるかまだわかっていないので、
いまのうちにありえる可能性を考えておきたかったのです。
自分の環境で試せることもできるだけしておきたいというのもあります。
全く自分に面識の無い会社なので、
パケットキャプチャツールをインストールしてもらうのは
失礼かな、とも思えます。
536 :
Now_loading...774KB :2006/08/08(火) 00:04:43 ID:bVhx58O7
>>535 どうでもいいけどこんなとこに書いたら
クライアントに見られるぞ。
守秘義務は大丈夫か?。
537 :
533 :2006/08/08(火) 00:06:44 ID:ndiAs8AZ
>>534 基礎?どこか勉強できるサイトはないの?
>>520 ありがとうございます。チェンジイベントは動きました。
しかし機種依存文字判定の
on(press){
if(txtarea.text == "\u8740 - \u879F" ){
label.text = "機種依存文字は入力できません。"
}
}
が動きません。
条件文にはif(txtarea.text == "\u8740 - \u879F" )や
if(txtarea.text == "\u8740" )などを色々試したのですが動かず、
if(txtarea.text == "" )という形でひとつひとつかかないと動かないのですが
ORなどを使わず、一括で判定できるような条件文は作れないのでしょうか?
if(txtarea.text == "" or txtarea.text == "" ・・・) こんな感じで書いても一括で判定してると言えると思ったからです
542 :
Now_loading...774KB :2006/08/08(火) 00:34:00 ID:bVhx58O7
>>541 これでどうよ?真が返ったらストリング中に
機種依存文字ありって事で
function CheckFunc (str) {
var len = str.length;
for (var i = 0; i<len; i++) {
var c = str.charCodeAt(i);
if (c>34624 && c<34719) {
return true;
}
}
return false;
}
>>542 txt_id と txt_pass というテキストエリアと、ボタンをひとつ設置して
on(press){
var str:String
str = _parent.txt_id.text
function CheckFunc (str) {
var len = str.length;
for (var i = 0; i<len; i++) {
var c = str.charCodeAt(i);
if (c>34624 and c<34719) {
_parent.txt_pass.text = "batu"
}
}
_parent.txt_pass.text = "maru"
}
CheckFunc(str);
}
を実行したのですが、常にmaruが表示されますorz
もし何か見落としてるところがあれば教えてもらえないでしょうか?
544 :
539 :2006/08/08(火) 01:02:56 ID:z6T4Ab2c
>>542 連投すみません。
今、上のスプリプトの変数cの動きをtraceで見てみたんですが
ちゃんとコードになって判定がされていました。
あとは機種依存文字の文字コードの上限と下限が分かれば、
それに対応して条件文を書けば何とかなると思います。
ありがとうございました。
545 :
Now_loading...774KB :2006/08/08(火) 01:09:30 ID:bVhx58O7
>>543 ゲラゲラw
なんでわざわざイベントの中で関数宣言してるんだ。
しかも判定が終わった後に
機種依存文字があろうが無かろうが
わざわざ丸入れるってどういう事?
if(CheckFunc(txtarea.text)){
label.text = "ねwwwwよwwwwwwwwwwwww"
}
これでいいじゃん?
>>545 まだAS触り初めて2週間なんだよwww許せwwww
関数とか.asとかの使い方わかんねwww
てかユニコードなのな、アスキーだと思ってたわ
>>535 Webアプリに限らず障害が出たときにI/Oを見るのはコンピュータ開発の常識
パケットスキャンとは言わなくてもプロキシ(ロカールでもリモートでも)を挟むとか、何らかのスニフを行ってチェックするのは問題切り分けの必須事項だろ
失礼とかそういう問題ではなく、当たり前の作業として依頼すべき
その先にFlashがどうのとかIISがどうのとかって話がある
アトリビュートだけで中身無しで送ってるのかな。 ちゃんとした書式で <data num='1'></data> と終了タグきちんとしてみたらどうかな。
現在FLASHでビジュアルサウンドノベルのような物が作れないかと試行錯誤しております 根幹はできたのですが、セーブとロード機能がどうにもうまくいきません おそらく、セーブしたときの変数が変化しないのでセーブがうまくいってないと思われます ASは ・セーブシステム(ボタンインスタンス) on (release) {//このボタンが押された時 fvsnovel = SharedObject.getLocal("myCookie"); mainpage = page + 3;//大元のフレームを変数に記録 fvsnovel.data.page1 = page;//現在の文章フレーム数を記録 fvsnovel.data.mainpage1 = mainpage;//現在の大元のフレーム数を記録 } ・ロードシステム(ボタンインスタンス) on (release) {//このボタンが押された時 fvsnovel = SharedObject.getLocal("myCookie"); page = fvsnovel.data.page1;//文章のフレーム数を呼び出し mainpage = fvsnovel.data.mainpage1;//大元のフレーム数を呼び出し this._parent.gotoAndStop(mainpage);//大元のフレームをセーブした位置に this._parent.TextAndTool.gotoAndStop(page);//文章のフレームをセーブした位置に } セーブ、ロードシステム共に同一のムービークリップに入ってます あと page:文章のフレーム数 TextAndTool:文章が表示されるムービークリップ です なにがいけないのでしょうか?
>>550 のURLのページを読んでもきちんと理解はできなかったのですが、
事前に
var so:SharedObject = SharedObject.getLocal("myCookie");
でSOLを読み込み、なかった場合は作成すればいいのでしょうか?
>>551 SharedObject内のデータを変更した所で
保存されるタイミングは、SWFを閉じた時か
SharedObject.flush() ;
で書き出した時だけじゃなかったかな。
すなわち
>fvsnovel.data.page1 = page;
>fvsnovel.data.mainpage1 = mainpage;
とデータ変更してセーブしたつもりだろうが、
直後に
fvsnove.flush() ;
していない限りは、ロードシステムのボタン押した瞬間に
更新されていないSharedObjectがまた読み込まれてるはず。
553 :
Now_loading...774KB :2006/08/08(火) 23:41:31 ID:odiCp6Jw
[]を使ってインスタンス名が「sample0」MCの幅を取得する処理を num=0 k=["sample"+num]._width と書いたのですが動作しません。 kの値が未定義となっています。 取得するにはどうすればよいでしょうか?
this["sample"+num] でどう?
>>554 thxです
できました。thisとかで指定しないとだめなんですね
this が何を示しているのかちゃんと理解しとかないとハマるよ
微妙ですが自分自身だったはず。 パスとか結構勘にたよってますから・・・ 助言ありがとです
URLはいりません
>>559 どう読むんだ
「URLは、いりません」
おれが書いた
>>558 のURLがいらないってことか?
「URL入りません」
どこに入らないんだ?
>>560 恐らく別人だから気にしなくていいさ。
夏入ってから茶々入れ専門が増えただけのことさ。
url長すぎてうまくコピペできないと思われw
ttpにしていないから自動でリンクが貼られていると思ったのだが・・・ まあいいや気にしない
564 :
551 :2006/08/09(水) 14:42:09 ID:A+xm30xk
前述の通り事前に var so:SharedObject = SharedObject.getLocal("novelfile"); でSOLファイルを作成、読み込みして on (release) { fvsnovel_so = SharedObject.getLocal("novelfile"); mainpage = page+3; fvsnovel_so.data.page1 = page; fvsnovel_so.data.mainpage1 = mainpage; fvsnovel_so.flush(); } でボタンインスタンスを押したときにセーブするようにしたのですが またうまくいきませんでした 隠しフォルダも含めnovelfileで検索した結果、なにも出なかったのでやはりセーブが原因だと思います 一体全体なにがいけないんでしょうか?
>>564 どうやって「うまくいかない」って結論してるの?
セーブ時やロード時にtrace()して値が入ってるかチェックしてみた?
soとfvsnovel_soってなんで変数名変わってんの?
567 :
551 :2006/08/09(水) 15:20:30 ID:KxvdAz21
>>566 fvsnovelからfvsnovel_soに変わっているのは
SOLフォルダに記録する変数に_soつけなきゃいけないのかな?
と前述のURL、あと自分のAS参考書を見て思ったのでそうしたのです
それとも
var so:SharedObject = SharedObject.getLocal("novelfile");
のsoと
fvsnovel_so.flush();
のfvsnovel_soは同じ変数名じゃなければならないのでしょうか?
568 :
syuma :2006/08/09(水) 16:54:30 ID:+gX5nLl9
ActionScript初心者です。 計算問題を作っています。 例えば(x+1)^2や、(2x+3y)^3の展開式を解けるようにしたいんですが、行き詰まってしまいました。 今は、(2+3)^2のような計算、(A+B)^2=A^2+2AB+B^2のようなものしか出来ません。 var X = 2; var Y = 3; _txt.text = "("+X+"+"+Y+")^2"; ke(); function ke() { trace(typeof (X)); if (typeof (X) == "number" && typeof (Y) == "number") { var tmpNum:Number = X+Y; trace(Math.pow(tmpNum, 2)); } else { trace(X+"^2+2"+X+Y+"+"+Y+"^2"); } } どなたかアドバイスよろしくお願いします。
>>567 コピペで動いたんだが何がおかしいか教えてくれ
好きではないコーディングスタイルで書いたんだから是非
メインタイムラインのアクション
var so:SharedObject = SharedObject.getLocal("novelfile");
trace("so.data.page1 = " + so.data.page1);
if(so.data.page1 == undefined)
{
page = 1;
}
else
{
page = so.data.page1;
}
ボタンインスタンスのアクション
on(release)
{
fvsnovel_so = SharedObject.getLocal("novelfile");
mainpage = page + 3;
fvsnovel_so.data.page1 = page;
fvsnovel_so.data.mainpage1 = mainpage;
fvsnovel_so.flush();
trace("page = " + page);
}
エスパー能力は無いが推測してみると、初回 undefined であるにも関わらず page に代入してずっと undefined を引きずっているんじゃないのか?
コピペに足した部分が簡単な回避コードなわけだが。
本やWebにあったからと言って「オレ流解釈」で勝手に良いだの悪いだの判断するな。
理解していない人間の判断で情報を出してもコミュニケーションエラーを招く。
こういう時は最小限の再現コードを作って提示するもんだ。
ワナビーは馬鹿なんだから無理して回答すんなwwww
572 :
551 :2006/08/09(水) 20:39:10 ID:KxvdAz21
>>569 動いたんですか?
こちらはセーブを押した後、ロードを押しても変化はありません
ちなみにロードの方は変数を別の定数にして実験したところ動いたので、
ロード時のフレーム移動のパス間違いはなさそうです
あと、変数「fvsnovel.data.page1」のダイナミックテキストにも変化はありません
>>569 のスクリプトを入れてみても駄目でした
セーブ時のtraceの結果が「page = undefined」です
考えられる原因が他にありませんでしょうか?
もしかしてTextAndToolという別のムービークリップの中で別機能のために
page = _currentframe;
を入れているのが原因でしょうか……
だから問題を切り分けろって。おまえみたいな奴等のほとんどは質問内容と全く関係ない ところで間違ったことやってるからタチ悪いんだって。 別にネットとか関係なく普段誰かにモノ聞くにしても問題の切り分けしない奴ってのは 礼儀知らずなんだよ!
>>573 ま、まあ落ち着け、気持ちは分かるから。
>>572 動いたとか動かないとか以前に、
>>569 の文章はちゃんと読んで理解してるのか?
undefinedになるならそもそもセーブの時点で値が入ってないってことだろ?
なら、どうしてそうなるかを考えるのが先決。
そのためには最小構成でテストする。
つまり新規flaファイルで、単純なセーブとロードだけの仕組みを作ってテスト。
そこで、値がセーブでき、ロードできるまで確認。
そこまで出来てからテキストフィールドの表示やMCの移動を考える。
基本が曖昧なら、一度に多くのことを処理しようとするな。
地道に理解してく気がないなら製作依頼スレへ。
叩かれるのを承知で聞きたい!
>>2 以外のASを解説してるサイト(できればオンライン系)あったら教えれください
>>576 dクス!でもゴメン!ココのサイト知ってるけどASは結構調べにくかったorz
教えてもらっときながらスマソ!!
>>572 パス間違い?
定数?
一体何を言っている?
自分が何を言っているか理解して書いているのか?
とりあえずこれは理解しているか?
・変数の概念
・変数のスコープ
・タイムライン
・ターゲットパス
・_root / _global / this / _level0
・undefined とは何か
こういう基礎が欠落しているから訳のわからないオレ流疑問が発生する
サンプルをオレ流解釈してコピペする前に、ActionScript言語の基礎から勉強することをお勧めする
でないといくら助言してもコミュニケーションが成り立たない
>>575 ASの何を知りたいかで変わってくると思う
基礎なのか特定分野の開発手法なのかコミュニティなのかなど
求めるレベル(概念を知りたい、ステップバイステップな記事が欲しい、サンプルコードがあれば良い、など)を明記すれば尚良い
また、自分が押さえている
>>2 以外のサイトを出すべき
でないと
>>576-577 のような失礼な流れになる
>>580 オンラインゲームだけじゃわからん。
単にチャットや対戦CGIのインターフェイスだけをFlashでってことなのか
FCS使ってMMOみたいなことしたいのか。
>>581 とりあえず今やりたい事は”2Dで、画面内をリアルタイムで複数のキャラクターを動かす”です
やべ、直リンにしてしまった・・。
585 :
580 :2006/08/10(木) 14:00:41 ID:mRjbHcXl
フラッシュ8で初心者です。 swfの冒頭ではなく、ムービークリップの冒頭にnow loadingを入れようと思うのですが、 swfの冒頭に入れる場合はいつもこれを使っていました。 onClipEvent (load) { _root.stop(); par = 0; bar._xscale = 1; } onClipEvent (enterFrame) { par = parseInt((_root.getBytesLoaded() /_root.getBytesTotal()) * 100); if (par == 0) { par = 1; } else if (par >= 100) { par = 100; _root.gotoAndPlay("start"); } bar._xscale = par; } これを、ムービークリップのフレーム1に入れるからと思い ソースの_rootをthisに変えてみたら動かなかったので、誰か教えて下さい…
>>586 とりあえず、_parent で実験してみたらどうだろう。
>>586 絶対パスで指定してるのになんでthisに直すの?直す必要あるのかな。
589 :
586 :2006/08/10(木) 17:33:22 ID:yHmFRmC6
_parentにしたらメーターの100%が出なくて真っ白画面になって読み込み後にスタートして、 何も付けないとメーター100%が1秒くらい表示された後にスタートします
>>589 _root.barにしてみれば?全部絶対パス。
591 :
586 :2006/08/10(木) 17:57:34 ID:yHmFRmC6
>>590 サン
_roor.barにしてみたけど変わりませんでした…
1つのswfに超重いムービークリップが3つ入ってるので
この3つとも冒頭に各nowloadを入れたいんですが
そういうやり方は無理なんでしょうか
592 :
551 :2006/08/10(木) 18:02:11 ID:M5vRFSZe
散々ご迷惑かけた後になんとか自己解決にいたりました
変更点としては
・メインタイムラインの
var so:SharedObject = SharedObject.getLocal("novelfile");から
var fvsnovel_so:SharedObject = SharedObject.getLocal("novelfile");に
・セーブボタンインスタンスの中の
page変数を_root.TextAndTool.pageに変更
これできっちり作動しました
今後は
>>573 、
>>574 、
>>578 を念頭にもう一度きちんとASを勉強しなおそうと思います
多大なるご迷惑すみませんでした
そして数々のアドバイスをありがとうございます
最近になって初めて気づいたんだが Flash8のXML読み込みって、1フレーム目で1回読むと、以降XMLデータがメモリに残ってしまうから、 2フレーム目でそのXMLの内容を変更したり削除して 1フレーム目に戻ってXMLを更新しようと思ってもメモリ上のデータ読んじゃって過去のXMLが表示されるのな これの対処策として、メモリをリフレシュするなり、変数を初期化すればいいんだろうけど リフレシュする関数とかないよな・・・? 関係ないとは思ったんだがupdateAfterEventってのを、読み込みをするフレームの行頭に使ってみたが意味なかった。 ブラウザを閉じたらそれが削除されるみたいなんだが、ブラウザの更新は削除されなかった。 new XMLの変数を初期化すればいいと思って、 0とか色々代入してみたんだがそうするとXML読み込み動作自体しなくなった。 これってnew XMLに配列使って無限ループで回させたら動くだろうけど そんな無茶なことせずに動かせる方法ってないのかな
ASなんかよりこのスレの日本語解読するほうが高度な技術が必要だな。
口語よりもプログラミング言語のほうがより具体的に表現できる。
>>593 ものスゴイ勢いで意味が分かんないwww
ちょっと色々「こういうことか?」とか聞こうとしたんだけど、意味分かんなすぎてダメだわ。
・1フレ目で外部XML (例: test.xml) 読み込み
・読込んだXMLの内容を操作する。
・1フレ目に戻って、XML
ああ、やっぱだめだ。わかんねwww
正直スマンカッタ。段階を追って説明するわ 1フレーム・・・・・1フレーム目でtest.xmlを読み込んで変数に格納 2フレーム・・・・・2フレーム目でXMLの内容を表示 3フレーム・・・・・3フレーム目でtest.xmlを削除 ( 削除を行うのはcgi ) 3フレーム・・・・・削除完了の値が帰ってきたら1フレーム目に戻る 1フレーム・・・・・再度test.xmlを読みに行こうとするが、test.xmlがないのでstop、のはずなんだが 2フレーム・・・・・削除されているのもかかわらずtest.xmlの内容が表示される 理由がメモリにXMLデータが保持されてるから、だと思う 解決策として試したのが、 1、updateAfterEventを記述 2、XML変数(new XML)に0とかnullとか色々代入してみて初期化を試みる 3、IEを更新 4、IEを閉じて再度起動 結果、正常にXMLがないことを認識したのは4の場合のみだった
>>597 なんとなく把握。
メモリに残っているのではなく、キャッシュだと思われ。
基本、var myXML = new XML(); でリセットされるから。
俺がXML読み込む時は、適当な引数付けてキャッシュを使わないようにしてる。
「test.xml?time=20060811013820」
因みに、こんな感じ。
1、updateAfterEvent → 画面の描写を強制的にする命令で何ら関係なし
2、delete使えば? delete myXML; myXML = new XML(); こんな感じ。
3、キャッシュなんだよねー。
"test.xml?" + new Date().getTime() の方が良くないかな? ランダムだと無いとは思うが、万が一被る場合もあるかと。
待ってくれ・・ASにそんな記述方法があるのか 調べても出てこなかったが、見た感じファイルロードする時に ?以降の数字と一致するキャッシュの呼び出しだと思ったんだがあってる? xmltest = new XML(); xmltest.load("test.xml?time=" + new Date().getTime()){ } こんな感じで合ってるのか・・ この?以降のtime=とかa=っていうのはどんな名前でもいいの?
キャッシュって何か153万回調べるといいよ! 要するにさ、クソブラウザの野郎が 「test.xmlって、前にも読み込んでキャッシュしてるからそれ使うっと♪」って思ってるから Perlで削除したりしても、反映されないわけじゃん? じゃあ、どうすりゃ回避できるかっつーと、別のURIにしてしまえば 「前のヤツとは違うから読込に行かないといけないのね!」って思うわけじゃん。 そういう訳で、test.xml?time=xxxx っていうURIに変更するわけ。 ?以降は引数って言って云々は.... 一応 Perl 使ったりしてるんだろうから、、、分かるよな。 var xmltest:XML = new XML(); xmltest.load('test.xml?time='+ new Date().getTime());
把握した。ありがとう それ踏まえて今 System.useCodepage = true; test = new XML(); test.load("test.xml?time=" + Math.random()); test.ignoreWhite = true; test.onLoad = function(success){ if(success){ hensu = this.firstChild.firstChild.NodeValue } って感じで読んでて、「?」いれてないときは XML読めていたんだけど「?」つけてから Undefinedになるようになったのは、なぜか教えてくれないか上の偉い人 ローカルホストで起動してるからまずいんだろうか
自己解決した。ありがとん というか今更ながら再度調べてみたら、外部システムと連結してFlashを使う場合は ランダムいれてロードするのが当たり前なのな。 deleteとかも知らなかったし、 新しいこと知れて勉強になった。
おめでd これでイカスフラッシャーが1人育ったな
リストボックスをDBみたいな複数列あるリストにしたくて、 形はリストボックスをひとつおいて、真ん中に縦棒かいたらできて、 次にデータをaddItemで (txt1 + " " + "txt2")って感じで入れることで 確かに複数列あるリストにはなったんだけど、 txt1の文字数が大きくなったり少なくなったりしたらtxt2の行頭位置がズレてしまう。 解消方法としてtxt1の文字数が8文字以下なら、大文字8文字になるまでスペースを追加 8文字以上なら8文字以上の文字を削除、って感じでしたらいいのはわかるんだけど どう書いていいのかわからない。。誰かポスケテ
607 :
Now_loading...774KB :2006/08/13(日) 12:16:12 ID:c+Hic2PS
>>606 文字列編集はすぐ答えられるけど、
何文字以上って言われても半角全角とかあるし、フォントもちがうし。
結局ずれてしまいますどうしたらいいでしょうか?というのが見え見え。
きちんと表形式にしたいなら、テキストフィールドとかでグリッドみたくやると思う。
誰か!教えてクダサイ。MXで作ったものをflash8で保存したら動かなくなってしまいました。 サウンドのon/offのボタンで、offにすると消えますが、 もう一度ONにすると音が鳴らなくなってしまいました。 ONのボタンアクションはこれ on (press) { t1 += (t1>=100) ? 0 : 100; s1_sound.setVolume(t1);} このボタンのフレームアクションはこれ s1_sound = new Sound(_parent._parent.music); OFFのボタンアクションがこれ(これはちゃんと止まる) on (press) { t1 -= (t1<=0) ? 0 : 100; s1_sound.setVolume(t1);} ファイルはactionscript1.0ですがフラッシュプレイヤー8でパブリッシュしたとたん狂いました。 その前までは6で正常に動作していました。 ためしに、同じasを使っているMXで作ったものを8で開き、 プレイヤー8用にパブリッシュしたら同じ現象になりました。誰か優しい人!教えてクダサイ。
>>608 それでやってみたが再現できない
fla上げれ
>>607 半角全角の両方が入り混じっていて、
フォントに関してはリストボックスのフォントは指定できなかったような。。
テキストフィールドでグリッドみたいな形・・・
選択しているものの色を変え、
選択されたものを取得できるようにしたいのですが、テキスフィールドでもそれが可能なのですか?
半角全角に色んなアルファベットが入り混じる場合は、途中でテキストを行揃えすることって可能なんでしょうか
611 :
Now_loading...774KB :2006/08/13(日) 19:15:07 ID:sOUC3nqJ
>>608 それは7からの仕様変更に対応してないから。
変数t1が0で暗黙的に初期化されてたのが
undefinedというストリングが入るようになってるので
明示的に0で初期化しなければならない。
後、大文字と小文字の違いも別のものとして
判定されるようになってるから注意
>>609 >>611 ありがとうございます。これはフラッシュの本に載っていたものをそのまま使っていたので
>>611 さんが説明して下さっているのに何をどうしたらいいのかわからず、、、
よろしければソース教えていただけませんでしょうか。
ファイルを簡易に編集してうpしようと色々探してみたんですが重くてまだ時間がかかります
まずt1をちゃんと定義してるのか var t1:Number=0; みたいに あと0と100だけだったらそんな変な条件式使わなくてよくね?
614 :
612 :2006/08/13(日) 19:51:58 ID:xRxPzVIr
>>611 さん
嗚呼っ!わかりました。t1を0だからこうですね?
on (press) {
t1=0;
t1 -= (t1<=0) ? 0 : 100;
s1_sound.setVolume(t1);
OFFボタンをこれにしたら治りました!!!!!!!!!!!!!!!!
どうもありがとうございました!!!!!!!!
2chじゃなければ何かお礼を差し上げるところですが、
ものすごい感謝してます。ほんとに有難うございました(^-^*)やった〜超嬉しい
>>614 ネタかもしれないけど一応突っ込んどくね
t1=0; ←これ入れたら
t1 -= (t1<=0) ? 0 : 100; ←これ意味無いじゃん
ちょww 意味あるだろw
617 :
612 :2006/08/13(日) 20:00:00 ID:xRxPzVIr
え、、、なんですか せっかくできたとおもって喜んでたのにまだ何か違いますか…
>>614 マジレスすると定義する場所がややおかしい
ボタンの中じゃなくて他のとこにすべき
>>616 ここでの条件式はいつも一定の解になる
t1=0;
ここでt1は0に固定されるわけだ
そのあとに
t1 -= (t1<=0) ? 0 : 100;
(0<=0)は常にtrueつまり (t1<=0) ? 0 : 100が返す値は常に0
t1=0;
t1-=0;←まったく意味がない
612は、
>>608 のASをどこまで理解できてるんだ?
620 :
612 :2006/08/13(日) 20:22:23 ID:xRxPzVIr
ボタンじゃなくて、フレームアクションのとこに t1=0;入れたら、これでも動きました。 OFFボタンにだけ入れて動くなんて変だなと思ってたんですけど 入れる場所が違ったんですね(汗 本に載ってるやつそのまま使うくらいしかやらないので全然意味わからなくて。 教えて頂いた皆様どうもありがとうございました
621 :
Now_loading...774KB :2006/08/13(日) 22:17:46 ID:sOUC3nqJ
変数の意味があまり感じられないんだけど じかにボリューム変えてみては? s1_sound.setVolume(0); s1_sound.setVolume(100);
すいません、XMLを読みこんだ時にタブと改行を削除しちゃいたいんですが、 ignoreWhiteをtrueに設定したりしてもうまくできません。 なんというかFLASH内で簡単にタブや改行を置換で削除しちゃう方法はないんでしょうか
623 :
622 :2006/08/14(月) 02:46:26 ID:R3d/ImbW
>>622 どういうAS書いてどうなっちゃうとか書かないと何ともコメントできんがな。
undefined って何だか理解していない香具師が多くね? trace で undefined って表示されるから文字列型の値だと思ってない? undefined は変数が初期化されていない事(未定義)を示す“状態”であって“値”じゃないからね ちなみに null は“空である”という事を示す“値” undefined と等価演算子[==]で比較すると真だが、厳密な等価演算子[===]だと偽
MX2004です。 image_mcというMovieClipがあって、 image_mc.onMouseDown = function(){trace("test");} Mouse.addListener(image_mc); のようにすると、何もおきません。 オブジェクト作ってそれがリッスンすると動作します。 ムービークリップはリスナーオブジェクトとして使えないのですか?
627 :
622 :2006/08/14(月) 14:54:54 ID:1T7hPrDD
>>624 var TextArray:Array= new Array();
TextArray = txt.split("");//見えないでしょうけどキーボードのタブ打ってます
txt= TextArray.join("");//何も指定せず
みたいな感じです
改行のときは¥nを半角で
タブは\t
>>622 ignoreWhite を設定すれば問題ないはずだよ。どこか間違ってないかい?
>>627 も問題なく動作するはず。
underfind が返るってことは元々の txt が未定義ってこと。
>>626 ムービークリップにイベント割り当てるならリスナー登録は必要ないよ。
それが動かないなら image_mc が存在してないんじゃないかな。
存在すれば1回のクリックで2回testが表示されるはず。
2人とも思いこみで問題の原因を特定してしまってるみたいだけど、
どこまでが正常でどこからおかしくなっているのかをしっかり見ていくことが
問題解決の早道だよ。
DataGridコンポーネントに列を2つ追加して、 ひとつは外部から受け取った名前、もうひとつは外部から受け取った日付なんですが この日付列を、日付順にソートさせることって可能ですか? 何も指定せずに日付データを入れて、 ソートボタンを押してソートしても一文字目の数字でソートされてしまいます。 ソースは、かなり端折ってはますが atai[i] = [{name:aaa},{date:2006-6/8-13:00},{dat:14}] grid.addColum("name") grid.addColum("date") col = grid.getColum(name) col.width(160) grid.dataProvider = atai こんな感じです、お願いします。
>>630 grid使ったこと無いのでよくわからんが、文字列(辞書順)で
ソートされてるんじゃないのかな。
632 :
Now_loading...774KB :2006/08/15(火) 11:01:17 ID:aOeXx3aA
変数iが1から30の時は画像Aを表示し、31から60の時は画像bを表示するというアクションスクリプトを教えてください
>>632 画像を表示するのはどうやってるの?
まったく解らないなら、どういう事をやりたいか具体的に書いた方がレス
つきやすいし、それに合った良いスクリプトをレスしてくれると思うよ。
ふつうはif分での分岐だけど。
634 :
Now_loading...774KB :2006/08/15(火) 11:29:09 ID:DDinODpG
はい ゲームでスコアは低いと泣き顔マーク スコアが高いとにっこりマークっていうのがしたいいんですが・・・
>>634 それは目的だろ
>>633 は手段を問うてると思うんだが
制御構文って知ってる?
条件分岐ならこうだが
if(1 <= i && i <= 30)
{
//画像Aの表示処理
}
else if(31 <= i && i <= 60)
{
//画像bの表示処理
}
表示処理のアルゴリズムすら基本設計レベルで想像が付いていない気がするが
636 :
Now_loading...774KB :2006/08/15(火) 13:40:45 ID:DDinODpG
そうなんです 表示処理のアルゴリズムがわかりやすく学べるhpとか本とかあれば ご教授ください・・・
>>636 ヘルプのチュートリアルをやるとか、ググるとか。
とりあえずは一冊ぐらい教科書(入門書)でも買えば?
638 :
Now_loading...774KB :2006/08/15(火) 14:26:56 ID:DDinODpG
ググっても本二冊かったんだが ぴったしな記述がみあたらないorz
MCの画面移動の制御ですが画面外に出たっきり帰ってきませんお願いします if (_x< - 名._width) { _x = 550; } if (_x>550) { _x = - 名._width; } あと550(画面の大きさ)の値を求める方法はないですか?
どういう動きにしたいのかさっぱりわからんがこんなようなことか? onClipEvent (enterFrame) { if (dir == undefined || this._x<0) {dir = 1;} if (this._x>Stage.width) {dir = 2;} switch (dir) {case 1 :this._x ++;break; case 2 :this._x --;break;} updateAfterEvent();}
AS初心者ですが enterFrameにupdateAfterEvent入れるのってどういう意味なんですか?
643 :
Now_loading...774KB :2006/08/15(火) 17:18:42 ID:EQHTjqyG
>>636 このスレの
>>1 とか
>>2 とか読んでリンク先を見た上で言ってるのか?
ちょっと前の
>>580 でも参考となる情報が出ているが
分からないとか教えてくれとか言う前に、せめて同スレ内の情報くらいは見返そう
その上で、自分は今どういうことをやっていて、何が分からないから、何がどう分かりやすく学びたいのかを書かないと、期待する回答なんて来ない
>>642 その言葉はどこで拾ってきたの?
いきなり言葉が振って湧いてきたわけじゃないよね
どこで拾ったか知らないが、どこの enterFrame(onEnterFrame?) で updateAfterEvent を入れろってあるんだ?
「無駄な処理は行わない」って鉄則に反するだけだが
かの野中氏も書いてるがな
FN0402004 - updateAfterEvent()グローバル関数 - Flash : テクニカルノート
http://www.fumiononaka.com/TechNotes/Flash/FN0402004.html ※「updateAfterEvent enterFrame」でぐぐればすぐに見つかるページなんだが・・・
初心者と自称するなら、意味不明な情報を出してきた情報源くらい書いとけ
もしかしたらそこでは何らかの意味のある処理として紹介しているのかもしれないぞ
ttp://www.fumiononaka.com/TechNotes/Flash/FN0402004.html onClipEvent (enterFrame)ハンドラアクションやMovieClip.onEnterFrameメソッド内で
updateAfterEvent()関数を呼出すことは、意味がありません。関数の呼出し自体は無視され、関数の存在にかかわらずハンドラの処理後は自動的に描画が更新されるからです。
「念のため」描画更新の処理を記述しておくという人がいます。しかし、動作しない処理を記述しても、
何の「念」にもなりません。もっとも、自分しか見ないスクリプトであれば、とくに害もありません。けれど、他の人に見せるコードでは、意味のない処理に意味があるかのような誤解を与える点で、不適切でしょう。
646 :
642 :2006/08/15(火) 17:27:24 ID:brJ1Mq7P
すいません、1レス前にあったので。
647 :
640 :2006/08/15(火) 17:47:35 ID:s1ciiWXm
>>641 情報が少なくてすみません
下記のようにしたのですが、戻ってこないのです
onClipEvent (enterFrame) {
// 左を押したとき
if (Key.isDown(Key.LEFT)) {
_x -= 10;
}
// 右を押したとき
if (Key.isDown(Key.RIGHT)) {
_x += 10;
}
// 画面ループ
if (_x< - 名._width) {
_x = 550;
}
if (_x>550) {
_x = - 名._width;
}
}
Σ(゚Д゚;エーッ!俺の持ってるFLASH ACTION SCRIPT HANDBOOKとやらにはenterframeで updateAfterEventしてるサンプルでてたからそれが正式なのかと思ってたよ・・
649 :
642 :2006/08/15(火) 18:02:12 ID:brJ1Mq7P
この作者、最終的には心の問題ですってことで落ち着けようとしてるんじゃあるまいな?
>>649 ならわざわざ嫌味な揚げ足取りせず、意味無いよって言えば済むんじゃないの?
652 :
642 :2006/08/15(火) 18:14:15 ID:brJ1Mq7P
「嫌味な揚げ足取り」って取られたのか。 「AS勉強のネタ提供」で時々やってるんだけどな(´・ω・`)
>>652 それならAS初心者のくだり要らないだろ。
AS勉強のネタ提供なら、説明するかURL貼って終わり。
知ってるのにわざわざ聞く振りする必要無いって。
654 :
642 :2006/08/15(火) 18:26:26 ID:brJ1Mq7P
俺が説明したって意味無いでしょ(´・ω・`) 脱初心者が初心者に教えるのはいい勉強になると思って大分前からやってるのに(´・ω・`) たしかに649は余計だったかも( ´・ω・)ノシ
642=649かよ・・・
本やら、なんやらの評価うんぬんはマ板で。 ここは純粋にASなスレなのでよろ。
>>629 ん、2回trace("test")実行されるどころか、1回もされない.. orz
>>657 image_mcが無いんじゃないの。
trace(image_mc)で何返ってくる?
>>658 あ、ごめん。1回はtrace("test")できた。
Mouse.addListener(image_mc);
あっても2回は実行されないよね?
あーできてるできてる。ごめんなさい。 ちゃんと2回でました
質問させてください。 AS初心者です。 FCSで、音声のみのストリーミング配信(live)をしているかどうかを確認する方法が分かりません。 配信側 -------------- nc = new NetConnection(); nc.connect("rtmp://localhost/devtest"); my_mic = Microphone.get(); ns = new NetStream(nc); ns.attachAudio(my_mic); ns.publish("test","live"); 受信側 -------------- nc = new NetConnection(); nc.connect("rtmp://60.33.118.27/devtest"); ns = new NetStream(nc); ns.play("test" , -1 ); NetStream.onStatusでトラップをかけると、"NetStream.Publish.Start"が返ってきます。 しかし、当該ストリーミング(上例だと"test")で配信中なのかどうかを調べる方法が分かりません。 申し訳ありませんが、ご教授いただけるとうれしいです。 よろしくお願いいたします。
if (Key.isDown(Key.LEFT))は←のキーを押したときなのは解りますが、何も押さないときの 条件式を教えてください(nullとかnotじゃだめみたいです)
>>662 if (!Key.isDown(Key.LEFT)){
//処理
}
もしくは
if (Key.isDown(Key.LEFT)){
}else{
//処理
}
>>662 何も押さないときというのは何もされてないとき。
つまり、何も記述する必要ない。
早押しゲームとかでなら、タイマーで指定時間たつまでに
何も押されない場合アウトにする、という感じで作ると思うよ。
何も押されていない事を判別って難しいよな いわゆるキー入力が一切無いアイドル状態ってことだろ? あるフレーム(onEnterFrame)で、全くキー入力が無いことを一発で保証するプロパティとかメソッドは無いと思う getCodeやgetAsciiもいつ押されたか分からないし、isDownで全入力をチェックするのも非現実的 「何も押されていない」じゃなく「○○キーが押されてない」に条件を変えてみればいいんじゃないか
何も押されてないことを判別する必要があるの?
ゲームなら特定のキーが押されていない=特定のキーが押されている
ことが分かれば十分なはず
ただ、OSが持つスクリーンセーバ制御のように、全てのキー(とマウス)が操作されていないことを知る(アイドルであることを知る)処理も存在する
例えばアドベンチャーゲームで、何も入力されていないときに「起きてる〜?」と音を出すとか
目的が分かれば条件を「何も押されていない」以外に変えれるかもしれない
>>662 はどういう意図で「何も押さない条件式」を知りたかったのかに拠る部分だな
668 :
Now_loading...774KB :2006/08/16(水) 11:19:40 ID:Pi358Dm2
いま、flvをプログレッシブ再生させているんですが、 尺上で、頭のいらない部分があるので、途中から再生させたいのですが どのようにしたらいいのでしょうか? ActionScriptで制御可能でしょうか? アドバイスお願いいたします。 (※編集段階で頭を切ればいい話なのですが、flvを変換するまえの元ファイルが現状 、諸事情のため、用意できません。)
>>667 アイドルであることを知る処理ってどんなん?
670 :
Now_loading...774KB :2006/08/16(水) 11:35:19 ID:Pi358Dm2
一応、自己解決したのですが、 以下のようなスクリプトを、ヘルプを元に書いてみました。 import mx.video.*; my_FLVPlybk.autoPlay = false; my_FLVPlybk.contentPath = "test.flv"; var listenerObject:Object = new Object(); listenerObject.ready = function(eventObject:Object) { my_FLVPlybk.seekSeconds(1); my_FLVPlybk.play(); }; my_FLVPlybk.addEventListener("ready", listenerObject); ただ、この場合に、任意の位置から再生は可能になったのですが、 任意の位置で、停止をしたいのですが、 どのように記載していいのかわかりません。 初歩的な質問かもしれませんが、どうぞよろしくお願いいたします。
671 :
Now_loading...774KB :2006/08/16(水) 11:57:22 ID:G0o/tNof
質問させてください。 TextFieldのhtmltextにて使用可能なタグの一覧が掲載されたサイトを調べています。 かなり数が少ないということは認識しているのですが、ネット上でなかなか情報を見つけられません。 よろしくお願いいたします。
673 :
Now_loading...774KB :2006/08/16(水) 12:27:59 ID:g8DP9r8X
671です。 ヘルプのリッチテキストについての項目で解決いたしました。 どうもありがとうございました。
>>671 ググっても解らないような奴に教えてもわからないでしょ?
//
>>662 key_array=new Array();
isDownNum=0;
keyList=new Object();
kl.onKeyDown(){
var flag=false;
for(var i in key_array){
if(key_array[i]==Key.getCode()){
flag=true;
break;
}
}
if(flag==false){
key_array[key_array.length]=Key.getCode();
isDownNum++;
}
}
kl.onKeyUp(){
for(var i=0;i<key_array.length;i++){
if(!Key.isDown(key_array[i])){
key_array.splice(i,1);
isDownNum--;
}
}
}
Key.addListener(kl);
//isDownNumが0なら何も押されてないよ
>>670 ActionScriptキューを埋め込んでイベントをハンドルすればいいかな
listenerObject.ready = function(eventObject:Object) {
my_FLVPlybk..addASCuePoint(100, "stopPoint");
};
listenerObject.cuePoint = function(e) {
trace("キューポイント通過")
}
my_FLVPlybk.addEventListener("cuePoint", listenerObject);
677 :
Now_loading...774KB :2006/08/16(水) 13:15:02 ID:Pi358Dm2
670> ありがとうございます。 キューを埋め込むというのは、flvを作成時に、キューポイントを 埋め込んでおく?ということでしょうか。 以下のように書き直しましたが、再生不能になってしまいました。 import mx.video.*; my_FLVPlybk.autoPlay = false; my_FLVPlybk.contentPath = "test.flv"; var listenerObject:Object = new Object(); listenerObject.ready = function(eventObject:Object) { my_FLVPlybk.seekSeconds(1); my_FLVPlybk.play(); }; my_FLVPlybk.addEventListener("ready", listenerObject); listenerObject.ready = function(eventObject:Object) { my_FLVPlybk.addASCuePoint(100, "stopPoint"); }; listenerObject.cuePoint = function(e) { trace("キューポイント通過") } my_FLVPlybk.addEventListener("cuePoint", listenerObject);
アンカーくらいちゃんとつけてください><
>>677 違うよ。実行時にASでキューポイントを埋め込める。
だからASキューポイントと言うのです。
そのコードだとreadyイベントハンドラが上書きされちゃってますので、
こんな感じかな?
import mx.video.*;
my_FLVPlybk.autoPlay = false;
var listenerObject:Object = new Object();
listenerObject.ready = function(eventObject:Object) {
my_FLVPlybk.seekSeconds(1);
my_FLVPlybk.play();
my_FLVPlybk.addASCuePoint(10, "stopPoint");
};
listenerObject.cuePoint = function(e) {
trace([e.info.time+"秒", e.info.name+"を通過"]);
};
my_FLVPlybk.addEventListener("ready", listenerObject);
my_FLVPlybk.addEventListener("cuePoint", listenerObject);
//パスの指定(読み込みの開始)は最後の方がいいかな
my_FLVPlybk.contentPath = "test.flv";
>>663-667 沢山の返答ありがとうございます
switchでやることにしました!ごめんなさい
681 :
Now_loading...774KB :2006/08/16(水) 17:40:07 ID:Pi358Dm2
>>679 上記をフレームスクリプトに記述した書いたところ、
スタートは、きちんと認識されるのですが、
ストップ位置は、認識されないようです。
そのまま最後まで再生されてしまいます。
なにか書き方が悪いのでしょうか。
682 :
Now_loading...774KB :2006/08/17(木) 00:49:10 ID:RXPHqlJa
初めてクラスを扱ってみようと思ったのですが、 // Test.as class Test { private var xx:XML; function Test () { xx = new XML (); xx.onLoad = function () { trace (xx.toString ()); // undefined になる }; xx.load ('hoge.xml'); } } // タイムライン this.stop(); var Hoge:Test = new Test (); のような簡単なものがうまくいかないのはなぜなんでしょう? インスタンスメンバを静的メンバに変えてやるとうまくいくのもなぜなんでしょう?
三角関数が分かって暇な人が居たら、質問させてください...。
円の中心点から徐々に遠ざかって行く、赤丸(MovieClip)がある(角度は初期にランダムでセットされる)
このFLAを拡張して、赤丸(MovieClip)に対して垂直な線(任意の幅)がくっついてるとして、
その両端の点の位置を求めたいのですが、やり方が分かりません...。
atanとか、そういったものを使えば出来るのかな。
高校で三角関数を挫折したのを、今になって大後悔。
分かりづらいと思うので図解かいてみました。
ttp://www.restspace.jp/cgi-bin/orz/img-box/img20060817054028.gif 現状の赤丸と、線(w:100px / h:1px の線のM)のスクリプトはこんな感じです。
--------------------------------------------
// 円の中心点
var cx:Number = 275;
var cy:Number = 200;
//中心点からの距離と角度
var len:Number = 0;
var degree:Number = Math.random()*360;
panel._rotation = degree+90;
// 赤丸作成
var aka:MovieClip = this.createEmptyMovieClip("aka", 1);
aka.lineStyle(8, 0xff0000, 100); aka.moveTo(0, 0); aka.lineTo(1, 0);
aka._x = cx; aka._y = cy;
this.onEnterFrame = function() {
len++;
var rad:Number = Math.PI*degree/180;
aka._x = panel._x = Math.cos(rad)*len+cx;
aka._y = panel._y = Math.sin(rad)*len+cy;
};
>>684 あんまAS関係ないかと思いますが
垂線の式と円の式で交点を求めればよいかと
その手のアルゴリズムはその辺に転がってます
初歩的な質問で悪いんだけど ActionScriptでクラスが必須だと言われる理由と、 どういう時にクラスが使われるのかを出来るだけ多く教えてくれないか 検索しても見事にクラスの用語解説が引っかかって・・・ 正直クラスなんかいらないと考えてたんだけど 状況によってはクラスとパッケージ(?)を本格的に学ぼうと思い出してる者です
必須ではない 汎用的に使いまわすなら便利 お前もMathクラスのrandomなんて毎回1から作る気にならんだろ? あれはよく使う処理をクラスとして作ってくれてるから便利 逆に1回しか使わないような物はコードの見通しは良くなるけれども 冗長になるのでそれほどメリットは無い ただしチームで開発するような場合はクラスを使うような記述は コードの書き方が型にはまるのでお互いに理解しやすいという メリットがある。声高に宣伝してるのはこの面が大きい 皆が皆、型にはまったコードだと他人の書いたコードも理解しやすいし、 自分なりに応用するのも楽 が、理解しやすさ優先なので往々にして遅い ひとりでやるなら、好きにしろ
俺もチームでの開発なんてやらんからInterfaceを使うメリットが 良く分からん。
>>684 aka._x = panel._x = Math.cos(rad)*len+cx;
aka._y = panel._y = Math.sin(rad)*len+cy;
//ここまでは一緒
var blueLen=50;//akaからの距離
var blue0x=Math.cos(red+Math.PI/2)*blueLen+aka._x;
var blue0y=Math.sin(red+Math.PI/2)*blueLen+aka._y;
var blue1x=Math.cos(red-Math.PI/2)*blueLen+aka._x;
var blue1y=Math.sin(red-Math.PI/2)*blueLen+aka._y;
//これでそれぞれの変数に入ってる。実際使うときは青い点を作ってからそれのプロパティに代入すればおk
>>689 うっひょー。できました!!!
ありがとうございます。
691 :
642 :2006/08/17(木) 18:09:16 ID:+C7znxuw
//円の中心点・半径 var cx:Number = 275;var cy:Number = 200;var cr:Number = 150; //中心点からの距離と角度 var len:Number = 0;var degree:Number = Math.random()*360; panel._rotation = degree+90; // 赤丸作成 var aka:MovieClip = this.createEmptyMovieClip("aka", 1); aka.lineStyle(8, 0xff0000, 100);aka.moveTo(0, 0);aka.lineTo(1, 0); aka._x = cx;aka._y = cy;var aka2:MovieClip = this.createEmptyMovieClip("aka2", 2); aka2.lineStyle(8, 0x000000, 100);aka2.moveTo(0, 0);aka2.lineTo(1, 0); var rad:Number = Math.PI*degree/180; this.onEnterFrame = function() {len++; aka._x = panel._x=Math.cos(rad)*len+cx;aka._y = panel._y=Math.sin(rad)*len+cy; blue0x = Math.cos(Math.PI/2+rad)*Math.sqrt(Math.pow(cr, 2)-Math.pow(len, 2))+aka._x; blue0y = Math.sin(Math.PI/2+rad)*Math.sqrt(Math.pow(cr, 2)-Math.pow(len, 2))+aka._y; blue1x = Math.cos(-Math.PI/2+rad)*Math.sqrt(Math.pow(cr, 2)-Math.pow(len, 2))+aka._x; blue1y = Math.sin(-Math.PI/2+rad)*Math.sqrt(Math.pow(cr, 2)-Math.pow(len, 2))+aka._y; aka2.clear();aka2.lineStyle(1, 0x000000, 100);aka2.moveTo(blue0x, blue0y);aka2.lineTo(blue1x, blue1y); }; こんな感じ?
692 :
Now_loading...774KB :2006/08/17(木) 19:44:50 ID:IRpBjcuf
>>686 作ったものを使い回しという意味では関数と変わらないけど
さらにクラスを使って縛りを付けておくと
間違った使い方をしたときによりコンパイラがエラーとして
抽出してくれる機会が増えるのでバク発見の可能性が高くなる。
ただクラスは設計を失敗すると超非効率なプログラムができる
ので注意したいね。
693 :
Now_loading...774KB :2006/08/17(木) 21:54:37 ID:AEhVjcZI
FLVをコンポーネントアクションで、 ループ再生するように、指定しました。 以下になります。 // MediaDisplayコンポーネント // コンポーネントアクション on (complete) { this.play(0); } これを、たとえば、flvデータが、3s経過したのちに、とあるムービクリップAが 再生されるような指定はできないのでしょうか? よろしくお願いします。
オレにもクラスについて教えてけれ
>>687 やはり、遅いのか。 アクションゲー作るには向いてない?
>>692 「設計を失敗すると超非効率な…」て具体的にどんな失敗を?
ASに限らず、クラスはコードの保守や生産性を上げるための研究から生み出されたもの そこにあるのは開発者の都合 機械の都合からすれば最も負荷の少ないコードが良く、クラスは物理的に遠回りな処理が多いために優しくない その結果としてユーザへも応答速度が悪いとかの負担を与えてしまう 最近の言語やコンピュータ環境ではクラスを使って書こうが書くまいが大して処理速度は変わらない でもやっぱり超シビアな処理を求めるところではアセンブラで書いたりするわけで Flashはコンピュータの部分はFlash Playerで仮想化されているが同じこと ウォーターフォールでベタなコードは軽く処理も速いがコードの保守性や再利用性に欠ける クラスを利用したコードは保守性や再利用性は高い(クラスの設計に拠るが)が処理速度に影響が出る 特に携帯向けFlashやフレーム毎にシビアな処理を行うようなゲームでは問題になる つまり、クラスを使うかどうかは目的に拠る 業務用アプリならJavaやC#での開発と同じように保守性や他の開発者との協業も考えてクラスを多用するのもあり ゲームなら処理速度を極限まで上げるためにウォーターフォールにするのもあり ネタフラなら再利用も保守もないからウォーターフォール ネタフラでも同じような処理をまた再利用するってんならクラスでもいいだろう ただ、クラスをどのくらい使うとどのくらい負荷が出るかと問われると、一発でスカッとする回答は無い クラスを使ってもウォーターフォールな使い方をすれば軽いし、たった1個のクラスでも複雑に使っていれば重い こればっかりは経験かなと思う 結局は大した回答になっておらず、すまん
>>695 解説乙。 所詮インタプリタ言語だからねえ。 アクションゲームはつらいよね。
アクションゲームでもスコア表示とかステータスとかの表示系はクラス化 しちゃった方が楽だと思う。他のゲームに流用効くし。 あとフラグとか複数MCで同様のAI持たせる場合とか。 極めて個人的な意見だけど・・・
698 :
Now_loading...774KB :2006/08/18(金) 01:48:50 ID:96aqIPep
教えてFLASH8 ActionScriptがやっと全て理解できるレベルなのですが、(いわゆるAS入門者) 次に何を読めばよいでしょうか?今のレベルに合ったオススメの書籍ありません?
>>698 とりあえず何か作ってみれば?
例えば・・・
ボタンを押たびにサイコロの目(1〜6)が表示される。
でた目の回数と出現率が表示される。
とか。
本を読むだけ(サンプル通り作るだけ)より、自分で考えた方が覚えはいいよ。
でも基本は大事。これがわからないと何も出来ない。
ttp://yu-net.info/swfup/viewswf.php/4811.swf ボタンのイベント、setInterval、clearInterval、配列、とか使えば出来る。
回数と率を表示しているテキストは同じmcの使いまわしで効率的に。
>>698 Flashで何をやりたいの?
大御所達のように万能になりたいわけじゃないよね
だとすれば、自分が作りたいものを作ってみよう
とりあえず一冊全て理解できるレベルなら簡単なものは作れるはず
その上で疑問が出たら調べればいい
全てを準備してからなんてのは無理だし時間の無駄
開発なんてのはある程度基礎が固まったらあとは実地で大丈夫
べた書きよりオブジェクト指向で書いた方がパフォーマンスが落ちる言語は多いけど、 Flashの場合もそうなの?その辺の情報ってどこかにないかな。 Flashの仕様によってはclassで書いた方が速い事もあり得ると思うんだけど。 経験からもパフォーマンスにおいては体感できるほどの差は無いと思う。 俺の場合classで書くメリットは保守性の向上と継承だなあ。 スクリプトは全部外部ファイルに出来るのが大きいし、 ネイティブオブジェクトを継承して使ったり、 ゲームの場合も継承によって楽にキャラのバリエーションが増やせる。
経験上グラフィックのパフォーマンスに気を使った方が処理速度が大幅に あがる気がする。
業務で500MHzのWin98機でも動くFlashをと作ったが、いつものノリでクラスを使って作ったらもたついてダメだった ウォーターフォールにしたらマシになったが、コードの可読性と保守性が落ちたのは痛い これらは構造化技法である程度対処できるが、オブジェクト指向に慣れると辛いな 個人的にはクラスで差の付く処理と言うのはここがポイントだと思う ・実行する環境のスペック(携帯電話とPCでは天地の差がある) ・表示系処理の絡まない内部処理の重さ ・クラスの論理的な複雑さ(物理的に大きいことより論理的に複雑な方が重い) 上記のポイントは大多数のFlashには当てはまらないと思う 故にクラスの有無による差を感じている人は少ないと思うがどうだろうか
んー、てかさ、そもそもFlash(ActionScript)って オブジェクト指向言語だから、一定以上のスキルになろうと思ったら 実際に使う、使わないは別にして理解しなきゃいけないんじゃないの? 俺もOOPの作法が、分かってようやく 書いてるコードの意味がちゃんと分かるようになった。 newでインスタンスを作るのと、static functionを呼ぶ違いとか。 それでさ、ウォーターフォールってベタ書きってこと? ウォーターフォールって、最初に詳細な仕様設計をしてから それに沿って、コーディングするっていうワークフローの話じゃないの?
使い方変だよなその人
707 :
Now_loading...774KB :2006/08/18(金) 19:19:56 ID:ycJLhtmR
めちゃくちゃ初心者な質問なんですけど、 テキスト入力エリアを二つ作成し、変数をそれぞれ「w」と「ww」に設定します。 さらに、ボタンを作成し、そこに on(release) { ans = w / ww ; } と記述して、ダイナミックテキストで作ったテキストエリア(変数はans) に計算を反映させるようにしたんですけど、なぜか正常に計算できません; ボタンを押しても計算結果がでる場所には「Nan」としか表示されません; なんででしょうか???どなたか教えてください!
>>707 trace()の使い方をHELPで調べてみたりgoogleで調べてみるところから
始めるのがいいんじゃないかな。Nanも。
709 :
Now_loading...774KB :2006/08/18(金) 19:42:27 ID:ycJLhtmR
>>708 さん
???
trace()って出力パネルに書き出すことができるやつですよね。
Nanの意味が調べてみたんですがよくわかんないんですよ。
わり。読み間違いた。 Number(w) / Number(ww) でどう?
711 :
Now_loading...774KB :2006/08/18(金) 20:09:51 ID:ycJLhtmR
>>710 さん
成功しました!!
ご解答ありがとうございました!!
>>705 C++が普及しだした頃、mainから滝のように処理されるCのコードを、ウォーターフォールモデルをもじってウォーターフォールコードと呼んだ
って昔話は今の若者は知らないか。。。
若者と話が合わなくなるってのには同情するが残念ながらウォーターフォールコードって googleで1件もヒットしなかったよ
昔はそう呼んでいたって話じゃないの?
715 :
Now_loading...774KB :2006/08/18(金) 23:11:51 ID:WEHrdTUz
塗りつぶされた四角形を描くActionを組んでみたんですけど、同じ"myBase.myDrawArea"内に描画する"鉛筆"的なやつのと
相性が悪いみたいで、鉛筆の上に四角をかくと変になるんです。それ以上の説明は難しいのでSWFのURLを書いておきます。
ttp://www005.upp.so-net.ne.jp/annin-factory/EPA-Paint.swf 一応、上が鉛筆のActionで、下が四角を書くActionです。
塗りつぶし系で何か問題でもあるんでしょうか。どこが変なのか教えてください!!!><
myBase.myDrawArea.lineStyle(_global.information_11, _global.information_12, _global.information_13, false, "none", "round", "round");
myBase.myDrawArea.moveTo(_root._xmouse, _root._ymouse);
myBase.myDrawArea.lineTo(_root._xmouse, _root._ymouse);
myBase.onMouseMove = function() {
myBase.myDrawArea.lineTo(_root._xmouse, _root._ymouse);
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
myBase.myDrawArea.beginFill(_global.information_64, _global.information_65);
if (_global.information_61 == 1) {
myBase.myDrawArea.lineStyle(_global.information_62, _global.information_63, _global.information_65, false, "none", "round", "round");
}else{
myBase.myDrawArea.lineStyle(0,0xFFFFFF,0);
}
myBase.myDrawArea.moveTo(v_firstXmouse, v_firstYmouse);
myBase.myDrawArea.lineTo(_root._xmouse, v_firstYmouse);
myBase.myDrawArea.lineTo(_root._xmouse, _root._ymouse);
myBase.myDrawArea.lineTo(v_firstXmouse, _root._ymouse);
myBase.myDrawArea.lineTo(v_firstXmouse, v_firstYmouse);
myBase.myDrawArea.endFill();
updateAfterStage();
v_judge6 = 1;
716 :
715 :2006/08/18(金) 23:13:26 ID:WEHrdTUz
続きです。 _global.information_** は色の情報とかを格納しておく場所です。 他の描画は何の問題も無いんですが、この鉛筆と塗りつぶし四角の相性だけがわるくて・・。 どうか力を貸してください。
717 :
Now_loading...774KB :2006/08/18(金) 23:18:17 ID:L8CAvhOg
ん?どうおかしいの?
718 :
Now_loading...774KB :2006/08/18(金) 23:30:12 ID:L8CAvhOg
ああなんか塗りが鉛筆のとこまで持っていかれるね。 myBase.onMouseMove = function() { myBase.myDrawArea.lineTo(_root._xmouse, _root._ymouse); } これが生きてるせいじゃないかな?
マウスリスナー使って付けはずしした方がいいんじゃないかな。
721 :
715 :2006/08/20(日) 22:31:38 ID:Mkqb5X+I
723 :
Now_loading...774KB :2006/08/21(月) 21:55:31 ID:y/EQCEt3
actionscriptって結構高機能だと思うけど、その割りにいまいち普及しないのはなんでですか?
726 :
Now_loading...774KB :2006/08/21(月) 22:38:08 ID:y/EQCEt3
なんつーか、PHPとかajaxとかはやってるじゃん。 actionscriptでよくね?
名前がダサいからだと思うな
728 :
Now_loading...774KB :2006/08/21(月) 22:41:32 ID:4U/dstm2
Flashの仮想マシンでしか動かないマイナースクリプト言語を どう普及させろと?。
開発環境がない
730 :
Now_loading...774KB :2006/08/21(月) 23:01:44 ID:M1K+2OR5
アリの巣コロリってあるじゃん。 蟻の行列にポンと置くと、一瞬ビックリして列が乱れる。 邪魔だなと言わんばかりに迂回する列が出来る。 そのうち好奇心旺盛な一匹がアリの巣コロリに入る。 そいつをマネして何匹も入る。 毒とも知らずにツブツブを運び出す。一匹が一粒づつ。 いつのまにか行列はアリの巣コロリが折り返し地点になる。 黄色い粒と黒い蟻が作り出す模様は綺麗で見てて楽しい。 一匹が一粒づつ、丁寧にせっせと毒の粒を運ぶ。 せっせと、せっせと、せっせと、せっせと。 蟻さんって働き者だなと思う。俺も頑張らなきゃなと思う。 次の日、あれほど沢山いて俺を困らせた蟻が一匹もいない。 ほんとにいない。探してもいない。泣きたくなった。 このレスを見た人は4日後にあなたの大切な人がいなくなるでしょう・・・・ それが嫌ならこのレスを5つの板にコピペしてください。 信じるか信じないかはあなた次第です。
731 :
Now_loading...774KB :2006/08/21(月) 23:36:58 ID:y/EQCEt3
まぁ、信じねぇけどw
>>723 言語としてのActionScriptの事を言ってる?
AS2までであればActionScriptの元となったECMAScriptの更に元となったJavaScriptやJScriptがとんでもなく普及してる
AS3の実装であればJScript.NETがAS3以上のレベルで実装しているし、.NET Frameworkが使えるから開発環境としても強い
そもそも一体何をして「actionscriptって結構高機能」だと思ったんだ?
オブジェクト指向を実装できる言語としてはありきたりというか低機能だし、IEがサポートしていることで数の上では超絶に普及しているJScriptと比較しても大差ないし
PHPとASを比較するなら、とっくにJavaScriptやJScriptやJScript.NETを実装するサーバ製品があり、今更ASがどうこうって市場は無い
AJAXは「Asynchronous JavaScript XML」の略語であって、JavaScript/JScriptベースで実装されているのに今更ASの出る幕は無い
根本的にASより多機能かつ同じ種族のJavaScript系が市場を席巻しているわけなんですよ
そもそもAdobeが「Flashの開発言語はASです」と言わなきゃJavaScriptの劣化移植としか思ってくれないだろうし
こういうところも見とけ
ActionScript と JavaScript の違い
http://livedocs.macromedia.com/flash/8_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001214.html Flashのためにライトに移植された言語であって、今の時代のWebProgで汎用的に使えるとは思えんがな
うぜえな
734 :
Now_loading...774KB :2006/08/22(火) 09:56:49 ID:MaDQ30Ph
うむ。 余計な説明とか、文章は下手だな。
どうせウォーターフォールの人だろ
をたほる(笑
当たり orz 老害は去る。。。
738 :
Now_loading...774KB :2006/08/22(火) 11:50:40 ID:FbEKDk+O
内積を使った斜面とボールの当たり判定はわかるのですが、 その後のボールが斜面に当たって跳ね返る処理がどうしてもわかりません。 詳しく解説しているサイトを御存知ありませんか?
739 :
Now_loading...774KB :2006/08/22(火) 14:00:03 ID:gzVw5MLm
質問です。同フレームに下記のASを書いているのですが・・・。 ↓1フレーム目に記載 taiko_sound.onLoad = function(success) { if (success) { _root.hyouji = "読み込み成功"; } else { _root.hyouji = "読み込み失敗"; } } bgm = ["bgm1", "bgm2"]; bgm_a = bgm[Math.floor(Math.random()*bgm.length)]; if (bgm_a == "bgm1") { taiko_sound = new Sound(); taiko_sound.loadSound("default_001.mp3", false); } else if (bgm_a == "bgm2") { taiko_sound = new Sound(); taiko_sound.loadSound("default_002.mp3", false); } このASで変数 hyouji に「読み込み成功」または「読み込み失敗」が表示されませんorz 私が実行したいのは「外部ファイルMP3の「default_001(002).mp3」をロードさせ、 読み込みが終わったら〜〜のフレームへいく。」です 変数hyoujiに「読み込み成功」と表示されないので音楽が流れないしコマが進みませんorz どなたかお分かりになられる方よろしくお願いしますorz
以下続き書きますです・・・。 このフレームから2フレーム先(3フレーム目)に if (_root.hyouji == "読み込み成功"){ this.play(); } else { this.gotoAndPlay(2); } と書いています。それで4フレーム目に taiko_sound.start(0,999); としています。 お願いします・・・。
741 :
Now_loading...774KB :2006/08/22(火) 14:10:20 ID:MaDQ30Ph
>>739 その処理順だと、taiko_soundインスタンスを生成してないのに、
taiko_soundインスタンスを使用したイベントハンドラメソッドを定義してるのが問題じゃないかな。
Soundインスタンス.onLoad = function(){} ;
をif文の後に入れてみては?
743 :
Now_loading...774KB :2006/08/22(火) 15:03:35 ID:RRUKa5OD
初心者ですが、座標関係の書き方がわからず困っています。 マウスポインタに追従するものは良く見かけますが、 逆にポインタが近づくと逃げていき、またもとに戻るという 動きをつけたいのですが、教えていただけませんか。 すでに過去ログや参考にできるサイトがあればそちらも教えてもらえればうれしいです。 XPでMXです。
質問です。 gotoAndPlayって再生中だと効かないんですか? (;゚Д゚)ウゴカネー
745 :
744 :2006/08/22(火) 15:25:02 ID:r3utMeJV
動いた。最初のフレームは表示されんのか
>>742 ありがとうございます。かれこれ2時間の死闘のすえ
>>742 さんの指導で
なんとか動かせることができました。
本当にありがとうです^^
>>743 >ポインタが近づくと逃げていき、またもとに戻る
具体的にどうゆう動作を想定してるのか、もっと細かく言ってくれ
「任意の距離より近づいたら、任意の距離はなれる」のか
「常にポインタとの距離を一定に保とうとする」のか
そのMCは常に動いてるのか、それともマウスポインタが接近したときだけ動くのか
748 :
Now_loading...774KB :2006/08/22(火) 17:32:59 ID:MoPnlG09
マウスカーソルの代わりに画像をつかうのはどうすればいいですか?
750 :
Now_loading...774KB :2006/08/22(火) 17:46:34 ID:33SmeEaJ
751 :
Now_loading...774KB :2006/08/22(火) 17:47:11 ID:33SmeEaJ
>>749 onClipEvent (enterFrame) {
R = 100;X = 150;Y = 150;
if(Math.sqrt(Math.pow(Math.abs(_root._xmouse-X), 2)+Math.pow(Math.abs(_root._ymouse-Y), 2))<R){
_x -= 100/(_root._xmouse-_x);
_y -= 100/(_root._ymouse-_y);
} else {this._x += (X-_x)*0.15;this._y += (Y-_y)*0.15;}
}
なんかぎこちないけどこんな感じ?
>>752 x座標とy座標の2乗を計算させてR以下の範囲に
入ってくると・・・
っていうところまではなんとなくついていけるのですが
動かしたい対象のインスタンス名(フレームラベル?)などは
どのように指定すればいいのでしょうか?
座標うんぬん以前の基礎でもうしわけありません
>>752 すいません、動きました、が、
逃げるときも、元の座標に戻るときのように
速度に変化をつけたいのですが
難しいでしょうか
755 :
Now_loading...774KB :2006/08/22(火) 20:14:28 ID:MoPnlG09
ボタンがおされたら特定のレイヤーを非表示にすることはできますか?
>>755 特定のレイヤー>×
特定のMCやテキストフィールドなど>○
757 :
Now_loading...774KB :2006/08/22(火) 20:57:02 ID:MoPnlG09
756そうですまちがえました
>>748 画像をmcにしてその座標をマウスの座標に設定してやればいい。
startDragとかonEnterFrameで_xと_yを設定してやる。
760 :
Now_loading...774KB :2006/08/22(火) 22:41:11 ID:MoPnlG09
ボタンをマウスにぴったり追従させたいのですがどうすればいいでしょうか?
761 :
Now_loading...774KB :2006/08/22(火) 22:46:27 ID:PHihfAAo
>>738 ボールから線の交点までのベクトルを求める
交点とベクトルを加算する(座標A)
座標Aから線の法線方向で、線と交点を取る(座標B)
座標Aから座標Bまでのベクトルを求める
座標Bとベクトルを加算する(座標C)
最初の交点から座標Cまでのベクトルが反射ベクトル。
>>760 つまりマウスといっしょに動くってこと?相対速度0?
なら、
this.onMouseMove = function () {
icon_mc._x = _xmouse;
icon_mc._y = _ymouse;
}
でよくね?
>>760 onClipEvent (mouseMove) {
this._x+=this._xmouse;
this._y+=this._ymouse;
updateAfterEvent();
}
ぶっとばね?
+=
766 :
Now_loading...774KB :2006/08/22(火) 23:52:10 ID:MoPnlG09
ひとつめは構文エラーがでて、ふたつめは動作しませんでした。何度もすいません。マウスにボタンがくっついてくればいいんですが
>>766 this.onMouseMove = function() {
this.button1._x += this.button1._xmouse;
this.button1._y += this.button1._ymouse;
updateAfterEvent();
};
769 :
Now_loading...774KB :2006/08/23(水) 00:18:47 ID:JqY/H/xf
しつこくてすいませんができません。フレームのボタンのアクションの中にそのまま記述するだけではだめなんでしょうか?
770 :
Now_loading...774KB :2006/08/23(水) 00:42:40 ID:wEOWJd3B
>>769 ムービークリップにしか書けない件について
onClipEvent (mouseMove) {
_x = _parent._xmouse;
_y = _parent._ymouse;
updateAfterEvent();
}
>>752 >>759 ありがとうございます、
とりあえずやってみます。
うまく組み合わせられればイメージどおりのものができそうです。
772 :
738 :2006/08/23(水) 01:28:48 ID:AA1nCIxX
>>761 すみません、申し訳無いのですがさっぱり解りません。
何か図で解説しているサイトを御存知ありませんか?
>>772 内積を使ったあたり判定がわかるなら解ると思けどな。
せっかくしっかりレスしてもらってるんだから、
解らない単語とかを自分でググるなり参考書読むなりすれば?
できないなら、さっぱり、あきらめましょう。
774 :
Now_loading...774KB :2006/08/23(水) 07:57:30 ID:wEOWJd3B
>>772 第01引数ベクトル
第02引数地面の法線
function ReflectVector(s,n){
var t = -(n.x * s.x + n.y * s.y)/(n.x * n.x + n.y * n.y);
return {
x : s.x + t * n.x * 2.0,
y : s.y + t * n.y * 2.0
};
}
CGIでDBから数十件のデータを取得 それをASに渡してリストボックスで表示させているのですが この渡された数十件のデータを20単位で分割して 次に進むボタンなどを押したら次の100件が表示される、 というようなスクリプトを書きたいのですが どのようなスクリプトを書けばいいのでしょうか? プログラミングスレが良いと思ったけど コンポーネントを使っているのでこっちにしました。 ASには「gyou=800&data1=aaa&data2=bbb&data3=ccc」 このような形で値を渡しています。(「gyou」はDBから引き出された行数) ASの方のソースは現在 .onLoad=function{ for( var i = 0 ; i < parseInt(this.gyou) ; i++){ var data:String="data" var cnt:String = String(i) var DBdata:String = data + cnt _parent.listbox.addItem(this[DBdata]) } } .sendAndLoad() 上のような形になっています。 宜しくお願いします。
776 :
Now_loading...774KB :2006/08/23(水) 10:50:11 ID:W8WakYV3
http://www.example.comにあるSWFから https://test.example.comにあるFLVファイルをロードしたいのですが 、
System.security.allowDomain("www.example.com", "test.example.com");
my_lc.allowDomain = function(sendingDomain) {
return (sendingDomain == "www.example.com" || sendingDomain == "test.example.com");
};
System.security.allowInsecureDomain("www.example.com", "test.example.com");
my_lc.allowInsecureDomain = function(sendingDomain) {
return (sendingDomain == "www.example.com" || sendingDomain == "test.example.com");
};
これをSWFに書いてもしょうがないのでしょうか。
読み込めるようにする方法を教えてください。
>>775 ページ管理用の変数を用意すればいいんじゃない?
こんな感じで
.changePage =function(p){
var _start=(p-1)*20
var _end = start+20
_parent.listbox.removeAll()
for(var i=_start;i<_end;i++){
_parent.listbox.addItem(this["data"+i])
}
}
.onLoad=function{
this.pageIndex = 1
this.changePage(pageIndex)
}
で、ボタンは変数pageIndex更新してchangePage呼ぶ
それと、CGI側いじれるなら、800件のデータだったらCSV形式で
渡してしまった方が扱いが楽かなあ。
779 :
Now_loading...774KB :2006/08/23(水) 18:51:14 ID:W8WakYV3
>>778 ありがとうございます。
無事読み込むことができました。
ローカル変数がいまいち分かりません。 参照できる範囲が分かりません。
関数の中で使ったのは関数の中でしかつかえん。 ってとりあえず思っとけば? function func(){ var i; i=i+i; //使える } a = i+i; //使えない
なんか、どの本よりもいいヒント教えてもらった気がする。 ありがとうございました、馬鹿ですみません。
どういう本を読んだんだろう・・。
えと、テキトーすぎで、しかも間違ってるよな?
>>781
>>781 正確に言うなら
関数の中でローカル変数として定義したものはその関数のスコープの中でしか存在しない
例えるなら「俺の脳内美少女は他の奴には見れないw」
ヘルプの例
var str1:String = "Timeline";
function scopeTest():Void {
var str1:String = "Local";
trace(str1); // ローカル
}
scopeTest();
trace(str1); // タイムライン
786 :
Now_loading...774KB :2006/08/23(水) 23:07:28 ID:wEOWJd3B
他の言語と違って かっこを書いただけではスコープにならないのが ちとややこしい。 var a = 10; { var a = 20; trace(a); } trace(a);
ECMAscriptベースだからね
重複してねーだろ よく嫁
重複してると思うが、、、varで再定義出来るのがコンパイルエラーにならんのが いかんと言ってるのでは?
791 :
Now_loading...774KB :2006/08/24(木) 07:42:41 ID:GkCS4w7l
マウスカーソルに追従するボタンのことで質問なんですが、フラッシュの範囲内にはいったら自動的によってくるボタンはどうやったらいいのでしょうか?
>>791 座標プロパティをマウス座標に漸近させる
swfの範囲外にマウスポインタが飛び出た際、それを検出する方法はonハンドラ以外にないでしょうか? 現在、onRollOverイベントを持つA領域にマウスポインタが乗るとA領域が広がり、 そのA領域上にメニューボタンが出てくるFlashを作っています。(ボタンの中のボタン) この場合、広がった段階で、一度A領域をenable = falseにしてイベント無効化します。 無効化しないでおくと、出てきたメニューボタンのどれかにマウスポインタが乗った際に A領域のonRollOuイベントが発動してしまうためです。 (このためA領域onRollOutをA領域を閉じる条件として使えない) また、残しておくと本来クリックイベントを持たない領域でも、指マウスポインタになってしまい クリックできるように見えてしまい、デザイン的にも問題があるため無効化せざるを得ません。 そこで、A領域からマウスポインタがはみ出た、というA領域を閉じるための条件をA領域とマウスポインタ位置との hitTestで実現してみたのですが、html上に貼ったswfのサイズからマウスポインタが飛び出たことをhitTestは 検知できないみたいで、もんどりうってます。 マウスポインタがswf領域外に出たということを検知する方法はないのでしょうか? (Flash上じゃ飛び出たことになってないから問題なのですが・・・) バージョンはMX 2004(Flash7)です。
794 :
793 :2006/08/24(木) 15:17:22 ID:3z9I7D9P
どうやらAS3.0じゃDisplay.StageクラスにmouseLeaveイベントってのが用意されてるようですね・・・ これの代替処理をAS2.0でできないかなぁ。 すなおにA領域とswfサイズの幅を同じにしないで、空白スペース作ってそこに外れたかのhitTestしかないか。。
795 :
Now_loading...774KB :2006/08/24(木) 17:42:26 ID:GkCS4w7l
クリックすると別のムービークリップAの透明度を100にするボタンのASを教えてください
A._alpha = 100; を書けばいいんじゃないか??
797 :
Now_loading...774KB :2006/08/24(木) 18:57:03 ID:GkCS4w7l
ある特定の領域からドラッグを開始して特定の領域ではなした時にアクションをおこさせるにはどのASでしょうか?
ID:GkCS4w7l もうちょっと勉強する気ないのか? いつまでも初心者から抜けだせないお
799 :
Now_loading...774KB :2006/08/24(木) 19:31:34 ID:K73Steh6
this.createEmptyMovieClip("pictMC", this.getNextHighestDepth(), {_x:0, _y:0}); var pictlListener:Object = new Object(); pictlListener.onLoadComplete = function(target_mc:MovieClip) { trace(target_mc._height); }; var image_mcl:MovieClipLoader = new MovieClipLoader(); image_mcl.addListener(pictlListener); image_mcl.loadClip("./img/01.jpg", this.pictMC); としたのですが、読み込んだ画像の高さを取得できませんでした。 どうすれば読み込んだ画像の高さを得られるか教えてください。
>>799 onLoadCompleteの時点ではJPEGのwidth/heightは取得出来ません。
onLoadInitの時点では取得出来ます。
801 :
Now_loading...774KB :2006/08/24(木) 19:52:50 ID:K73Steh6
>>800 ありがとうございます!
completeはあくまで読み込み終了であって、
画像自体については初期化されないと何もできないってことですね。
勉強になりました。
802 :
Now_loading...774KB :2006/08/24(木) 20:36:49 ID:GkCS4w7l
798携帯からしかインターネットがみれないんです(・_・|いちおう解説書もかったのですがわからない
803 :
Now_loading...774KB :2006/08/24(木) 20:45:43 ID:YkzNW1zA
swich case文でつまりました。 switch (aaa) { case "1": 処理A break; case "2", "3": 処理A break; とすると"2"の時に処理してくれません・・・。 caseに複数の条件は指定できないのでしょうか? FLASH MX
804 :
803 :2006/08/24(木) 20:49:42 ID:YkzNW1zA
補足です 環境はFlash MXです
>>803 じゃあヒントだけ教える
aaa = "2"
switch (aaa) {
case "1" :
trace("1");
break;
case "2"||"3" :
trace("2か3");
break;
default :
trace("失敗");
}
裏技だ、あまり薦められない。おとなしくcaseを2つ作っとけ
ヘルプでswitch文嫁
>>979 startDrag()、stopDrag()、と xy座標
>>803 case "2":
case "3":
処理B
break;
808 :
803 :2006/08/24(木) 21:18:00 ID:YkzNW1zA
ありがとうございました caseを連ちゃんで書けばよいのですね
>>803 switch (aaa) {
case "1" :
trace("1");
break;
case (aaa == "2" ? "2" : aaa == "3" ? "3" : aaa == "4" ? "4" :"5") :
/*↓が楽w
case "2":
case "3":
case "4":
case "5":
*/
trace("2か3か4か5");
break;
default :
trace("わかりにくいけど805は失敗だから");
}
810 :
Now_loading...774KB :2006/08/24(木) 22:48:00 ID:jP22EKmE
すいません フラッシュでクイズゲームを作ろうとおもっているんですが何か参考になる文献、サイト等ありませんか? 僕は普段、go toとかstopしか使ってなくてゲームを作るのは初です
>>810 それだけでも十分ゲーム作れるのがFlash
813 :
810 :2006/08/25(金) 02:07:22 ID:mzC26p9N
点数とかもう少し難しいことをしたくて 4択のクイズゲームを作るつもりなんですが
ASの基礎を知ったほうが早いかも
>>813 4択ゲームは画面に
・問題を表示するテキストフィールド ×1
・解答表示するボタン(ボタンを押して解答を選ぶ場合) ×4
が必要。
問題文、解答を配列に読み込みシャッフル。
正しい解答を選んだら正解数を加算。
という大まかに流れを考えてつくっていく。聞くときも要点を絞って聞く。
ASを触ったことがなければ、まず基礎を勉強する(ヘルプ見る)といい。
そしてゲームを作るのに参考になるサイトといったらココが有名。
ttp://hakuhin.hp.infoseek.co.jp/main/as.html
816 :
Now_loading...774KB :2006/08/25(金) 13:41:41 ID:tTAWEjfH
配列のソートなんですが、 arr[0] = newArray("apple",100); arr[1] = newArray("orange",84); arr[2] = newArray("cherries",95); という配列のときに、apple、orange、cherriesの部分でソートしたいのですが、 arr.sortでは、0、1、2でソートされるでしょうし、 arr[0].sortでは、"apple",100でソートされてしまいどうにもわかりません。 結果として、 arr[0][0],arr[2][0],arr[1][0]の順で並びかえたいです。 どのようにすればいいのでしょうか、
>>816 自分でソートのアルゴリズム作ってみるといいよ
バブルソートでググれ
>>816 そういうソートだとソートのアルゴリズムを自分で用意するしかないかな。
arr = [["apple", 100],["orange", 84],["cherries", 95]]
function compare1stFieldByString(a,b){
return (a[0]<b[0]) ? -1 : (a[0]==b[0]) ? 0 : 1
}
arr.sort(compare1stFieldByString)
trace(arr)
とか。詳しくはsortメソッドのヘルプに載ってるよ。
arr.sort(1) ; じゃダメなのか?
821 :
818 :2006/08/25(金) 14:11:01 ID:mxvZyVlv
>>820 お、いけるいける。っていうか、そのまま配列を持つ配列sortすると
最初の要素で比較するみたい。引数に「1」指定すると大文字小文字
ノーチェックモードになるから、単に、
arr = [["apple", 100],["orange", 84],["cherries", 95]]
arr.sort()
trace(arr)
これでけでも行けたよ。
822 :
Now_loading...774KB :2006/08/25(金) 17:11:06 ID:Afsk97K2
onClipEvent (enterFrame) { if (overFlag == true) { this._rotation += 15; } } onClipEvent (load) { overFlag = false; } on (rollOver) { overFlag = true; trace("ロールオーバー"); } on (rollOver) { overFlag = false; trace("ロールアウト"); } あるMCをマウスがロールオーバーしたら回転するようにしたんでが、動きません。 出力パネルを見ながらMCにマウスを乗せたら、「ロールオーバー」と「ロールアウト」 が同時に出力されました。これってフラグが上がったと同時にフラグが下がったという ことですか?それじゃ動きませんよね。どうすればよいですか?? 教えてください。
Array.push()を使って,構造体を配列に入れたいんですが, tmp = {a:"hoge",b:"hage",c:"huge"}; a_array.push(tmp); ってやると, a_array[0].a is hoge a_array[0].b is null a_array[0].c is null a_array[1].a is hoge a_array[1].b is hage a_array[1].c is null a_array[2].a is hoge a_array[2].b is hage a_array[2].c is huge なんて入り方をして困っています. 何かいい手は無いでしょうか.
>>823 です.
単なるプログラムミスでした.
ごめんなさい.
>>822 そのtrace()のまんまやん。
on (rollOver)でtrace("ロールアウト")してる。
826 :
Now_loading...774KB :2006/08/25(金) 18:04:51 ID:Afsk97K2
>>825 あああああぁぁ あ ぁぁ ぁぁあ あ あ ・・・!!!
間違えたぁぁぁぁ!!
なんて初心的なミスを・・・。
わざわざ自分のくだらないミスを指摘してくださり
本当にありがとうございました!!
おかげでちゃんと動きました!!
質問ですー。 setIntervalで定期的に呼び出す関数にsetIntervalのIDを引き渡して関数の中でclearIntervalしたいのですがなにか良い方法あるでしょうか? 例えば、こんな感じです↓(もちろんこのfuncではIDは取れてません) ID = setInterval("func",interval,ID); ・・・ function fucn(id){ clearInterval(id); } グローバルな変数を用意しても良いのですが、いくつか同時にsetIntervalすることを考えるとあまりしたくないです。 教えてください。OSはXPでFLASH8です。
clearInterval(ID)でいいんでね?
>>827 こんな感じでどう?
────────────────────────
function func(id){
clearInterval(id);
}
function newInterval(){
var obj = this;
var id;
var ifunc = function () {
obj.func(id);
};
id = setInterval(ifunc, 1000);
}
newInterval();
────────────────────────
function func(obj) {
clearInterval(obj.id);
}
var obj = new Object();
obj.id = setInterval(func, 1000, obj);
────────────────────────
830 :
810 :2006/08/25(金) 20:31:10 ID:mzC26p9N
831 :
Now_loading...774KB :2006/08/26(土) 00:50:51 ID:h//vmrjO
FLASHの枠内にはいると自分からマウスカーソルに猛烈な勢いで近づいていくボタンのASお願いします
_root.onEnterFrame = function () { var v; setInterval(mouretu,100); } function mouretu() { if(sample_btn._x < _xmouse-10) { sample_btn._x += 1; } else if(sample_btn._x > _xmouse-10) { sample_btn._x -= 1; } if(sample_btn._y < _ymouse-10) { sample_btn._y += 1; } else if(sample_btn._y > _ymouse-10) { sample_btn._y -= 1; } } しらんwwwwwwww
3行でコーヒー吹いた
834 :
Now_loading...774KB :2006/08/26(土) 01:55:24 ID:h//vmrjO
ありがとうございます!MOURETUはインスタンス名でしょうか?
あ、ふざけてただけだお。。。 たぶんちゃんと動かないおー
btnSize = 20; btnColor = 0x0000FF; btnLineWidth = 3; btnLineColor = 0x000066; speed = 0.5; function btnOver(){this._alpha = 50;} function btnOut(){this._alpha = 100;} function btnRelease(){this._alpha = 100;trace("btnRelease");} function drawCircle(mc:MovieClip, x:Number, y:Number, r:Number):Void { mc.beginFill(btnColor); mc.moveTo(x + r, y); mc.curveTo(r + x, Math.tan(Math.PI / 8) * r + y, Math.sin(Math.PI / 4) * r + x, Math.sin(Math.PI / 4) * r + y); mc.curveTo(Math.tan(Math.PI / 8) * r + x, r + y, x, r + y); mc.curveTo(-Math.tan(Math.PI / 8) * r + x, r + y, -Math.sin(Math.PI / 4) * r + x, Math.sin(Math.PI / 4) * r + y); mc.curveTo(-r + x, Math.tan(Math.PI / 8) * r + y, -r + x, y); mc.curveTo(-r + x, -Math.tan(Math.PI / 8) * r + y, -Math.sin(Math.PI / 4) * r + x, -Math.sin(Math.PI / 4) * r + y); mc.curveTo(-Math.tan(Math.PI / 8) * r + x, -r + y, x, -r + y); mc.curveTo(Math.tan(Math.PI / 8) * r + x, -r + y, Math.sin(Math.PI / 4) * r + x, -Math.sin(Math.PI / 4) * r + y); mc.curveTo(r + x, -Math.tan(Math.PI / 8) * r + y, r + x, y); mc.endFill(); } function mouretsuMove() { btn._x += (_root._xmouse - btn._x) * speed; btn._y += (_root._ymouse - btn._y) * speed; } this.createEmptyMovieClip("btn", this.getNextHighestDepth()); btn.lineStyle(btnLineWidth, btnLineColor); drawCircle(btn, 0, 0, btnSize); this.onEnterFrame = mouretsuMove; btn.onRollOver = btnOver; btn.onRollOut = btnOut; btn.onRelease = btnRelease;
ボタンのシンボルをライブラリに登録しておいて、それを attachMovie で動的に作成しています その作成したボタンに字を書こうと、createTextField で文字を追加しようとしているのですが、上手く行きません 下記のコードを実行しても、ボタンには何も表示されません new_mc.createTextField("caption_txt", new_mc.getNextHighestDepth(), 2, 2, 100, 50); new_mc.Name_txt.autoSize = true; new_mc.Name_txt.text = "ボタンのキャプション"; コードの「new_mc」を「_root」にすると、ステージ上にテキストが追加されるため、もしかしてボタンには使えないコードなのかとも思っています ちなみにボタンには「アップ」と「オーバー」にキーフレームが設定されてます 今回初めてボタンのシンボルから attachMovie しているのですが、もしかしてボタン相手に createTextField するときの作法みたいなのがあるのでしょうか? 分かる方教えてください
ボタンシンボルの存在を忘れてしまえばいい。 この世にはムービークリップしかないと思えばいいんだよ。
>>838 レスありがとうございます。
助言に従い、ボタンシンボルをムービークリップシンボルにし、RollOverとRollOutを使ってボタンっぽく見せかけることで対処しました。
ありがとうございました。
ボタンでスクリプトは動作しないよ。 動的に動作を変えたいならムービークリップにするしかない。 フレームラベルに_upとか_overとか入れれば似たような作り方ですむし。
質問。flashMX2004で作っています。 SharedObject に、自作クラスのインスタンスを保存したいんですが、 どうもできないみたいです。 SharedObject には基本型しか保存できないのでしょうか? それとも何かやり方があるのでしょうか?
>>841 何種類かの基本型(プリミティブというわけでもない)しかできない。
ユーザー定義クラスも出来ないから、バラすか配列を使ったりする。
どの型が保存可能かの詳細はヘルプで確認。
843 :
Now_loading...774KB :2006/08/27(日) 05:14:47 ID:QwmXnK4s
ナウローディングみたいなバーで変数Xが500の時バーが最大、0の時バーは最小ということをバーに記述したいです。わかる方おられましたらお願いします
> 842 できないんですか。 オブジェクトの共有に使うって言っても微妙に不便なんですね…。 解答ありがとうございました。
TextField.setTextFormat() は、TextFieldの内容を変更する毎に実行しないといけないのでしょうか? a_txt:TextField と x_fmt:TextFormat があるとして x_fmt.font = "a_font"; a_txt.text = "aiueo"; a_txt.embedFonts = true; a_txt.setTextFormat(x_fmt); を実行すると、 "a_font" で描写されますが、 この後、 a_txt.text = "kakikukeko"; を実行すると、なぜか描写されません。 ということは、 a_txt.textに対して、setTextFormatする のであって、 a_txtの(これから先も)すべてに適用されるものではないのですよね? こんな解釈で間違っていませんか?
>>846 そういうときは setNewTextFormat() を使いましょう。
おっしゃる通り、setTextFormat は現在あるテキストに対して設定します。
>>843 「あしぷろ」でいんじゃねーの。ぐぐればすぐ出るとおも。
すいません教えてください。 100フレームまでのループするムービーの中に、 30、60、90フレームでそれぞれ20秒間停止するようにしたいのですが どのように記述すれば良いんですか? 調べてみても、一定時間停止するには一時停止ボタンとか書いてあったり するんですがボタンを配置していないので、 流れるムービーが一時停止するようにしたいのです。 だれかおねがいします。
>>850 this.stop() ;
kameda = setInterval(waitplay , 20000) ;
function saisei(){
_root.play() ;
clearInterval(kameda) ;
}
852 :
851 :2006/08/27(日) 21:06:08 ID:E4EoTAOA
ごめん関数名間違えた。
>>851 は無かったことに。
this.stop() ;
kameda = setInterval(waitplay , 20000) ;
function waitplay(){
_root.play() ;
clearInterval(kameda) ;
}
853 :
Now_loading...774KB :2006/08/28(月) 00:24:00 ID:r+ZThOpL
すごく基本的な事のはずがなぜか出来ない・・・。 誰か助けてください!! this.createEmptyMovieClip(clipA_mc, 0); clipA_mc.loadMovie("clipB.swf"); clipA_mc.clipB_mc.onPress = function(){ trace(clipA_mc.clipB_mc._x); } clipB.swfの中にはclipB_mcがある状態なのに、なぜか反応しない・・・。 clipA_mc.clipB_mc.onPressをonMouseDownにしてみたところ、 traceが実行されてプロパティーを取得できてる・・・。 な、なぜ? 俺すごい勘違いしてるのかな・・・? 助けてまじでお願い!!
>>853 関係ないかもだけど、clipA_mcという空のMCを作りたいなら、
this.createEmptyMovieClip("clipA_mc", this.getNextHighestDepth());
じゃないの?
855 :
853 :2006/08/28(月) 00:43:25 ID:r+ZThOpL
>>854 早速レスありがとう!
深度を常に前にしたいならそっちの方だよね。
念のため試したけど駄目だったw
FP7用に作ったswfを未だに6インスコしてる変な人達の為にFP6用にコンバートしてFLASH6plugin 入れなおしてブラウザで検証したところ問題が発生いたしました。 別ドメインのPHPとの連携でFP7からはcrossdomain.xmlが使えるのですが、FP6pluginだと 別ドメインにアクセスできないようです。バージョン6で書き出してもFP7以上がインスコされていれば 問題ないのですがFP6だとアウチです。別ドメインにアクセスするにはどうしたらよいでしょうか?
>>855 言いたかったのは深度のことじゃなくて、第一引数は文字列だよって事。
clipA_mcじゃなくて"clipA_mc"何じゃないのっていう。
で、反応がないってのはonPress()内を通ってないって事?
trace(clipA_mc.ClipB_mc)でundefinedにならない?
858 :
853 :2006/08/28(月) 02:08:16 ID:r+ZThOpL
>>857 第一引数の方か!
○this.createEmptyMovieClip("clipA_mc", this.getNextHighestDepth());
×this.createEmptyMovieClip(clipA_mc, this.getNextHighestDepth());
って事ね。ごめんごめん。
onPress()が通らないっていうのか分かんないんだけど、
this.clipA_mc.clipB_mc.onPress = function(){
trace(clipA_mc.clipB_mc);
//反応なし
}
_rootにclipC_mcを試しに作って
this.clipC_mc.onPress = function(){
trace(clipA_mc.clipB_mc);
//_level0.clipA_mc.clipB_mc と出力
}
って感じなんだよね。何がおかしいんだろう・・・。
>>858 clipA_mc.loadMovie("clipB.swf");
trace(clipA_mc.ClipB_mc);
だったらどう出る?undefinedじゃない?
そうなら全部読み込まれる前に定義しちゃってるのが原因。
ためしに1フレームで読み込んで10フレームくらいでonPressのトコ書いたら動くと思う。
完全に読み込まれたかどうかを知るには・・・確か、
MovieClipLoaderって感じの名前のクラスがあったはず。
860 :
853 :2006/08/28(月) 02:34:46 ID:r+ZThOpL
>>859 undefinedが出た・・・。
試しに10フレームでやったらちゃんと動いたよ!
今Moock本見てみたら、
loadMovie()関数はステートメントブロックに現れた時に実行するわけではありません。
実際は、そのブロックの他の全てのステートメントが実行されてから実行されます。
って書いてあるんだけど、関係あるのかな・・・。
リファレンス見てみたら、
このクラスを使用すると、SWF、JPEG、GIF、および PNG の各ファイルのムービークリップへのロード時に
ステータス情報を提供するリスナーコールバックを実装できます。
MovieClipLoader の機能を使用するには、loadMovie() や MovieClip.loadMovie() ではなく、
MovieClipLoader.loadClip() を使用して SWF ファイルをロードします。
ってあるからこっちを使った方が便利そうだね。
遅い時間にありがとう!感謝します!
861 :
853 :2006/08/28(月) 02:36:24 ID:r+ZThOpL
↑ MovieClipLoaderクラスのリファレンスの事wごめん
ある点を基点にしてカーソル位置までmovieclipを拡大縮小・回転させて伸ばしたい (カーソル位置まで伸びる矢印のようなものとお考えください) が、式がまったくわかりません。お助けください。数学やっとけばよかった
863 :
Now_loading...774KB :2006/08/28(月) 05:10:39 ID:xu9NSEhK
外部からテキストをテキストフィールドに読み込ませたいのだけど、 テキストフィールドに角度を与えると、文字が再生されないんのだけど。 これは、仕様? 斜めに文字を読み込ませたいのだが、、。
>>862 式がまったくわかりませんではどうしようもないです。
MCを拡大縮小、回転するASぐらいは理解していないとね。
>>863 動的テキストの場合文字のベクタ情報を持ってない(不定)ので、
変形や_alphaなどエフェクトをかけた場合は表示されない。
フォント埋め込みで情報を埋め込んでおけば回避可能だが、
全ての日本語フォントを埋め込むとファイルサイズが大幅に増える。
865 :
Now_loading...774KB :2006/08/28(月) 11:00:58 ID:pUYjaBux
お絵かきツールにアンドゥ機能を付けたいのですが どのようにしたらよいかわかりません。 lineToなどの描画メソッドで描いたものを 一つづつ消すにはどのようにしたらよいでしょうか? 一つづつMC化しないといけない?
>>865 アンドゥということは、ワンストロークごとの手続きでいいんだから
ワンストロークごとにMC化すれば可能ですね
配列を使うという手もありますけど
その場合、アンドゥと同時に書き直しが必要なので重くなるかもです
そもそも、内部的には描画メソッドは、毎フレーム書き直ししてるので
ちょっと線の量が増えると、直ぐ重くなりまして、お絵描きツールには向かないですよ
867 :
Now_loading...774KB :2006/08/28(月) 11:54:49 ID:uoYK28X9
■10年間毎日くさやを焼く、男性(47)に周辺住民困惑(08/28 10:24)
埼玉県草加市に住む男性(47)が、10年間毎日くさやを七輪で焼き
異臭?トラブルを起こしていることが分かった。周辺住民の話によると、
10年前に、大阪から引っ越してきた男性は当時から七輪で好物の
くさやを焼いて食べるのが日課だったというが、あまりの臭いに近所の
人、数人が苦情を言い渡した、ということがが発端となった。それ以来毎日、
くさやを焼き続け10年が経ってしまったという。男性は「自分はくさやを
焼いて食べるのが好きなんや、人が何を食べようと勝手やろ。」と意に介しない。
住民はこのトラブルで干物を食べることができなくなってしまったという。
http://news18.2ch.net/test/read.cgi/news7/1156419324/l50
868 :
827 :2006/08/28(月) 11:59:42 ID:OgLqqYLj
そこで8ならビットマップキャッシュの出番ですよ。
>>828-829 回答ありがとう
亀レスになりましたが
ID = setInterval(this,"func",interval,"ID");
・・・
function func(StringId){
・・・
clearInterval(this[StringId]);
}
ヘルプを見たところ、IDは呼んだ先の関数のメンバになってくれるそうなので
こんな風にIDを文字列で送って、参照すればできました。
869 :
866 :2006/08/28(月) 12:07:26 ID:pUYjaBux
回答ありがとうございます MC化で実装してみます 環境がMXなのでとりあえず描画メソッドで・・・。
>>869 アンドゥは構造体のリストで管理すると楽だよ。
ちょっと汚いけどこんな感じ。長いと書き込めないの変な処理でスマン。
リストで管理する雰囲気だけ掴んでちょーだい。
backspaceキーでアンドゥね
var isDrawing = false;var lmp;var rootmp;
//構造体mp
//x:x座標 y:y座標 n:次の座標 p:前の座標 d:描画モード
function mp(__x,__y,_p,_d){this.x = __x;this.y = __y;this.p=_p;this.d=_d}
onMouseDown = function() {isDrawing = true;recordMP(_xmouse,_ymouse,false)};
onMouseUp = function() {isDrawing = false;};
onMouseMove = function() {if (isDrawing)recordMP(_xmouse,_ymouse,true);};
function recordMP(__x,__y,_d){
if(!rootmp)
{lmp = new mp(__x,__y,null,false);rootmp = lmp;}
else
{var tmp=new mp(__x,__y,lmp,_d);lmp.n = tmp;lmp=tmp;}
}
onEnterFrame=function(){
if(Key.isDown(Key.BACKSPACE)){lmp=lmp.p;lmp.n = null;}
var tmp = rootmp.n;
clear();lineStyle(5, 0x000000, 100);moveTo(rootmp.x,rootmp.y)
while(tmp.n){
(tmp.d) ? lineTo(tmp.x,tmp.y) : moveTo(tmp.x,tmp.y);
tmp = tmp.n;
}
}
重い絵を描きたい場合には、描画確定MCと、アンドゥ可能MCに分けて、
最後の5手順ぶんだけはアンドゥ可能MCに書いておいて、それ以外は
描画確定MCに書いておけばおけ
誘導されてきました。 初歩的な質問なんですが ActionScriptはマルチスレッド処理で、 逆に、一般的な上から順に実行していく処理はなんというのですか? それともうひとつ質問を、 同じ量の処理をするとして、その時の実行速度についてなのですが 1.コンパイラ型>インタプリタ型(ActionScript>Ajax(javaScript)) 2.マルチタスク処理>上から順に処理(ActionScript>PHP java ...etc) この認識は合ってますか?
872 :
866 :2006/08/28(月) 15:13:38 ID:pUYjaBux
>>870 わ、これはすごいですね!
勉強になりましたm()m
ここまでメチャクチャな人は始めてみた
875 :
715 :2006/08/28(月) 22:40:55 ID:7OPRXEX1
質問なんですが、ActionScriptでJPEGファイルなどを作成することはできますか? ラクガキしたやつを保存してみたいのです。 ちなみに、715のとこの問題は未解決orz
>>875 サーバサイドスクリプトとImageMagickとで連携
質問させてください。 4 同じフォルダに abcd.txt というテキストファイルを保存しておき、そのテキストファイルの中は hensu=12345 としておきます。 そして、1フレーム目にボタンを配置し、そのボタンに on(press){ System.useCodepage=true; _root.loadVariables("abcd.txt"); trace(hensu); } というコードを書きました。 これで出力ウィンドウには 12345 と表示されると思ったのですが undefined と表示されてしまいます。 また、hensuという変数名のテキストフィールドを作り、違うフレームに移動すると そのテキストフィールドには12345と表示されます。 うまく説明ができませんが、loadVariables直後では上手くテキストファイルのデータを 取得することができないのかな?と考えています・・・。 もう2日ほど悩んでいます。 分かる方いらっしゃいますか? (長文スミマセン)
878です。 ↑の2行目 「4」はミスですので、気になさらないで下さい。
>>878 いつの時代の話だ?LoadVars使え。
>>878 > また、hensuという変数名のテキストフィールドを作り、違うフレームに移動すると
> そのテキストフィールドには12345と表示されます。
> うまく説明ができませんが、loadVariables直後では上手くテキストファイルのデータを
> 取得することができないのかな?と考えています・・・。
答え出てんじゃん。
WindowsXP,Flash8(AS2.0)です。 ボタンに以下のコードを書きました。 on (release) { var h:Number = Math.floor(Math.random()*100+1); if (h >5){ gotoAndPlay("miss"); } var i:String = "waza"+_root.waza_effect[jibun_waza1]; gotoAndPlay(i); } しかし、クリックしても、必ず以下のif文がスルーされて実行されてしまいます。 本来なら19/20の確率でmissラベルに飛ぶはずなんですが……orz わかる人いましたらお願いします。
>>882 t r a c e し ろ
マジレスすると
gotoAndPlayはそのフレームのスクリプト全部読んでから実行される
ということは
>gotoAndPlay(i);
を必ず通る
よって必ずiに行く
884 :
866 :2006/08/29(火) 20:16:41 ID:HfWXLxrA
おかげさまで無事にアンドゥ機能実装できました ありがとうございました ところでflash版お絵かきツールで 近似値による曲線描画の機能を持ったものを見つけました。 ぜひまねして実装したいと思っているのですが curveToのコントロールポイントをどうやって求めてるか分からなくて・・・ 座標の標準偏差でコントロールポイントを求めるのかな?と思いつきで やってみましたが、近似値に程遠いほどぶれてしまいますorz
>>882 gotoAndPlay()を呼び出したからといって、そこで関数が終わるわけではないので、
その後のgotoAndPlay(i)まで必ず通っているのでは?
gotoAndPlay("miss");の後にreturn;を入れればいいんじゃないかな?
887 :
878 :2006/08/29(火) 22:41:55 ID:AQF8J60B
レスどうもです。 loadVarsで試してみます。
XMLファイルを読み込みたいのですが フレームに myXML = new XML(); myXML.load("sample.xml"); trace(myXML.firstChild.nodeName); 同じディレクトリのXMLファイル(sample.xml)に <?xml version="1.0" encoding="UTF-8" ?> <data> <sample> a </sample> </data> と書いて実行したらundefinedとでてきます。 ちゃんと読み込むにはどうすればよいのですか?
>>888 loadが完了していないうちにtraceしているのが問題。
myXML.onLoad = function(){
trace(myXML.firstChild.nodeName);
}
としてXMLの読み込み完了時に処理を行いましょう。
>>888 最初に読み込んだ後にどうするかって処理をonLoadイベントハンドラに
書いておいてからloadを実行するとよいよ
読み込んですぐには手元にデータ届かないのよ
あと、XMLファイル内で改行を入れてるんだったら空白ノード対策で
「ignoreWhite=true」も入れておいた方がいいかな。
myXML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad=function(){
trace(myXML.firstChild.nodeName);
};
myXML.load("sample.xml");
892 :
715 :2006/08/30(水) 21:48:44 ID:U605ajJL
>>876 くわしくお願いします!!!!
>>877 すいません。ブレークポイントってよく分からないんです。軽く説明してもらえませんか??
文句を言いつつ答えてくれるからやめられない
897 :
715 :2006/08/30(水) 23:58:54 ID:U605ajJL
すいません。
その通りですね^^;
>>896 の言葉が重い・・・
一つのフレームの中でもa.onEnterFrame→b.onEnterFrame→c.onEnterFrameというように実行される順番がありますが ここで強制的にb.onEnterFrameをフレームの最初に実行させたり、a.onEnterFrameを最後にしたり…ということは出来るんですか?
899 :
Now_loading...774KB :2006/09/01(金) 08:15:04 ID:rsSUVo+Q
質問なのですが、 テキストフィールドに文字が入力されたら自動的に次のフレームを表示することは可能でしょうか?? どうぞ教えてください!
>>898 順番を制御するなら、親MC側のonEnterFrameに、子MCの処理を
実行したい順番で記述する。それか、子MC側のonEnterFrameが、
何らかのグローバルなフラグを参照して、制御を待つような処理(コード)を書くとか。
>>899 テキストフィールドのonChaged使うとか。
>>901 ヘルプのステージってところをじっくり読むのだ
ありがとうございます(`・ω・´) 早速調べてみます。
FlashMX(ver6)って、もしかしてattachMovie()のinitオブジェクト渡しの初期化で _widthと_heightの初期化を受け付けていない? なぜか初期化するとどんな値を指定しようが、0にfixされてしまう。 そして、作成後に_width/_heightにどんな値を設定しても無視されてしまう。 逆に、初期化しなければattach元のMCのサイズがそのまま残る。 詳しくテストしてないので他の要因かもしれないけど・・・ ■他の考えられる要因 ・MX2004(ver7)で記述し、Player6(ver6)向けに書き出している。 ・特定フレームに配置してあるMCロード処理時にattachMovie()される
コード書け
907 :
905 :2006/09/01(金) 16:24:00 ID:nvzg26DZ
>>906 俺へのレス?
じゃないと思うけど、単独テストしてみたので書いてみる。
どうもバグっぽいなこれ。
// _rootの1フレーム目に記述
this.attachMovie("test", "test", 0, { _width:100, _height:100 });
testってリンケージIDで中身に何か置いたMCをライブラリに作成しておく。
MX2004で作ってFlashPlayer6向けに書き出しする。
真っ白け。でも、実はサイズが0なだけでMCは作られている。
initオブジェクト部分を削除すると問題なく書き出される。
FlashPlayer7向けに書き出しすれば、当然問題はおきない。
普通にできるぞ 呼び出すMCで変なことしてんじゃねーの?
909 :
Now_loading...774KB :2006/09/01(金) 16:34:53 ID:rrxngBle
flash8pro filterや、そのパロメータの変更方法について質問です 持っている本にfilterプロパティを一旦別の変数に取得して変更した物を filterプロパティに代入すると書いてあるのですが、いまいちやり方がわかりません どういった感じのスクリプトになるのか教えて貰えないでしょう?
910 :
905 :2006/09/01(金) 16:47:54 ID:nvzg26DZ
>>908 うそん。
何度やっても問題でるよ。
MX2004で作って、パブリッシュ設定をPlayer6向けにした?
もしかしたらFlashプレイヤーバージョンのせいもあるかもしれないけど。
7.0.19でとりあえず確認。
だから普通に動くって
>>909 フィルタは設定できる項目が種類によって違ってくるので、とりあえず
hogeってインスタンスにドロップシャドウがかかってるとすると、
//↓いったん別の変数「myList」にフィルタの内容を取得
var myList:Array = _root.hoge.filters;
//取得した内容を変更する
myList[0].blurX *= 1.5;
//変更した内容を代入して元に戻す
_root.hoge.filters = myList;
913 :
905 :2006/09/01(金) 16:57:51 ID:nvzg26DZ
>>912 ありがとう!
直接変更出来ないので、単純にコピーした物を変更するって事ですね。
>>905 initObjectは確かFlash7から
>>913 勘違いしてた。すまん。確かに表示されない。
_xや_yはいけるけど、_width,_heightは駄目だった。
917 :
905 :2006/09/01(金) 17:25:06 ID:nvzg26DZ
え?そうだっけ? でも_width、_heightじゃなくて_x、_yの初期化はinitObjectでうまくいくよ 上で上げたflaとか書き換えてテストしてもらえるとわかるけど なぜかサイズの初期化だけうまくいかない
918 :
905 :2006/09/01(金) 17:34:04 ID:nvzg26DZ
バグと判明したのでいいや お手数かけました かわいいほうかFlashのバグとしては ひどいのは嵌るとなかなか抜け出せない
>>905 勘違いしてた。すまん。
6以降だから6も入るね。
>>905 サイズは_xscaleと_yscaleならいけた。
_xscale=10000/340と_yscale=10000/20
_width、_heightは確かにバグっぽい
(flashplayer6の設計ミスで)初期化時にまだ取得できてない
_widthと_heightに無理矢理値入れたからかなぁ?
不思議。
921 :
Now_loading...774KB :2006/09/02(土) 08:12:06 ID:xT6UetcI
このスクリプトをフレームにいれて動作させたいのですがうまくいきません どうしてでしょうか? on (press) { e = e+4; if (cursor_mc<=cursor2) { xChangeCursor("cursor10"); } } on (release) { if (cursor_mc<=cursor10) { xChangeCursor("cursor2"); } }
>>921 それはボタンアクションだから、フレームじゃなくてボタン等に対して書かないといけない。
923 :
Now_loading...774KB :2006/09/02(土) 09:05:47 ID:xT6UetcI
>>922 なるほど
どうしてもフレームに書く必要があるので、少し記述をいじって
このスクリプトと同じ内容のことをフレームに書くことは可能でしょうか??
>>921 if (cursor_mc<=cursor2) {
って変数だよね?MCを比較してるわけじゃないよね。
925 :
Now_loading...774KB :2006/09/02(土) 10:15:08 ID:5Iyr7dmh
説明不足ですいません。フレームごとにマウスカーソルを変化させ、かつそれぞれにプレスアクションをつけようとしています。カーソルはMCです。
聞いてる事に答えろ
927 :
Now_loading...774KB :2006/09/02(土) 10:44:14 ID:5Iyr7dmh
変数ではありません。MCです。
ここで聞くのは悪いことじゃないけど ASのリファレンスを1日くらいかけて読んだほうがいいよマジで。 ちょっと聞きたい程度の質問なら答える気になるけど 丸投げ気味なのはまじで勘弁。 基礎わかってない人も同じ。
930 :
Now_loading...774KB :2006/09/02(土) 12:54:45 ID:5Iyr7dmh
初心者以外くるなというスレで質問し、聞いてること答えろといわれて答えたら、リファレンス嫁か どうしてもわからないからきてるのに
それは、小学生の勉強しないで、高校や大学受かりたいんです!みたいな要望を持ってくるからじゃないか? その場合可能なのは代理受験(製作依頼)か、諦めて遠回りする(小学生の内容からやる)かだろ。 ここは製作依頼スレじゃないし、一度に小学生〜高校生までの内容を教えるのだって大変だ。 わからないにしても、どこまではわかるかをはっきりさせないと。
>>930 >>921 のコード自体は、今、意図したとおりに動いてるわけ?
正直ムービークリップの比較って意味分らん。
「cursor_mc<=cursor2」でやってること(やりたいこと)を日本語で説明してみて。
動いてるなら
ボタンインスタンス.onPress= function(){
e = e+4;
if (cursor_mc<=cursor2) {
xChangeCursor("cursor10");
}
}
ボタンインスタンスonRrelease=function (){
if (cursor_mc<=cursor10) {
xChangeCursor("cursor2");
}
}
でいいんじゃないかな
初心者とか以前に質問するときに言葉足らずなのが問題なんだと思うよ。 if (cursor_mc<=cursor2) { この内容をちゃんとした日本語でどういう処理にしたいのか伝えないと 誰も理解できないよ。 ASなんかより人とのコミュニケーションの仕方を勉強した方がいい。
934 :
Now_loading...774KB :2006/09/02(土) 14:04:36 ID:5Iyr7dmh
自分の能力のなさを棚にあげて愚痴ったりしてスマンかった。言葉で伝えるのは難しいのでアップロードしていいだろうか?少々エロい内容なのだが
丸なげうぜーよ
やけにアクロバティックなスクリプトだな
>>932 の3行目に答えないかぎり、fla上げたところで
誰にもどうにもできないよ
>>1 に●作業丸投げは無視されます
を次スレには入れるといいかもしれない。
というか、入れて立ててくる。
少し早いが。
939 :
Now_loading...774KB :2006/09/02(土) 14:36:43 ID:xT6UetcI
説明できねーってのはデコンパイルでもした他人のファイルだからだろ しかもそれがエロフラwww 終わってるな
941 :
Now_loading...774KB :2006/09/02(土) 14:45:57 ID:xT6UetcI
マジレスするとその部分のスクリプトは共同制作者に組んでもらった。 べつにエロフラでも終わっているといわれても気にしない
なら共同制作者に聞け
脳内じゃなきゃいいけどなww
cursor_mc はMCインスタンス名 cursor2 cursor10はcursor_mc内フレームのラベル名 ・・・・・ 黙っておしフラASでも何でも買ってきて読んでくれ
各フレームに this.cursor_mc.gotoAndStop("cursor" + _root._currentframe) ; 呼び出さなくても勝手に更新されるようにしたいんだ、とかは重くなるだけ。 それ以前に中身(ASとMC階層)見たが、こだわる部分が違うんじゃないかな。 ハンドカーソルとか唇カーソルとか、press/release時のシンボルは一つのMCにまとめる方が良いよ。 そうすると、体のpress/release判定用のボタンアクションが全て統一出来る。 最後に右側のボタンアクション。 pressでカーソル画像変えて、releaseで_rootフレーム移動してるけど releaseOutsideが未定義だから、press状態でボタン領域外releaseするとバグるよ。 何はともあれ構成ミス。作り直す気が無いのなら一つ一つ地道に記述していくべき。 あとライブラリの汚さに吹いた。
>>945 >this.cursor_mc.gotoAndStop("cursor" + _root._currentframe) ;
右のアイコン部分だけだとそれでいいかもしれないけど
質問部分だと意図が違うのでは?
on (press) {
e = e+4;
if (cursor_mc<=cursor2) {//常にtrue
xChangeCursor("cursor10");
}
}
on (release) {
if (cursor_mc<=cursor10) {//常にtrue
xChangeCursor("cursor2");
}
}
なので
on (press) {
e = e+2;
if (cursor_mc._currentframe<=2) {
xChangeCursor("cursor10");
}
}
on (release, releaseOutside) {
if (cursor_mc._currentframe<=10) {
xChangeCursor("cursor2");
}
}
書き換えてみたがっ!
947 :
Now_loading...774KB :2006/09/02(土) 15:51:49 ID:5Iyr7dmh
ありがとう そういうのがききたかった よかったら手伝っていただけませんか?しかるべきお金はだします。 丸投げする気はないのですが自分で参考書読んでもわからなかったので、ロムってて不快になった方ごめんなさい
構成上要らないものをどけたらこうなった on (press) { e = e+2; xChangeCursor("cursor10"); } on (release, releaseOutside) { xChangeCursor("cursor2"); } じゃあこれをフレームに書こう、ってなら まずインスタンスに名前付けようなw あと[e]ってのは快感のパラメータだと思うんだけど どこ揉んだりしても同じ数値でいいのか? つーかどこで判定してるんだ?<[e] ツッコミどころがありすぎてどこからつっこんでいいのやら
まぁでもこんなめんどくさそうなもの、よく作ろうと思ったもんだ プリプロの素材作りがすでに面倒そうだし その点は評価したい 答えてないのに偉そうだけど(w 答えもうほぼ出てるからいいよね
950 :
Now_loading...774KB :2006/09/02(土) 16:19:28 ID:xT6UetcI
945から948ありがとう でもヒントこんだけもらいながらまだできないorz こういうフラッシュ手伝ってくれるの頼めるとこないよね? お金かかっていいんだけど
中身見た限りこれくらいだったらめんどくさいだけで難易度高くないし
このスレでも暇そうな奴がやってくれるんじゃないか?
俺はやらんけど
↓
>>938 で新スレよろ
951 ありがとうございます 内容としてはコレと同じくらいのレベルスクリプトを二つ、三つ 組んでいただくくらいなんですが もし誰か手伝っていただける方おられましたらサブ アドさらすのでメールお願いします!三万ほど謝礼いたします。 そろそろスレチ(だいぶ前からか)なので消えます いろいろお騒がせいたしました。
>>953 共同製作者はどうした?
同じくらいのレベルスクリプトを二つ、三つってのは誰の判断だ?
ASというかこのFLASHの構成わかってるか?
作ってるのはおまいだけか?ほかにも人間が携わっているのか?
任せる仕事量もわからずにいきなり金の話か?
ひょっとして釣りか?
955 :
Now_loading...774KB :2006/09/02(土) 17:24:24 ID:xT6UetcI
共同製作者の力でここまできましたが その方もflashはそこまで詳しくなく限界があります・・ ASが記述できないけど 構成、全容は頭に描いております。 グラフィックは全て俺が作ります。
製作依頼系のとこで頼んだほうがいいんじゃないかな このスレッドの趣旨とは違う気がする
UIはともかくモデルは普通にできてるね。 同人の予定?
958 :
Now_loading...774KB :2006/09/02(土) 17:46:28 ID:xT6UetcI
957 はい 956 製作依頼にもさっき書きこみしました
452と466か エロいフラッシュ作るじゃなくて、 コンテンツのAS部分を手伝ってくれる方募集しますなら少しはマシな結果だったろうに
a.swfとb.swfの2つのswfファイルがあって、a.swfの_rootに loadMovieNum("./b.swf",1) hensuu = "num0001"; と記述しています。 このhensuuをb.swfに渡すにはどうすればいいでしょうか?
>>960 b.swf 内で
a = _level0.hensuu;
>>961 _levelを使うんですね。分かりました。
どうもありがとう御座いました。
963 :
Now_loading...774KB :2006/09/03(日) 07:00:21 ID:Hk8EduwA
trace()を実行しても出力ウィンドウに何も表示されなくなる現象に出くわしました。 actionscriptにただ trace("Hello"); とだけ入力してCtrl+Enterで実行しても出力ウィンドウにHelloが表示されない。 trace("Hell とかやってわざとエラーになるようにして実行しても何も表示されない。 出力ウィンドウを閉じた状態で上記のHelloを出力するコードやエラーになる コードを実行すると自動的に出力ウィンドウが開くからtrace()自体は 実行されて何かしら出力しようとしているらしいのだがtrace()の引数や エラーメッセージが表示されない。 編集→環境設定とか見てもそれっぽい項目ないしお手上げです。
パブリッシュ設定の、トレースアクションを省略、にチェックはいってるんでは?
>>963 再インストールとチェックディスクでも試してみたら?
パソの問題と思われ。
Flash8で使えてMX2004で使えないコンポーネントって何ですか?
967 :
Now_loading...774KB :2006/09/03(日) 18:15:02 ID:T/Nz9xvG
フラッシュ内に YouTube のオンライン上の動画を読み込んで 再生する事は可能でしょうか? 試しに、ルートに新規ビデオ my_video を配置し、 my_nc = new NetConnection(); my_nc.connect(null); my_ns = new NetStream(my_nc); my_video.attachVideo(my_ns); my_ns.play(url); これで url に、ローカルに保存したFLVのパスを入れると再生できましたが、 YouTube の動画アドレスを入れても再生できません。 どなたか御教授願います。 FLASH 8 Basic Windows です。
970 :
967 :2006/09/03(日) 19:35:27 ID:iuD5Bb4W
>>969 ありがとうございます。その方法で試してみたら出来ました。
ちなみに、YouTubeのサイトで動画を見てるときのアドレスから
flv のパスを取り出すというのをフラッシュ内で行う事は可能でしょうか?
そういうのって、YouTube的にありなのか? いわゆるコンテンツただのりだろ。
API出してるからYouTube的にはありなんでしょ。 コンテンツ提供者にはありじゃなくても登録するとき同意ボタン 押してるだろうし・・・
975 :
967 :2006/09/03(日) 23:33:53 ID:ZtYfVh6o
>>971 YouTubeAPI で XML 取得しても
flv のパスまではわかりませんよね?
ナンバープレイスをフラッシュで作ろうとしています。 自分の考えた方法は1〜9をテンキーに反応させて 数字を表示する部品(MC)を81個並べることを考えたのですが、 キーを押すとすべてのMCが反応してしまいました・・・ アニメーションの作成はしたことがあるのですが、 パズルの作成は初めてで戸惑っています。 何かいいアイデアはありませんでしょうか?
初めてでナンプレ作るのは多分無理 とマジレス
>>976 今どこのMCを変えようとするのかを内部管理してなければ、全部のMCが変わると思うよ。
質問が抽象的すぎて、どう回答しようかちょっと悩むんだけど、
アニメーション以外の作成をしたことがないのなら、段階踏んでやってみると良いと思うよ。
まずは4つのMCでも良いから、個別に数値が設定できるようなAS書いてみるといいかも。
ナンプレ作るには、
・問題をどうするのか(自動生成?あらかじめデータを作る?)
・インターフェイス
・正解かどうかのチェック
大まかなところでこれくらいがポイントになるのかな?
ASぽくない、抽象的な回答でスマソ
980 :
Now_loading...774KB :2006/09/05(火) 22:00:08 ID:5qdqg97Y
Flashでメールフォームを作ったのですが、送られるメールが文字化けしてしまいます。 CGI側で、Flashから投げられた文字列のコードがSJISって言うのまでは掴んだのですが、CGIの方でSJIS対応しても文字化けてしまいます。 Flash8のデフォルト設定ですが、FlashからEUCで文字列を投げる事って出来ないのでしょうか?
flashは基本的にUTF-8のはずだが。
>>980 CGI側で文字コード変えればいいじゃん
インプットテキストとか使うと貼り付けたHTMLのメタタグのコードになったような 記憶もあるけど忘れた。そのCGIって普通のSJISのHTMLのフォームからデータ送って ちゃんと文字化けせずに使える?
984 :
Now_loading...774KB :2006/09/06(水) 14:32:22 ID:fY6MVT0s
>>984 そのうまくいってない変換部分を見直すべきだと思う。
サーバー側のCGIって何? Perlか?
FLASH で使える文字コードは UTF-8 または OS 依存のどちらか。 OS 依存では web で公開するのに嫌すぎるため、普通は UTF-8 を使う。 なので、FLASH + CGI で作る web アプリだと、文字コードは UTF-8 を使う選択しかないかと。 CGI内部で無理矢理EUCを使わなきゃいけない理由がないなら、 Flash / UTF8で入力 → CGI / UTF8で処理。CGIもUTF8で書く。 → 最後の最後に jis に変換して出力(メールは sjis じゃなくて jis だったような) みたいな流れですかね。
あと質問です。 MX2004なんですが、あるムービークリップの子ムービークリップへの参照を すべて取得することは可能ですか?
for inで出来ると思う あるいは配列を持たせて配列で管理するか
すいません 初心者です MXを使っているのですが、ASを使って、閲覧者がそのFLASHを見た時間を測定し、その時間を変数Aの値に代入することってできます??
>>990 可能
var a = getTimer();
992 :
963 :2006/09/07(木) 03:29:39 ID:FOvOOLJu
>>964 ,965
出力パネルのフィルタレベルがなしになってた。
詳細をチェックしたらtrace()の出力が出るようになった。
しかし"なし"ってなんに使うんだ?
993 :
988 :2006/09/07(木) 07:58:39 ID:jH+EygBZ
>>989 「あるムービークリップの中に MovieClip を継承した
自作クラスのインスタンスがあったらむにゃむにゃする」
という処理を想定しているので、
for in を使うんでも、 static な配列を自作クラスに作って、
コンストラクタでターゲットパスをしまっておくんでも、
思った通りに行けそうです。
ありがとうございました。
あと、
>>994 さん、テンプレありがと。とても助かった
ま、まさかとはおもいますが。。。 生まれて初めての1000ゲットです!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。