ActionScript 物凄い勢いで解凍するスレ その2
Lhaplus!!
4 :
Now_loading...774KB:04/03/12 14:34 ID:XsOyDtpG
DropLha
はじめて1000とれた・・・
前スレの未回答もってきてきた
997 名前:Now_loading...774KB[] 投稿日:04/03/12 14:32 ID:sGfeZB6I
http://www.logicalyze.com/as/ このサイトで紹介している
スケール操作で簡単3D回転(してるふり)Type1
というヤツをやりたいんですが
speed *= dir;
↑ココの部分がシンタックスエラーで作動しません…
どなたかおしえていただけませんでしょうか?
6 :
コピペ:04/03/12 14:34 ID:???
7 :
5:04/03/12 14:37 ID:???
8 :
Now_loading...774KB:04/03/12 14:44 ID:w5Pv3X5S
すいません
ボタンで
クリックしたら音が出て、
もう一度クリックもしくは放したら音が止まる。
というのをお願いします。
まだあやふやで自分で作るのが怖いです。
>>5-6 タブ、スペース、全角スペースそういうものを一回全部消してみてください
>>8 もう一度クリックするには放す必要がありますが?
>>8 タイムラインで示したほうがわかりやすい?
レイヤー1|●|_|●1|●2|
ダウン(1)にサウンドAを入れて
オーバー(2)にサウンドBでOK
11 :
訂正:04/03/12 14:49 ID:???
レイヤー1|●|_|●1|○|
ダウン(1)にサウンドAを入れて
オーバー(2)に空白キーフレーム
>>8 スイッチmcに
var playing = false;
function hogehoge() {
playing = !playing;
if (playing) { 音楽スタート }
else { 音楽ストップ }
}
this.onPress = hogehoge;
MCに鳴らしたい音入れて
on(press){
MC.play()
}
on(release){
MC.stop()
}
15 :
6:04/03/12 15:18 ID:sGfeZB6I
スペース等消してみましたがダメですね…
違うトコがエラーになりました。
このスクリプトは
MCにつけていいんですよね?
もしかしてフレームですか?
どっちにしろ動かないんですが…
当然フレームです
17 :
6:04/03/12 15:40 ID:sGfeZB6I
フレームでしたか…
エラーは無くなりましたが作動しません…
インスタンス名はr_mcでいいんですよね?
19 :
6:04/03/12 15:47 ID:sGfeZB6I
あ。2004じゃないとできないんすか?
MXで同じようなことできないんですかね?
僕MX信者ですけど
皆さんノーマルモードとエキスパートモードのどっちでAS打ってます?
他verでその辺がどうなってるかは知らん
>>20 エキスパートモード
ノーマル使ってたら手が死ぬ
22 :
Now_loading...774KB:04/03/12 16:35 ID:XsOyDtpG
FLASH MXですが
ActionScriptでインスタンスを作成する方法はありますか
>>22 はぁ?
じぶんのやりたいことちゃんとかけよ
いみワカンネ
24 :
22:04/03/12 16:41 ID:???
申し訳ありません
えー
例えばシューティングゲームで
弾を発射するごとに弾のインスタンスをムービー内に配置
配置したいののですが
画面をクリックすると、星が生まれて動き出す
星のインスタンス名はstar1、star2・・・となるところまで作ったんですが、
星どうしが衝突するときの判定は、
hitTestを星の数だけforでやらないとダメですか?
何かに触ったときだけ判定開始や、触ったインスタンス名だけを知る方法が
あったら教えてください。
27 :
6:04/03/12 17:00 ID:sGfeZB6I
>>22 ヘルプの
attachMovie
duplicateMovieClip
を参照すれ
>>25 現状FLASHの機能では無いです。
forなりで力技でチェックするしかないです。
>>27 そういうことじゃない
ASの書き方の問題だろ
30 :
6:04/03/12 17:07 ID:sGfeZB6I
var speed:Number = 5;
var dir:Number = -1;
_root.r_mc.onEnterFrame = function() {
if (this._xscale>100 || this._xscale<-100) {
speed *= dir;
}
this._xscale += speed;
}
コレをMXでも動くように書きかえたいんですが…
>>30 変数の後に型指定があるのはActionScript2
型指定を消す。
32 :
6:04/03/12 17:23 ID:sGfeZB6I
すこしは自分でASの勉強しろ
35 :
6:04/03/12 17:49 ID:sGfeZB6I
すいません…
コロンシンタックスの削除でしたね…
36 :
22:04/03/12 18:00 ID:???
>>1さんお疲れ。
なんかせっかく新スレ立ったのに、おまえら
>>1-2読んでるのか?
と言いたくなるような質問が多いどすな。。
フラッシュ制作初心者スレ217さんがええ事いった。
テンプレに入れるといいかと思うんだけど、どう?(激しく時期が悪いが)
以下コピペ。
ASなどのプログラムでなんかやりたい場合はこういう手順で作れ。
1.まず日本語でやりたいことを書いてみる
2.流れに沿って、やりたいことを箇条書きに直してみる
(ここでこっちに飛ぶ、もしもこうならこうさせる等、ASならタイムラインで考える)
3.箇条書きした日本語をプログラムに書き換える
押さえておくべき命令は条件判断、繰り返し、ジャンプの3つだ。
覚えておくべきことは変数の使い方(値の出し入れの仕方)、計算のさせ方の2つ。
以上、5つのことを覚えて上の手順で作れば、大体のものは作れるぞ。
>>38 それがちゃんとできる奴は大抵検索で済んでしまうんだがなー
あとこれも入れて欲しい。
動作が上手くいかないときはtraceで確認する。
デバッガってどういう場面で使うのですか?
traceで済んでいる限りは使わない機能ですよね
>>42 いちいちtrace書くの面倒なときとか。
質問です。
Key.getAscii()でキーボードを読むと、使用キーボードに関係なく
英字キーボードの配列として読まれてしまうようです。(例えば
日本語キーボードで Shift + 8 を押しても '*' になってしまう)
きちんとキーボードに合わせた文字を読むにはどうすれば良い
のでしょうか?
使用しているのはFlashMX、OSはwindowsXPです。
よろしくお願いします。
>>42 変数とプロパティ全部が確認できるんだから、traceより便利な気がするけど・・・
if (gotKeyCode == Key.DOWN) {
_root.gotoAndStop(JumpLabelArray[0][nowLabel]);
}
if (gotKeyCode == Key.UP) {
_root.gotoAndStop(JumpLabelArray[1][nowLabel]);
}
if (gotKeyCode == Key.SPACE ){
switch(nowLabel){
case 0 :
gotoAndPlay("Race_Main",1);
}
}
上記のように書くと動作するのですが
_root.gotoAndStop(JumpLabelArray[0][nowLabel]);
_root.gotoAndStop(JumpLabelArray[1][nowLabel]);
は_rootをつけないと正常に動作せず
gotoAndPlay("Race_Main",1);
は_rootをつけると正常に動作せずですが。
何故でしょうか?
環境はOSX10.3,FLASH MXです
>>46 gotoAndStopとかgotoAndPlayはムービークリップのメソッド(function)。
ステージにはムービークリップが複数あることが多いし、
ムービーファイル自体(_root)もムービークリップ。
メソッドを実行するためには、どのムービークリップを動かすのがを指定する。
_root.gotoAndPlayであれば、ムービーファイル自体で、省略すれば、
スクリプトを実行しているムービークリップ自身(this)だと解釈される。
>>46 補足します。
引数2つのgotoAndPlay()はムービークリップのメソッドではなく、アクションです。
このへんの、同じ名前で違う関数があるものはまぎらわしいので注意しましょう。
49 :
Now_loading...774KB:04/03/13 14:44 ID:hdd59ZnS
attachMovie関数についてちょっと教えて下さい。
myMovieClip.attachMovie(idName, newName, depth [, initObject] )
この[, initObject] についてヘルプを見てもいまいちわかりません。
どなたか具体的な書式例を書いてはいただけないでしょうか?
パラメータはいくつも設定できるのでしょうか?
intobj = new Object();
intobj._x = 200;
intobj._y = 200;
intobj.onEnterFrame = function() {
this._x += 10;
this._y += 10;
if (this._x>400) {
this._x -= 400;
}
if (this._y>400) {
this._y -= 400;
}
};
this.attachMovie("mcA", "mcA"+i, i, intobj);
System.security.allowDomain("xxx.net");
System.usecodepage = true;
CGIFile = "
http://www.xxx.net/~xxx/cgi-bin/xxx/xxx/xxxxx.cgi";
myLoadVars = new LoadVars ();
myLoadVars.onLoad = function(success){
accescounter = myLoadVars.countdata;
};
myLoadVars.load(CGIFILE);
上記のスクリプトでswfファイルとは違うサーバーに置いてあるcgiを呼び出していますが、
サーバーにアップロードしてswfを実行すると通信できていないようです。
Flashのプレビューでは成功するのですがなぜでしょうか?
52 :
51:04/03/13 15:53 ID:???
あ、環境はMXです。
53 :
49:04/03/13 15:59 ID:???
>>50 おおっ スゴイ!
こんな本格的なのを書いていただけるとは。
自分はまだまだコレを応用できるレベルではありませんが・・・
タメになりましたです ありがとうございましたー!
loading1,2,3,4,5を表示させたいです。
for (n=1;n==5;n++){
["loading"+n]._visible=true;
}
というスクリプトを実行すると「予期しない . があります」と出てしまいます。
"loading"+nやloading+nを試しましたが+が混ざっているとダメなようで、
どうすればいいか迷っています。解決策があればご教授下さい。
flash mx 2004
>>51 セキュリティ上の理由で同じドメイン内じゃないと
受けわたしが出来なくなってます。
ローカルでできるのは開発しやすいようにってことみたいです。
for (n=1;n==5;n++){
this["loading"+n]._visible=true;
}
57 :
51:04/03/13 18:02 ID:???
>>55 そうなんですか。
System.security.allowDomain(); メソッドがあったので
てっきりできるものかと思ってました。
ありがとうございました。
>>56 54です。
ありがとうございます! うまくいくことが出来ました。
練習でアクションゲームもどき作ってみました
http://www.border.jp/uploader/img/1839.swf よかったらアドバイスよろしくおながいします。
アンチなどはガンガン受けつかます。
ソースほしかったらあげまつ。
カーソル:移動やジャンプなどの基本操作
スペース:敵に攻撃(未完成)
今のところ可動、固定床、壁、天井の判定のみ。
可動床はムービークリップで固定床、壁、坂は1枚のシェイプで判定しています。
>>60 普通にソース欲しいっす。
コレを機に本格的にAS勉強しようかと思う。
こっちは深い溝にはまって抜け出せなくなってるのにもう一匹がぴょんぴょん跳ねてるのにわらた
62 :
Now_loading...774KB:04/03/14 16:50 ID:SswrkCL+
ストリングスのシフト演算もどきをやりたいのですがうまい方法がなくて
悩んでおります。
muM = new Array( "B","R","F","L");
コレを右シフト時に "L","B","R","F" とし
左シフト時に "R","F","L","B" としたいのです。
只今Arrayとstringのメソッドを組み合わせて色々やっておりますが・・・
どなたか詳しい方がおりましたらご教授願います。
63 :
Now_loading...774KB:04/03/14 17:27 ID:txVCkM0E
キーを押したとき〜を行う、という動作は
if (Key.isDown(Key.DOWN)) {
〜〜;
}
という感じで出来るのですが、キーを離したとき〜を行う、という動作はどうすればいいのでしょうか?
ボタンでいえば
on(release) {
〜〜;
}
という感じです。
どなたか、よろしくお願いいたします。
64 :
63:04/03/14 17:29 ID:???
書き忘れましたが、FLASHは2004を使っています。
>>63 高い金出して買ったんならせめてヘルプくらい読もうよ。
66 :
62:04/03/14 17:46 ID:???
スンマセン 自己解決しそうなんですがちょっと疑問が。
//左シフト
muM.push(muM.shift());...○
//右シフト
muM.unshift(muM.pop());...×
a=muM.pop();
muM.unshift(a);...○
左シフトは正常に動作するのに右シフトは一回変数で受けないと
正常に動作しないです・・変なの!
67 :
Now_loading...774KB:04/03/14 18:45 ID:IhGB78sE
>>66 muM = new Array("1", "2", "3", "4");
muM.push(muM.shift());
trace(muM); //2,3,4,1
muM = new Array("1", "2", "3", "4");
muM.unshift(muM.pop());
trace(muM); //4,1,2,3
試したら普通に動いてるよ。
>67
上下左右から文字が出てきて、文を作る表現の仕方?
自作サンプル見ると、特に問題なく
あと一歩のように感じるのだが・・
>>67 むしろそのサンプルをどうやってるのか知りたいが。
出現位置をいじって4方向をランダムで決めて出せばいいんじゃないのか?
>>67 上、下、右と交互に文字が飛んでくる方法
一文字ごとに、++letterNum % 3 をして、(変数はなんでもいい)
0なら上、1なら下、2なら右からの処理にまわす。
その処理で、出発点の座標を決める
各文字には、出発点と到着点の座標を用意。
フレーム毎に到着点目指して移動。
到着点の距離から、アルファも変化させる。
到着したら止める。
いじょー
72 :
Now_loading...774KB:04/03/15 19:26 ID:kXMsVxSl
lineTo等で書き込み続けてるとやがて重たくなってくるじゃないですか
それをなくしたいんですが何かいい方法はないでしょうか
太めのブラシで画面を徐々に塗りつぶしていくものです
>>72 画面を徐々に塗りつぶすなら線にしないで塗りつぶしにして、
毎回Clearしながら徐々に塗る部分を増やしていけばそんなに重くならんと思う。多分。
>>73 解凍ありがとうございます
ブラシの動きが不規則で、しかも円形なので難しいですね…
仕様変更も視野に入れて頑張ります
75 :
72:04/03/15 21:08 ID:kXMsVxSl
あbeginFillは使っています
なんとなくlineが重くなる原因な気がするんですよね…
描画したあとに線だけ消せないものか
76 :
Now_loading...774KB:04/03/15 23:01 ID:JDgkkEll
すみません、質問させてください。
var color = new Color("MovieClipインスタンス名");
という風にして特定の MovieClip インスタンス内の
Color インスタンスを取得することはできたのですが、
同じようにして MovieClip のインスタンス名から
MovieClip インスタンスを取得することができません。
movieClipInstance = new MovieClip("MovieClipインスタンス名");
とやっても
var objectName = "MovieClipインスタンス名";
movieClipInstance = _root.objectName;
とやっても無理でした。
なんとかして、MovieClip のインスタンス名からインスタンスを取得できないでしょうか。
77 :
76:04/03/15 23:02 ID:???
環境を書き忘れました。
MX Professional 2004 です。
>>76 _root["インスタンス名"]._x とかでそのインスタンス指定できるよ。
(_rootのあとに.はいれない)
79 :
76:04/03/15 23:12 ID:???
や、やったー! できました!
随分長い間悩んでたんで、助かりました!
ありがとうございます!
質問です。
if文を中にhittestを使って、ページをとばすFlashを作ってるんですが、
onClipEvent(enterFrame)の中にそれを書き、いざ被せてみると、
もの凄い勢いでリンクページが増えてとんでもないことになってしまいます。
ためしにonClipEvent(load)の中に書いてみたんですが、hittestが機能しません。
全部MC上に書いてるんですが、onClipEvent(enterFrame)を使わないで、hittestが機能するようには出来ないのでしょうか?
解決方法知ってる方が居たら教えてください。
環境はMX使用しています。
>>80 それブラクラやん・・・w
普通それで問題ないはずだから、自分が書いたスクリプトを晒せ!!
曲名を選択すると、swfファイル外にあるmp3を読み込んで、
曲を再生するところまで出来ました。
違う曲を選択した後、読み込みが完了するまで、
前の曲を再生しておきたいのですが、
nextSong.loadSound(ファイル名,false)
で読み込みが完了したら、
currentSongにnextSongのデータを入れるには
どうしたらいいんでしょうか?
>>82 その二つのサウンドオブジェクトを交互に使っていったほうが楽じゃない?
84 :
80:04/03/16 18:26 ID:???
自分の説明不足だったみたいなので、もう一回ちゃんと説明してみます。
onClipEvent (enterFrame) {
if (_root.aa.hitTest(_x, _y, true)) {
getURL("aaa");
}
}
ASを簡略化するとこんな感じなんですが、重なった瞬間に、ウインドウがいくつか出てきてしまいます。
このウインドウを一枚だけにしたいのですが、わかる方居ませんでしょうか?
宜しくお願いします。
>>84 とりあえず、ウィンドウのターゲットを指定すれば
開くウィンドウは1つになりますが…
同じウィンドウでガンガンgetURLすることになるので
フラグを使うとかした方がいいでしょうね。
loadMovieして、外部からswfを読み込んだんですが、
読み込んだswfの内部データを受け取ったり、
読み込むほうがデータを送るにはどうしたらいいんでしょうか?
localConnection()は複数起動したswfどうしのデータ受け渡しの
気がしますが、これを使うべきでしょうか
87 :
86:04/03/16 23:22 ID:???
今、内部のサウンドファイルをスクリプトで使用するときは
リンケージ設定の"1フレーム目に読み込む"をチェックしているのですが、
当然ですがローディング画面が表示される前に読み込みで待たされます。
そこでローディング画面中に使用するサウンドを読み込みたいのですが。そういう場合はロード方法と再生方法がまた違ってくるのでしょうか。
環境はMXです
PS.
"スクリプト使わずにフレームに貼付ければ"とかはなしでお願いします。
>>88 リンケージさせた音の入ったswfをベースのswfに読み込めばいい。
90 :
Now_loading...774KB:04/03/17 19:40 ID:SVCH+lqS
ちょと質問させてくらはい。
まず、メインの「main.swf」というFLASHが「maindir」というディレクトリーの中にある。
そこから_root.loadMovie()で外部swfファイルを読み込んでる。
読み込んでるのは「subdir」ってディレクトリの中の「readXML.swf」というファイルで、
こいつは「readXML.swf」自身と同じ「subdir」にある「test.xml」ってXMLファイルを読み込んでる。
「readXML.swf」を単体で起動した場合には正しく「subdir」の中にある「test.xml」を読むんだけど、
「main.swf」から「readXML.swf」を呼び出した場合には「maindir」の下の「test.xml」を探しにいってしまう。
何とかして「readXML.swf」が「subdir」から「test.xml」を読むようにできないかな。
「readXML.swf」を「maindir」に持ってくるってのはナシで、
「readXML.swf」のMovieClipインスタンスのファイルのルートパスを変更する、みたいな。
readXML.swfの変数として読み込むディレクトリを管理するものを一つ用意すれ。
その仕組みを用意できなきゃ全部同じフォルダに入れろ。
flaファイルがあればそういう仕組みで直せ
swfファイルしかなけりゃ、あきらめて全部同じところに突っ込めって事
92 :
90:04/03/17 21:32 ID:???
そうするしか手はないですか……
ありがとうございました。やってみます。
MCのフレーム数を知る方法と、
MCの中にあるアニメしているMCを全部止める方法を教えてください。
また全部動かす方法もあればお願いします
紙芝居作ってるんですが、停止させても中のアニメが動いていて、
困ってます。
>>93 MCの総フレーム数は MovieClip._totalframes に入ってる。
全てのMCを止める方法は、例えばこんな感じ
// 含まれる全てのMCに対して同じ関数を呼ぶ
function broadcast(iMC, iFunctionName){
for(var name in iMC){ // iMC の全てのプロパティでループ
var prop = iMC[name];
if(typeof(prop) == "movieclip"){ // プロパティがムービークリップなら
broadcast(prop, iFunctionName); // 再帰的に呼び出し
}
}
iMC[iFunctionName](); // 自分自身に対して関数を呼ぶ
}
broadcast(myMC, "stop");
>94
本当にありがとうございます。
forの使い方が勉強不足で理解できていなく、
コピペで運用してみます。
とりあえず、全てのMCに貼り付けていた
停止状態監視用のMCスクリプトを消すことから・・・
96 :
Now_loading...774KB:04/03/18 16:36 ID:CO3EnDMB
2004を使っています。
TextFieldでアンチエイリアスをかけるにはどうしたらいいでしょうか?
英語のプロパティ、メソッド一覧を見ても、antialiaseの情報が見当たらず、
試しにembedFontsに設定を行っても効果はありませんでした。
>>96 漏れmXだけど、アンチエイリアスてはじめから掛かってるかと。
もっと輪郭をボカしたいんだったら、文字を分解して少し拡大して、
アルファを落としたのを重ねるしかなさそう。
アンチエイリアスを掛けないって意味だたら
ギザギザのフォント探してきて使うしかなさげ。
98 :
Now_loading...774KB:04/03/18 18:32 ID:Sn8TKgPX
サウンドノベル的な物を作ってて、
文章を変数に入れてからダイナミックテキストとか言うやつで
表示させてるんですが、
強調したい部分の色を変えたりする事は可能なんでしょうか。
なんか全く見当もつかないんですが
もしかしてこの方法では無理ですか?
テキストオプションで、HTMLにチェック。
A HERF,FONT COLOR,FONT FACE, FONT SIZE, B , I , U ,P
のタグが使える。
100 :
Now_loading...774KB:04/03/18 19:44 ID:Sn8TKgPX
101 :
Now_loading...774KB:04/03/18 22:26 ID:yWAL83tk
ぎゃわー
余りにも初歩過ぎて聞くのも恥ずかしいが教えて欲しい
スクリプトの長くて見づらい行を改行したいんだけど
改行をエスケープする方法、ActionScriptに有りましたっけ?
>>101 アクションパネルの右上のメニューから改行にチェックいれたら
ウィンドウ内で折り返しされるけど、それがしたいの?
外部ファイル読み込みでnowloadingを作っているんですが、
プレビューではHDのアクセス速度が速すぎて一瞬で終わってしまいます。
アップロードしても、キャッシュで読み込まれてしまいます。
画像詰め込んで100Mくらいのサイズで作るか、
キャッシュを毎回クリアする以外にもっと簡単な方法を教えてください
プレビューのストリーミング表示じゃあかんの?
>104
外部読み込みってことは、loadMovieだろう。
loadMovieはプレビューでストリーミングされない。
漏れだったら、読み込み完了のメソッドを作って、
true返してくれれば再生でいいんじゃないかなと思うが。
>>103 2004からは外部ファイルもストリーミングシミュレーションできるんだがなぁ・・
>>105の言うとおりtraceとかで確認できるようにするしかないかな。
>>101 VBじゃないんだから、改行エスケープなんていりませんよ。
「;」が来るまでは1行として扱われます。
質問。外部からswfをMCへロードしてそのMCを再生したいんだけど、
MCのpath名「_level0.my_mc.instance**」の数字**の部分が
flashプレーヤー巻き戻し&再生の度にコロコロ変わって
二度目以降はMCを再生できなくなる……どうしたらいい?
名前をつけたらいいんじゃないかな
>>109 名前変えてもダメだった。ターゲットにしたMCの”子”として生まれてしまうから
事後に変えても_nameは変わるけどデバッグのエントリでは相変わらずinstance**
てかライブラリから右クリックでパブリッシュしてたのが間違いだったみたい。
メニューからやる通常の方法ならターゲットにしたMCそのもので生まれてくれた
でも後者でswf吐くと、タイムスライダ付きの再生ソフトとかで
中身見られちゃうんだよね…
>>111 >でも後者でswf吐くと、タイムスライダ付きの再生ソフトとかで
>中身見られちゃうんだよね…
ムービープロテクトとか関係なくってこと?!マジ?
ifにor条件をつけることはできますか?
変数Aが1若しくは3と同値である場合…とか。
>>112 多分マジ。FlashPlayerExってやつ
>115
サンクスコ
PVでメインのフレームの数値をリアルタイムで
表示するクリップを作りたいんですが、できません。
ダイナミックテキストの変数 : count
クリップ上のAS :
1フレーム :
this.onEnterFrame=function(){
count=_root._currentframe;
}
2フレーム :
gotoAndPlay(1);
どこを改善したらよいでしょうか。
>>118 onEnterFrame使うなら、2フレーム目はいらない。stopさせとくだけでok
ダイナミックテキストのパスとかそこらへん怪しいかもしれない。
120 :
118:04/03/20 23:52 ID:???
>>119 ありがとうございました。解決しました。
パブリッシュしないとASって動かないんですね。
初めてなもので・・・(´Д`;)
ASの、配置されたMC⇒メインタイムラインの実行順序のような
知らないと罠に落ちる部分ってどんなのがありますか?
123 :
Now_loading...774KB:04/03/21 11:45 ID:mOM2hxmT
>>121 子ムービーのプリローダを親側で作成するに当たっての注意点
>>124 ソースは宝だしおいそれとクレ、とか言うもんじゃありません。
swfからテクを盗め!
>>125 アクションゲームの基本なのに、どうやって盗めと?
しかも
>>60さんは、ソース欲しい人あげるって
書いてんだから、それに甘えてるだけですけど。
オレが本当のクレクレ房ならクレクレ専門スレに逝ってますよ。
わかったらそこ興奮しない
↓次質ドゾ
128 :
Now_loading...774KB:04/03/21 13:08 ID:An74i7MJ
ActionScript を使って、文字を出力させたいのですが。
(trace()じゃなくて、flashの画面の表示させたい)
お願いします。
130 :
128:04/03/21 13:20 ID:An74i7MJ
代入って、どうやるんでしょうか。
(ダイナミックテキスト作って、インスタンス名書いて・・・次は?)
便乗質問ですが
_x とか _xscale とか _rotation とか
こういう予約されている変数(パラメータ)を
目的別にわけた(目的から検索できるような)
サイトって無いでしょうか?
>>126 >ソースほしかったらあげまつ。
ここ飛ばしてました。
スミマセンデシタ・・・_| ̄|○
133 :
Now_loading...774KB:04/03/21 14:32 ID:3IfUlMEr
>>132 いえいえ、いーんですよ。
>>60さんは、最近いないんですかね?
ソースが欲しかった。
自分でも、一応途中まで作ったんですが、
ジャンプしたまま下に落ちないんです。
しかも、もっかいジャンプするとキャラが消えるし・・・_| ̄|○
134 :
Now_loading...774KB:04/03/21 14:35 ID:V0d+eivV
普段は止まった状態で表示されてるんだけど、
ある変数がtrueになった途端に再生されて、
falseになったらまた止まるムービークリップ
ってのを作りたいんですが、どうすればいいでしょう。
ifでやってみたんですけど、一回止めちゃうと、
そのスクリプトも止まっちゃうみたいでうまくいかないんです。
馬鹿すぎる。
136 :
Now_loading...774KB:04/03/21 16:11 ID:0Yqwf3Ly
now loadingの作り方で、
すべてのシーンのすべてのフレームを読み込んで
再生させる方法が解りません!
超初歩でスミマセンが教えて下さい。
137 :
136:04/03/21 16:17 ID:0Yqwf3Ly
補足です。
フラッシュのバージョンは5です。
以下は試しましたが、
この方法だと最初のシーンしか読み込まれないような気がしてます。
-----------------------
if (_framesloaded<630) {
gotoAndPlay (1);
} else {
gotoAndPlay ("start");
}
-----------------------
どおっすか?
とりあえずfla5の初歩質はとある危険性から答える気にならない
>>134 常に監視=enterframe
>とある危険性
自分も5使ってるから気になる・・・。
致命的なバグとかあるんでしょうか?
>>139 いまどき5で初心者は割れって言いたいんだろ。
5が標準で開発しなきゃならない職場とかもあるのにな。
引き篭もりの発想だから気にすんな
>>138 イースターエッグの事でつか?
>>140 now loadingの作り方わからない漏れでもそこに就職できそうでつね
いや、5使うのは、切り替えタブがあるのと
MXより軽い、アプグレードする必要がない、金がないなど。
最新プレイヤーでも見られるように工夫してれば、
問題はないと思うぞ。
あと5はセキュリティ的に弱い部分があったっけ。
ウィルスやられてるとうんぬんな
>>5が標準で開発しなきゃならない職場とかもあるのにな。
仕事として使うなら教則本読んで勉強ぐらいする。
教則本読んで勉強したからこそ仕事に就けるはず・・・
>>136 if (_framesloaded<630)
の630って数字が何かわからないんだけど、
if (_framesloaded < _totalframes)
かな?ASだとシーン単位で考えるほうが稀
10フレーム画面を振動させる、
25フレームで画面を白くフェードアウトさせるのような、
一定時間で終わりの効果を出すには
そういうことを専用にするMCを貼り付けておいて、
そのMCを呼び出して、そのMCのタイムラインで行うやりかたで正解ですか?
sindouMC.f_Buruburu(10);
whiteOutMC.f_toWhite(25);
て感じで。
148 :
136:04/03/22 08:56 ID:???
>>146 レスありがとうございました!
if (_framesloaded < _totalframes)でためしてみまつ。
ちなみに630という数字は、
最初のシーンの総フレーム数。
FLASH MXです。
カーソルを乗せると再生されるムービーはどう記述すればよいのでしょうか?
ループして動いている画像にカーソルが触れると拡大(徐々に大きく)されて、
カーソルが離れると縮小しながら、また元の大きさに戻るというのを作りたいのですが、
なかなかうまくいきません。
参考に↓のサイトの人物紹介のページにあるような、
カーソルが触れると円が拡大縮小されるような感じです。
ttp://www.joshibi.ac.jp/
アクションゲームの基本みたいなのを投下してくれた
>>60さん、至急ActionScript 物凄い勢いで解凍するスレ その2まで
お越し下さい。
151 :
Now_loading...774KB:04/03/22 17:57 ID:lb8fjUJV
151>FLASH MX 2004を使っているんですが、 …
↓
152>じゃばすぷりくと
↓
153>それは、分かります
結論:こいつ何も分かってねぇーーーッ!
155 :
153:04/03/22 23:05 ID:???
>>149 > ループして動いている画像にカーソルが触れると拡大(徐々に大きく)されて、
> カーソルが離れると縮小しながら、また元の大きさに戻るというのを作りたいのですが、
そのまま書けばいいじゃないですか。
function 拡大(){
//_xscale,_yscaleを増やす
}
function 縮小(){
//:_xscale,_yscaleを元の比率まで戻す
}
onRollOver = function() {
this.onEnterFrame = 拡大;
}
onRollOut = function() {
this.onEnterFrame = 縮小;
}
>>155 ASね、アクションスクリプトね。
俺は無知だから検索あるのみだ、ガンガレ
なぁ、actionscript書くのにエディタ何つかってる?
Flashのやつって、画面せまくてすげーみにくい。
>>160 そんな贅沢 一度でいいから してみたい
>>159 MeadowのC++モードで書いてファイルに書き出し、タイムラインの1フレーム目に
#include "hoge.as"
とか書いてる。C++モードだと無名関数の中でswitch-case文使った時に
少しインデントがずれるけどそれ以外は大抵うまくいくし、abbrevで補完したり
できるので快適。
SciTE|Flashの日本語版ない?
164 :
159:04/03/23 14:33 ID:???
>>162 サンクス!
私もMeadowつかってるので、その方法を使わせて貰いまつ。
そういえば、Meadow なら M-/を使うのも便利。
#include "filename.as";
って最後に;つけちゃいけないんだ。
マリオのような横スクロールのゲームを作っている人は、
地面や敵のあたり判定はどうやっているんですか?
hitTestを全部に行うのは現実的じゃないし。
あたり判定用の配列を作って
配列の数値の変更を繰り返しているんでしょうか?
>>166 地面のブロックとか敵とかのonEnterFrameで
this.hitTest(マリオ);
ってしたらどうかな?
いや、単なる無責任発言です。スミマセンスミマセン
>>162 質問
includeするファイルのエンコードは、UTF-8でいいのでしょうか?
170 :
169:04/03/23 20:37 ID:???
自己解決
Shift_jisなのね。
ダイナミックテキストの.textに"〜"が含まれた文字列を入れると
文字だけどうしても化けるのですが、これはなんとかして避けられないものでしょうか?
172 :
171:04/03/23 20:42 ID:???
すみません、訂正します。
文字だけどうしても化けるのですが
↓
この文字(〜)だけどうしても化けるのですが
>>173 いいえ、環境書いていませんでしたね。すみません。
WinでMX2004のPro.を使ってます。
Winで"〜"は化けませんが、Macで表示すると化けてしまいます。
>>157 ありがとうございました<(_ _)>
早速やってみます!
176 :
Now_loading...774KB:04/03/24 05:05 ID:dIarsf3J
はじめまして。質問させてください。
FLASH MX2004 ProのUIコンポーネントの「TextArea」の内容(.text)
の改行は全て「\r」なのでしょうか?
事のいきさつは、テキスト内容を一行ずつ配列にいれようと思い、
「split("\n")」で一生懸命やってもだめでした。
で、一回trace(escape())して見たら、%0D.. CR でした。
自分のマシンでテストする分には「\r」にしてそれでOkだったんですが
どうも腑に落ちないので....他の環境でもこうなるのでしょうか...?
178 :
Now_loading...774KB:04/03/24 13:33 ID:G1d2x4cy
ArrayとString、タイプライター見たいな文字の表現をするには
どっちを使った方がやりやすいですか?
もしよかったらその方法も教えてください。
array
180 :
Now_loading...774KB:04/03/24 13:50 ID:G1d2x4cy
なんでそう思うんですか?
よかったら具体例もあげて教えてください。お願いします
>>178 で、今度はどのスレで質問するんだ?
「arrayを使えば良いことは分かるのですが、どう書いたら良いのか分からなくて・・・」
182 :
Now_loading...774KB:04/03/24 13:58 ID:G1d2x4cy
(´-`)。o(何でケンカ売られてるんだろう・・・・)
本当のこというとArrayもStringもどんな風に使ったらいいかわかんないんですよね
すみませんがまず両方の機能から教えてくれませんか?
183 :
181:04/03/24 14:15 ID:???
>>182 うむ、ケンカ売ったのは「なんでコイツこんな状態でpro買ったんだ?」
という疑問からなのだよ。
AS辞典見てみろよ。結構詳しく書いてあるぜ。
「Array クラス」と「String クラス」の項目を見れば猫でも分かるな。
いや家のはProじゃなくて無印MXなんですよね
これって最初に
*** = new Array()
みたいな感じで作りますよね?
で、
*** = "123456789"
みたいに打っといて
それを一文字ずつタイプライターみたいに表示するようにするにはどうすればいいのかなーと
とりあえず配列版
テキストフィールドにtfLogという名前をつける
フレームに下記スクリプトを貼り付ける
//初期化
abc = new Array(1,2,3,4,5,6,7,8,9);
counter = 0;
this.onEnterFrame = function(){
if(counter<abc.length){
tfLog.text += abc[counter++];
}
}
String版
テキストフィールドにtfLogという名前をつける
フレームに下記スクリプトを貼り付ける
//初期化
abc = "123456789";
counter = 0;
this.onEnterFrame = function(){
if(counter<abc.length){
tfLog.text += abc.charAt(counter++);
}
}
ご解説ありがとうございます
これは長い文章を打つ場合にはStringを使った方が , を打たなくて手早くすみますよね?
そうですね、単純に"文字列"をタイピングしてるように表示したいのであれば、
String型を使うのが無難だと思います。
それを使って、タイピングの速度を変化させることや
一文字出るごとに効果音を再生することはできますか?
できます
速度変化は1フレームだけでやりたいのであれば、カウンタ変数を追加し、ifの判定部分を変えます
複数フレームでやりたいのであれば、_currentframeを使い、ifの判定部分を変えます
後者の例)if(counter<abc.length && _currentframe % 5 ==0)
これで5フレームごとに文字追加
効果音再生はさきほどのifの中に書けばよろしいかと思います
細部まで教えていただいてどうもありがとうございます
ためしてみます
親切な人がおるなー
便乗質問、2byte文字をタイプするASは
何か工夫しないとダメですか?
String型は2byte文字も1byte文字も関係なく1文字として扱うので大丈夫かと。
194 :
192:04/03/24 16:15 ID:???
ありがとうございます。
まだそこまで理解できてないのですが、
今後の参考になりますた
スマソ。ゲーム大会に出ることにしたので今はflaさらせなくたってしまった。
流石に同じ大会出るやしにパクられちゃうと困る。
ヒントだけ教える。
ステージムービークリップ(以下ステージ)内に主人公用mcと固定床mcをつける。
主人効用mcの落下速度を求めhittest(_x,_y,1)で接触するか予測。
もし接触するならちょうど床にたつようにmcがたつようにする。
しばらくしたらすり抜け、床の判定部分だけ詳しくAS教えるからまって。
天井判定、壁判定、可動リフト、スクロールは自分で考えるorFlashGameFestival'04まで待つ。
あれ、トリップ変だな。ついでに普段のは◆2TENKK.nkYのものでつ。
満喫なので旧トリップのつもりが。
var arrayC = new Array(1,2,3);//配列作成
trace("arrayC_"+arrayC.toString());
var arrayD = testFunctionA(arrayC);
trace("arrayD_"+arrayD.toString());
var arrayE = testFunctionB(arrayC);
trace("arrayE_"+arrayE.toString());
arrayC[1] = 4;
trace("-----arrayC[1] = 4");
trace("arrayC_"+arrayC.toString());
trace("arrayD_"+arrayD.toString());
trace("arrayE_"+arrayE.toString());
function testFunctionA(array){
var arrayReturn = array;
return arrayReturn;
}
function testFunctionB(array){
var arrayReturn = new Array(array[0],array[1],array[2]);
return arrayReturn;
}
以上のスクリプトを動作させると
arrayC_1,2,3
arrayD_1,2,3
arrayE_1,2,3
-----arrayC[1] = 4
arrayC_1,4,3
arrayD_1,4,3
arrayE_1,2,3
という結果が得られました。
配列2 = funciton(配列1);
↑の式の場合、function内で配列1の内容からnewを使って配列を作成し、
それを返した場合は配列2にその新しく作った配列の"内容がコピー"されるということでしょうか?
>>198 大げさに言うとポインタの感覚なので、
掴むまでは誰もが混乱するものだから、じっくり考えてみてください。
ちなみにその例だと、
関数を通さないで同じことやっても、結果はやっぱり同じだと思います。
var arrayC = new Array(1,2,3)
var arrayD = arrayC;
var arrayE = new Array(arrayC[0],arrayC[1],arrayC[2]);
この場合、arrayDにarrayCを代入したとしても、
arrayDはarrayCそのものを意味します。
(「arrayCに違う名前を付けただけ」って考えると分かりやすいのかわかりにくいのかw)
なんで、arrayC[1]の値を変えるとarrayD[1]も変わります。
>>199 なるほど、目から鱗です!
わかりやすい説明ありがとうございました。
そして200get!
if (jump == true) {//jumpのとき
if (jp<0) {if (jp<-24) {
if (_parent.mainsta.yukaset.hitTest(_x, _y+24, 1)) {
jp = -24;}}
if (jp<-16) {if (_parent.mainsta.yukaset.hitTest(_x, _y+16, 1)) {
jp = -16;}}
if (jp<-8) {if (_parent.mainsta.yukaset.hitTest(_x, _y+8, 1)) {jp = -8;}}
if (_parent.mainsta.yukaset.hitTest(_x, _y-jp, 1)) {while (_parent.mainsta.yukaset.hitTest(_x, _y-jp, 1)) {
jp++;}
jump = false;
_y -= jp;
jp = 0;
}}
if (jump == true) {
_y -= jp;
jp -= g;
}
}
上のスクリプトがジャンプしているとき1枚のムービークリップ上の地形シェイプを判定するスクリプト。
if (jump != true) {
//hittestを少なくするための関数
if (_parent.mainsta["yuka"+yukai_o].hitTest(hp_d)) {
i = yukai_o;
} else {
for (i=0; i<_root.yukamax; i++) {
if (_parent.mainsta["yuka"+i].hitTest(hp_d)) {
break;
}
}
}
} else {
for (i=0; i<_root.yukamax; i++) {
if (_root.mainsta["yuka"+i].hitTest(hp_d)) {
break;
}
}
}
これは、可動床などのMCの存在を調べるスクリプト。
以上。
>>60のスクリプト一部公開でした。
このスクリプトについてわからないことがあったら聞いてください。
(とはいってもうまく返答できるかなぁ.......)
FLAファイルは5月までまってね。
他の情報ほしければメールしる。ゲーム祭参加者以外ならFLA晒すかも。
(メルアドについてはまた後日別の床に描くかも。ここには描かないが)
でもW@REでsothink落とせばソース丸見えな罠。
>>177 お礼が遅れました。ごめんなさい。ありがとうございました。
>>203 fla板のローカルルールも見えんのか。
お疲れ
206 :
Now_loading...774KB:04/03/25 03:27 ID:4Z/lo8Ej
ちょっと悩んでおります お助けを。
不特定多数の細かなブロックを敵、敵の弾、自機、自機の弾等が当たった時に
破壊(消去)したいのです。
ブロックはattachMovieで割り当てております。
ブロック、敵、敵の弾はたくさんあるのでforでhitTestをすると遅くて話になりません。
何か良い方法はないでしょうか? みなさんはこういう時どう対処しているのでしょうか?
if ( this.hitTest()) 〜〜
↑のように相手ターゲットを指定しなくても判定してくれればいいのに・・(涙)
>>206 hittest以外で遅くなっている部分を極力減らす。
アルファやシェイプなど。塗りのグラデを使わず、pngで代用
あえてfpsを30まで落とすことで、ブラウザの負担を減らす。
攻撃方法をレーザー、ひとかたまりの弾幕など、
少しでも軽くなるように演出から工夫する。
hitTest自体では
あんまり玉をバラまかない。
玉と敵の数が一定数を超えたらもう出てこなくする処理などをする
画面を16のエリアに分けて、自機のいないエリアでは、
弾のhitTestをさせない。
(諦めてjavaアプレットで作る<最強
他に何かあるかな?
>>206 FLASHでmcは100個ぐらいが限度だと思え。
fpsはAS系では30がふつう。60はFLASHでは無理。
どうしても60fps or弾100個以上使いたいならJAVAかC++やれ。HSPでもイイかな。
後、弾にアルファかけるなんて馬鹿。自機、敵ぐらいにしておけ。
draw関数はあまり使わない方が吉。かえって遅い。
FLASH(*.swfできれば*.fla)見せれば詳細にアドバイスできる。
ちなみに言っておくとi++とhittestでは3倍ぐらいしか速度は変わらないはずなので
複雑なスクリプトでhittestを代用しようとしても無駄だと思う。実際に実験してみたし。
210 :
207:04/03/25 14:56 ID:???
60さん厳しいね・・・
fpsやアルファは漏れの想像なんで。
あと、基本的な質問スレでシューティングの弾が連射できないって
言っている奴と206は同一じゃないよな?
前から思ってたんだけど、
hitTest使うのと、座標を適当に計算してやるのどっちが速いですかね?
212 :
206:04/03/25 16:00 ID:???
みなさんレスありがとうございます!
説明が足りなかったようで・・。
ブロックとは10X10pxの小さなモノでして それをたくさん壁、障害物の
ように見立てて配置しております。
・・で自機や敵、敵の攻撃で破壊しながら進める・・といった感じでしょうか。
自機のミサイルだけならサクサク破壊して進めますが敵にもとなるとキツイです。
とにかくみなさんのアドバイスを元に演出から考え直してみます。
何か解決策を見つけたら報告に参ります。
>>212 そりゃ重くなるのも当たり前。
特に固定障害物は根本的に判定方法変える必要有り。
固定障害物MC.hittest(調べるx座標,調べるy座標,1)
を使ってその座標におけるMC内のシェイブの有無を調べる方法がベスト。
敵弾はそれでよし。でも10*10の敵弾ってふつうにでかくない?
画面自体を小さくするのも一つの手。
毎回hittestするよりかは
ドロップターゲット参照した方が軽い処理になると思われ
>213
10*10はブロックでしょ。折角アドバイスするならちゃんと読もうよ
geoでは*.flaだと拒絶されるのでzipでうpしなおしました。
失礼。
>218
中身空っぽなんですが…
圧縮ソフトの不良が原因でした。
名前を8文字以内にしたらちゃんと圧縮できた。
HPにうpしたところ正常にDL&解凍できました。
今度こそ大丈夫なはず。
外にあるjpgをloadMovieでMCに読み込むじゃない?
で、そのjpg入りMCを例えば5つ複製すると、
やっぱり5回同じjpgを見に行っちゃう?
なんかそんな感じするんだよね。試してみると妙に遅いっちゅうか。
jpgを一度きりloadMovieで読むだけで、
jpg入りMCを複製するにはどうしたらいいんでしょか?
読み込んだjpgをmaskで切り裂いて、個々のMCをバラバラに動かしたりしたいんだけど...。
>>221 全く同じ質問が結構前にあったっけ。
それ確かどうあがいても無理だったんだよなぁ。不便だよね。
なんかない?>>賢い人〜
前に同じ話が出たときは、無理ってことだったわけですが、
複数のMCから同じ変数とか配列を参照したい場合
_root.commonObj = new Object();
_root.commonObj.commonArray = new Array();
mc0.cmnObj = new Object();
mc0.cmnObj = _root.commonObj;
mc1.cmnObj = new Object();
mc1.cmnObj = _root.commonObj;
これで同じものを参照できるわけですよね。
これの応用でできないもんですかねえ。
ガイシュツのASネタのまとめサイトの需要ある?
個人的なリファレンスがたまったので
人にも読めるように整形してみようかなと思ってるのだけど
>>224 AS苦手な漏れとしては
ぜひお願いしたい所です。
>222,221
お返事ありがと。うーん。やっぱり俺の力ではムリみたい。無念。
>224
すっごい需要あると思う!
前スレからみてたわけじゃない自分にとっては無茶苦茶嬉しい。
ASを使った凄いサイトのスレや、
リンク集ご存知でしたら教えてください。
229 :
Now_loading...774KB:04/03/28 05:50 ID:3w33uBpW
変数に文章を入れてから
その文章を1文字ずつ分割して配列に入れたいんです。
splitを使うというところまで解ったんですが
具体的にどう書いていいのかよくわかりません。
誰か教えて下さいお願いします。
>>228 >AcitonScriptのことなら
>初歩的な質問でもなんでもおk
>見れない、保存したい、flashを作りたいはスレ違い
>●質問する時は自分の環境を書く
>●質問はものすごい勢いじゃなくて結構
>●自分が試してみた処理を書く
>関連スレ、サイト、書籍は
>>2-5あたり
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ASを勉強し始めたばかりの者です。環境はMXです。
サウンド調節をしたいのですが、
つまみを下にドラッグして音量を下げることできたので、
今度はつまみを上にドラッグして音量を上げたいと思ったのですが、
なんどやってもうまくいきません。
下のASにどう書き足せばよいでしょうか?
下のASも正しく合っているかどうかも不安ですが…。初歩的な質問ですみません。
on (press) {
startDrag("", false, left, top, right, bottom);
dragging = true;
}
on (release, releaseOutside) {
stopDrag();
dragging = false;
}
onClipEvent (load) {
top = _y;
left = _x;
right = _x;
bottom = _y+15;
}
onClipEvent (enterFrame) {
if (dragging == true) {
_root.s.setVolume(50-(_y-top+35));
}
}
>>231 フレームで音をセットするのではなく
soundメゾットから音を発してないと調整できないのでは。
サンプルライブラリのボリュームオブジェクトをそのまま使えばヨロシ。
標準のサンプルライブラリのボリュームオブジェクトの中のスクリプトを
以下のように書き換えればいいかと。
これならフレームからの発音でも調整できる。
top = vol._y;left = vol._x;right = vol._x;bottom = vol._y+100;level = 100;
_root.s = new sound();
//フレームから音でも調節できるようにする
vol.onPress = function() {
startDrag("vol", false, left, top, right, bottom);dragging = true;
};vol.onRelease = function() {
stopDrag();dragging = false;
};vol.onReleaseOutside = function() {
dragging = false;
};this.onEnterFrame = function() {
if (dragging) {level = 100-(vol._y-top);
} else {if (level>100) {level = 100;
} else if (level<0) {level = 0;
} else {vol._y = -level+100+top;
}}_root.s.setVolume(level);
};
FlashMX2004ですがloadMovieで画像が読み込めません
onClipEvent(load){
this.loadMovie("hoge.jpg");
}
どこか間違ってますでしょうか?
ガンバレ!!
>>232>>233 ご返信ありがとうございます。
またASのほうも書いて頂きありがとうございました<(_ _)>
ライブラリのボリュームオブジェクトは使ってませんでした。
早速試してみます。
function hogehoge() {
if(条件){ return; }
長々とhogehogeする
}
最初の条件で、hogehogeする意味がないから、終わり
という目的で、return使ってもいいんですか?
>>237 その方がインデントが深くならなくて、ソースが見やすいです。
239 :
1/2:04/03/31 14:46 ID:lAGWnMdT
FLASHで格闘ゲームを作ろうと思い、とりあえずキャラクターの移動を組もうと思い、
下のようなAS(左右のキーで左右の移動、上のキーでジャンプを行う)を高さ100pxのMCに書いてみました。
しかしいざムービープレビューしてみると、ジャンプした時に地面にMCがめり込んでしまいます。
function field()で200px以上は下に行かないはずなのに。。。
ジャンプしてもこのMCが地面にめり込まないようにするにはどうしたらよいのでしょうか?
環境は、FLASH MX 2004をWindowsXPで使用しています。
長レス失礼しました。どうかよろしくお願いいたします。
onClipEvent (load) {
speedx = 0;
//横移動
speedy = 0;
//重力とか
jumpcheck = false;
function field() {
//地面
if (this._y>=200) {
this._y = 200;
this.jumpcheck = false;
}
}
240 :
2/2:04/03/31 14:47 ID:lAGWnMdT
function move() {
//常に移動
this._x += speedx;
this._y += speedy;
}
function keymove() {
//キーボードでspeedxを操作
if (Key.isDown(Key.RIGHT) && this.speedx<=3) {
this.speedx += 1;
} else if (Key.isDown(Key.LEFT) && this.speedx>=-3) {
this.speedx -= 1;
} else {
this.speedx *= 0.8;
}
}
function gravity() {
//重力
if(this.jumpcheck) {
this.speedy = this.speedy * 0.99 + 0.98;
}
}
function jump() {
if (Key.isDown(Key.UP) && this.jumpcheck == false) {
this.jumpcheck = true;
this.speedy -= 15;
}
}
241 :
Now_loading...774KB:04/03/31 14:47 ID:lAGWnMdT
}
onClipEvent (enterFrame) {
this.field();
this.move();
this.keymove();
this.gravity();
this.jump();
}
>>241 落下前に足と床MCまでの距離を測定する。もし
1フレーム当たりの落下速度>床までの距離
ならジャンプ状態を解除し足の高さ=床
になるようにする。
なお、この仕組みは
>>60でも用いられている。
243 :
kana:04/03/31 16:14 ID:F5x2lDtX
外部swfの読み込みかたを教えて下さい。
1番簡単で,分かりやすいのを出来れば知りたいです。
ちなみに私がトライしたのは
on (press) {
_root.BEAT.loadMovie("BEAT.swf");
}
です。
1つめのBEATはシンボルの名前で,
そこにswfをのせようと思っているやつ。
2つめのはswfのファイル名です。
244 :
239:04/03/31 17:40 ID:lAGWnMdT
>>242 指示のように下のようなプログラムを追加したところめり込まないようになりました。
function mericomi() {
if (this.speedy >= 0) {
this.kyori = _root.FIELD._y - this._y;
if (this.kyori <= this.speedy) {
this._y = 300;
}
}
}
長い間悩んでいたので嬉しいです。ありがとうございました。
>>238 トンくす
>>243 on(press)が怪しい?
押されているときは、〜するって意味だから。。。
メインのタイムラインにloadMovieしてくれるfunctionつくって、
そこに一回だけ指示出してみるとか。
246 :
245:04/03/31 23:29 ID:???
>243
マルチかよ。鬱
暗闇で光を表現したいのですがどうやって作ったらいいのでしょうか?
マウスの向きにゆっくり回転して追尾するものを作ったんですが、
onClipEvent(enterFrame){
var myRadian = Math.atan2(_y-_root._ymouse, _x - _root._xmouse)*180/Math.PI ;
rolltest = (myRadian - _rotation ) * .1//回転速度。少ないほどゆっくり
if(-20 < rolltest && rolltest < 20){ roll = rolltest;}//高速回転&逆流防止
_rotation += roll;
}
追尾したあと、少し行き過ぎて、しばらく往復を繰り返して、
最後に止まるにはどうしたらいいんでしょうか?
秤の針のような動きをさせたいのですが。
質問です。
attachMovie と
1フレ空this.stop();2フレで出現。
どっちがCPUにやさしいですか?
初歩的な質問ぽいんだけどききます。
function rotMC() {
this.rotV = 2
}
rotMC.prototype=new MovieClip();
rotMC.prototype.onEnterFrame=function() {
this._rotation+=this.rotV;
}
Object.registerClass("rot1",rotMC);
Object.registerClass("rot2",rotMC);
上のようにクラスを定義してそれをMCに引き継ぎます。
んでこの、「rotV = 2」を変更するにはどうしたらいいの?
この場合でいえば、MC「rot1」とMC「rot2」の回る角度を
元をいじることでいっぺんに変わったり出来ないものか、と。
そもそもクラスに対しての認識が間違ってるのかなぁ....
>>251 いろいろ方法はあると思うけど、
漏れも便乗質問したいのであえて非常にトリッキーな方法をご紹介。
function rotMCBase() {
this.info = new Object();
this.info.rotV = 2
}
rotMCBase.prototype = new MovieClip();
rotMCBase.prototype.onEnterFrame = function() {
this._rotation += this.info.rotV;
}
function rotMC() { ; }
rotMC.prototype = new rotMCBase();
Object.registerClass("rot1", rotMC);
Object.registerClass("rot2", rotMC);
これで
<インスタンス名>.info.rotVを変更するとあら不思議。
ちゃんと試したんで間(MXでは)違いなく動くと思います。
識者の人に聞きたいんですが、
これってFlashMXのバグって分けじゃないですよね?
MX2004では解消されてたりしますでしょうか。
>248
適当に考えて試してみたらちゃんと動かなかったけど、
参考程度にはなるだろうから。
if ( 追尾._x < マウスx座標) {
x軸速度 += A;
} else if (追尾._x > マウスx座標) {
x軸速度 -= A;
}
x軸速度 = x軸速度/B; //この行を消すと永久振り子になる
追尾._x += x軸速度;
y軸についても同様に。
二点間の距離がA以下になるとMCがガクガクブルブルします。
速度の正負が反転するときに、二点間の距離にあわせて
Aの値を減らせば上手くいきそうな気もする。
>>250 結局一定数のインスタンスを出現させるのであれば、大差ないと思う
>>251 function rotMC() {}
rotMC.prototype=new MovieClip();
rotMC.prototype.rotV = 2;
rotMC.prototype.onEnterFrame=function() {this._rotation+=this.rotV;}
共通で使いたいものはprototype側に用意。
変更したい場合には、rotMC.prototype.rotV = 変更後の値
this=インスタンス側、prototype=クラス側
という単純な認識で。
>>252 バグじゃないよ。そう動くように書いてあるだけ。
それがバグと思う理由って何?
もう一度頭の中を整理することをお勧めする。
>>256 スーパークラスのコンストラクタが定義時に一度しか実行されないってことに、
なかなか気付きませんでした。
確かに、見たまんま解釈すればそうなんですが、
気付いた後も、何かこう、不安で.....
prototype型のクラス継承ってのがやっと腑に落ちました。
アリガトン
258 :
248:04/04/01 22:25 ID:???
>>253 とりあえずそれっぽく追跡&往復させてみました
xMovePlus = 1;//加速力
xMasatu = 0.95;//摩擦。1でなし。0に近いほど大きい
thisX = Math.floor( this._x );
xMouse = Math.floor( _root._xmouse );
if ( thisX < xMouse ) {
xMove += xMovePlus;
} else if (thisX > xMouse ) {
xMove -= xMovePlus;
}
if(xMove*xMove < xMovePlus*xMasatu ){xMove = 0;}//ブルブル避け
else { xMove *= xMasatu; }//摩擦かける。この行を消すと永久振り子に
this._x += xMove;
ブルブル避けの部分の条件はかなりいい加減で
多少無茶な加速、摩擦の値で動かすとすぐ、ブルブルします
移動力が少なくなりすぎたらって0にするという条件以外に
いい書き方あったら教えてください。
>252,255
ありがとう!わかりました!
にしてもみんなすごいなぁ...。
>>258 それでいいと思うけどなあ。
現実の物理現象にのっとって考えるなら、一定速度以上なら動摩擦係数を使い、
一定速度未満になったら大きな静止摩擦係数を使うというやり方になるでしょう。
更に、速度が上がりすぎた場合は空気抵抗をかけてやって最高速度を
コントロールするなどの発展もアリ。
クラスについて251で質問したものです。
またわからなくなってしまいました....
function classSet() { }
classSet.prototype=new MovieClip();
classSet.prototype.rotV = 5;
classSet.prototype.myName = ????????????._name;
classSet.prototype.fRotation = function() {
trace(????????????.myName)
this.onEnterFrame=function() { this._rotation+=this.rotV; }
}
Object.registerClass("ID_test",classSet);
Object.registerClass("ID_test2",classSet);
this.onMouseDown = function() { classSet.prototype.fRotation(); }
255さんが答えてくれたコードとほぼ一緒なんですが、
自分のインスタンス名(_name)を調べたい場合には、
どうしたら良いのでしょうか?
?????のところがありますが、大体こんな感じで調べられるかと
思ってたんですがムリでした。
ようはprototypeを使った場合のMCのプロパティの調べ方なんですが...。
>>261 prototype側でインスタンス側の何かを知りたいならthisにするだけ
_rotationは使ってるのに、_nameを使わないのは何故?
classSet.prototype.fRotation = function() {
trace(this._name);
this.onEnterFrame=function() { this._rotation+=this.rotV; } ;
} ;
プロパティ作りたいならaddProperty使ってもいいけどなんか無駄ぽ
classSet.prototype.addProperty("myName",function(){return this._name;},null);
mx2002だと、この辺はクラスファイルっていう形式で書けて混乱
しにくくなってるから、長く使うなら移行したほうがよさげ。
>262
レスありがとうございます。
mx2004はちょっと僕のマシンでは動作がきついんでw
ところで、試したのですが、それだとundefinedがでてしまうのです。
例えばこの書式だと名前が調べられます.....
classSet.prototype.fRotation = function() {
this.onEnterFrame=function() {
trace(this._name);
this._rotation+=this.rotV;
}
}
んが、先ほどの
classSet.prototype.fRotation = function() {
trace(this._name);
this.onEnterFrame=function() {
this._rotation+=this.rotV;
}
}
これだと調べられないみたいなんです。
262さんがその書き方で出来るというなら、
自分の書式のどこかが間違ってるってことですよね。うーん。
>>263 あー
this.onMouseDown = function() { classSet.prototype.fRotation(); }
という呼び方だから、thisにはclassSet.prototypeが入ってるね
prototypeに定義したメソッドは普通はインスタンスから呼ぶから
そこを俺が勘違いしてた。想定してたのは
classSet.prototype.onPress = function() { this.fRotation(); }
のような使い方ね
onEnterFrameは個々のインスタンスから呼ばれるからthisには
個々のインスタンスが入ってる
直接prototypeに定義してあるメソッド(クラスメソッド)に処理対象を
渡したい場合は引数で渡すのが普通
classSet.prototype.fRotation = function(a) {trace(a._name);}
で
this.onMouseDown = function() { classSet.prototype.fRotation(インスタンス); }
で呼ぶ
つーか、クラスの仕組みの勉強ならいいけど、
無理にクラスを使おうとして、変な使い方をしようとしてるように見える
具体的に、何をしたいか日本語で整理できてる?
煽りとかでなく、それができていないと汚くて使いにくいだけのクラスになるよ
>264
ありがとう!ようやくすっきりしました。
>265
すまんです。手探りでやってるので...。
やりたいことってのは、
一つの命令だけで特定された複数のMCのプロパティを動かすってことなんです。
ただその命令自体は任意に実行されるものなんで、
毎回、今MCのプロパティはどうなってるか、っていうのを知りたい。
んで色々とわからなかったんです。
前までは、複数のMCにfor文で一気に命令をだしたりして補っていたんですが、
(scriptだけが書いてある空のMCをちりばめたりしながら)
classを使えばもっと効率よく出来るのでは、と思ったんです...
>>266 インスタンスの個数と効率化の観点のみから見れば、クラスを使うと便利な点は
10個のインスタンスがある場合に10箇所に関数を書く(あるいは作成する)
のではなく、1箇所にまとめられる点と、for文を見かけ上意識しなくても良くなるだけかと
10個のインスタンスに命令をしたければ、10回命令する以外に方法はないと思いますよ
そんな幻の銀の弾があるなら俺も知りたいです
な、なんだこいつらの戦闘力は・・・ぅわ(スカウター爆発
2004持ってない人にはクラス関係ないですよね?
覚えなくても大丈夫ですよね・・・
>>266 何がやりたいのかがまだ今ひとつよく分からないんだけど、
ひょっとしてクラスごとに固有の変数(クラススタティックな変数)を使いたいということ?
もしそうなら、(クラス名).(プロパティ名) = (値) と書くだけだよ。
function Test(){ this.hoge = 0; } // インスタンスごとの変数
Test.fuga = 1; // クラススタティックな変数
Test.prototype.toString = function(){
return "this.hoge:(" + this.hoge + ")" + " Test.fuga:(" + Test.fuga + ")";
}
var test1 = new Test();
var test2 = new Test();
trace("test1:" + test1);
trace("test2:" + test2);
test1.hoge = 10; // インスタンスの変数を変更
Test.fuga = 100; // クラススタティックな変数を変更
trace("test1:" + test1);
trace("test2:" + test2);
結果は↓
test1:this.hoge:(0) Test.fuga:(1)
test2:this.hoge:(0) Test.fuga:(1)
test1:this.hoge:(10) Test.fuga:(100)
test2:this.hoge:(0) Test.fuga:(100)
270 :
Now_loading...774KB:04/04/03 23:44 ID:3HFC9QV2
外部テキストを読み込んで表示するのは
テキストブロックをMCに変換して
onClipEvent(load) {
this.loadVariables("***.txt");
}
であってますか?
表示できなくて困ってます。
XP、MXです
//***.txt
hoge=yeah&foo=orz&
//MC
Str = new LoadVars();
Str.load("***.txt");
Str.onLoad=function(){
テキストブロック.txt="hoge = "+hoge+"foo="+foo;
}
>>267 せっかくクラスを使うなら、オブジェクト指向的に考えた方がいいと思うけど・・・
273 :
Now_loading...774KB:04/04/05 00:07 ID:df8+9CTu
インスタンス名をしらべるASは?
274 :
Now_loading...774KB:04/04/05 02:38 ID:W8tOPzXL
教えてください。
クリックすると音の出るボタンで、
その音が再生されている間はボタンの「ダウン」状態をキープしていて
再生が終わったら「アップ」状態に戻るというボタンはどのように作ったらいいでしょうか。
●自分の環境:Mac OS X Flash MX
●試してみた処理:
ボタンをクリックすると、「ダウン」状態のボタンがあって音の再生されるフレームへ飛んで、
再生が終わったら元のボタンのあるフレームへ戻る、というのを思い付いてやってみたのですが
挫折しました。
その程度で挫折してたらお先真っ暗だぞ。
>>275 違う方法でできました。
がんばります。
ボタンの上に再生中のMCを配置して、
フレ1で止めて、見えなくしておいて、
クリックされたら、そのMCのフレ2に飛んで、音を再生してもらい、
再生終わったらmcが消えるって感じかな?
関係ないけど、現在の再生中の音の音量を取得する方法ってありますか?
鳴っている音に合わせてスピーカーが拡大するのって作れるのかなと思って。
278 :
Now_loading...774KB:04/04/05 10:15 ID:HVc8bFCa
MX使っております。
コンポーネント定義での項目での値の設定はライブラリにぶち込まないと設定できないんですかね?
MXですが
onEnterFrameを実行解除したい場合はどうすればよいのでしょうか
this.onEnterFrame=undefined;
と
delete this.onEnterFrame;
この二つの違いを教えてください。
this.onEnterFrame = function() {
if (Key.isDown(65)) {
abc.speed = 8;
} else {
abc.speed = 4;
}
if (Key.isDown(Key.UP)) {
abc._y -= abc.speed;
}
if (Key.isDown(Key.DOWN)) {
abc._y += abc.speed;
}
if (Key.isDown(Key.RIGHT)) {
abc._x += abc.speed;
}
if (Key.isDown(Key.LEFT)) {
abc._x -= abc.speed;
}
}
キー入力で移動させて"A"キーを押すと加速するように書いたのですが
左上ナナメのみ加速が効いていないようです。
なにか優先順位などが関係しているのでしょうか
環境はMXです、よろしくお願いします。
>>281 一部高級キーボード以外は、複数キー同時押しが3つくらいまでしかできない
(場合によってはそれ以下)ので、そのハードウェアの物理的制約に引っかかってるのでは?
試しに'A'じゃなくてスペースなりSHIFTなりに変更してみたら?
283 :
281:04/04/05 15:56 ID:???
>>282 SHIFTキーに加速を割り当てたら解決しました。
ありあがとうございます
>>277 漏れは分からない。他の人おながいします
>>278 コンポーネントのパラメータの指定が出来ないとか?
これぐらいしか解読できなかった。スクリーンショットでも
上げれば少しは理解して貰えるかも
>>279-280?
適当にonEnterFramaeしてから、
delete this.onEnterFrame;
trace(this.onEnterFrame);
すると、undefinedだし、一緒じゃないか?
メモリ管理まで言い出すと違うのかもしれないが。
>>280 onEnterFrameハンドラでは違いは無いかもしれない。
ただ、onReleaseハンドラなどでは、deleteを使わないとtabキーを押した時の
黄色い四角の表示が消えない。ここから考えると、undefinedの代入より
deleteを使った方が望ましいと思う。
this.onLoad = function(){
StartX = this._x;
StartY = this._y;
trace("StartX = " + StartX);
Kyori = 256;
s = 0;
Moved = 0;
}
attachMovieで配置するムビークリップの1フレーム目に上記のように
初期化処理をしようとしているのですが、onLoadが実行されていないようです。
なにかやってはいけないことをしているのでしょうか。
環境はMXです、よろしくお願いします。
>>278 定義云々、コンポーネント云々の前に、ライブラリ内に無いムービークリップは
表示できません。入れるのが必須と考えておいて良いと思います。
>>280 this.onEnterFrame=undefined;
は、this.onEnterFrameにundefinedへの参照を代入します。
delete this.onEnterFrame
は、this.onEnterFrameそのものを削除します。
メモリの使用量を考えるか、deleteによる処理のオーバーヘッドを
考えるかによってどちらを使うのがいいかはケースバイケースです。
ただ、例外的なケースとして、継承を使ってクラス側でonEneterFrameを
定義しているような場合には、スコープを遮る目的でインスタンス側の
onEnterFrameにundefinedを代入する事もあります。
Aclass=function(){}
Aclass.prototype.onEnterFrame=function(){this._x++;}
とした時に、このクラスを継承するMCは右に移動しますが
任意の1つだけこの移動を一時的にやめたい場合には
特定のインスタンス.onEnterFrame=undefined;
とするケースです。
>>286 loadイベントは、インスタンスが配置される直前に発生するので
インスタンスが配置されてから実行されるフレームのスクリプトで
定義しても手遅れです。
#initclipと#endinitclipで囲んでください。詳しくはヘルプを参照。
>>288 クラスの定義の構文が変だ。ちゃんと書くと
function Aclass(){}
Aclass.prototype=new MovieClip()
Aclass.prototype.onEnterFrame=function(){this._x++;}
291 :
Now_loading...774KB:04/04/06 19:21 ID:pEbQepeb
AAA= new Sound();
AAA.attachSound( "aaa" );
AAA.setVolume( 100 );
BBB= new Sound();
BBB.attachSound( "bbb" );
BBB.setVolume( 10 );
AAAとBBBの音量を変えたいのに変わらないです。
↑これだとAAAも10になってしまいます。 なんで!?
またはサウンド関係のスクリプトを解説しているサイトを教えて下さい。
>>291 Sound オブジェクトはコンストラクタに引数与えないとダメだったはず。
AAA = new Sound(mc_A);
BBB = new Sound(mc_B);
こんなかんじ。
仕方ないから保守だよばかやろう!
294 :
Now_loading...774KB:04/04/11 21:13 ID:3Ny9UXcc
new LoadVars()で作成したオブジェクトにテキスト入力に入った
P3.14という文字列を格納するとP3%2E14と、半角英数以外
ASCIIコードに変換されてしまいます。
変換させずに格納する為の表記等ご存知でしょうか?('A`)
すみません。少し教えて欲しいのですが、読み込んだ外部swfの
再生速度を2倍にするには、どうしたら良いのでしょうか?
>295
外部swfを30fpsで作っていたら
大元を60fpsにしておけば、倍速になるよ。
fpsを変えることは無理だが
速度制御用のMCつくって、現在フレームが2の倍数なら飛ばすってやれば
倍速になるかもしれない。
>296
ありがとうございます。そんなに簡単だったんですね^^;
頂いたアドバイス通り、解決しました。ありがとうございました。
duplicateして作ったMovieClipが、どのようなタイミングでunloadされる
のかが分かりません。
duplicateしたあと、_rootのフレーム間を後戻りすると、そのタイミングで
duplicateして得られたMCがunloadされるのですが、なぜなんでしょうか。
フレームをジャンプしても、MCを存在させることはできないですか?
>>298 親のMC(ムービースタックを保持しているMC)が消えたから一緒に消えたんじゃない?
300 :
Now_loading...774KB:04/04/18 15:36 ID:WUfha7lM
300げっと
∧_∧
∧_∧ (´J_` ) 豚だよな俺ら
( ´_J`) / ⌒|
/ \ | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ FMV / .| .|____
\/____/ (u ⊃
>>301 一番シンプルなやり方してると思うが?
とりあえず導入してみて、何がしたいのかはっきりさせれ。
それとも5だと動かない部分でもあるのか
303 :
Now_loading...774KB:04/04/19 00:26 ID:e/u84fFB
うんこ食べていい??
ヽ(`Д´)ノ●ダメッ!!
⊂(´・ω・`)
>>301 ああ、push_upとかの変数に設定する部分が冗長だね。
onClipEvent(keyDown)を使っているために、
「現在設定変更コマンド実行中かどうか」をフラグ管理してる。
設定中だけ movieClip.onKeyDown を定義するようにすれば簡潔になるよ。
KeyOption.onKeyDown = function(){ _global.push_up = Key.getCode(); delete this.onKeyDown; }
という感じかな。検証実験してないので間違ってるかもしれないけども。
Key.addListener() を使って必要な時だけリスナー登録する手もある。
ムービクリップのインタスタンス名をストリング形式で格納した
str をつかってムービクリップのメソッドを使いたいのですが
// movie0〜9 ムービクリップのインスタンス名
for(var i=0 ; i < 10 ;i++ ){
str = "movie" + i;
str.goAndPlay(10);
}
当然↑のようなやりかたではメソッド(goAndPlay)を実行してくれません。
何かよい方法を知りませんか?
↓のやりかたはナシで
movie1.goAndPlay(10)
movie2.goAndPlay(10)
・
・
・
eval[str + i].gotoAndPlay(10);
>308
ありがとう!そのやり方で行けました!
310 :
301:04/04/20 19:41 ID:???
311 :
Now_loading...774KB:04/04/20 21:00 ID:aLC3oEnZ
>>310 質問は明確に、あなたが作っている物を知らない誰かが読んでも
分かるように書きましょう。肝心な部分を「シンプルなやり方は」とか
「おかしな事になります」とか抽象的に書かれても分からないよ。
とりあえず、on(keyPress)はオートリピートがかかる、Key.isDown()は
現在の押下状態をダイレクトにチェックするのでリピートがかからない、
というあたりが原因な気がする。
ゲーム製作がんばって。
>>311 そういう時こそデバッガを使おう。
見てみたけど、少し不思議な挙動だね。ソースにバグがあるんだけど、
loadXML2()に存在しないノードが渡された時、存在するノードをflashが
無理やり探そうとして親のノードを見ているらしい。詳しくはよく分からないけど。
で、修正してみた。これなら動くと思う。
function loadXML(myXML) {
var xmlData = myXML.childNodes;
loadXML2(xmlData);
}
function loadXML2(xmlData) {
var len = xmlData.length;
for(var idx = 0; idx < len; ++idx){
if(xmlData[idx].nodeType == 1){
loadXML2(xmlData[idx].childNodes);
}else{
trace(xmlData[idx].nodeValue);
}
}
}
var doc = new XML();
doc.onLoad = function(){
loadXML(doc);
}
doc.load("hoge.xml");
ボタンを連打されると変数が狂って困ります。
ボタンが押されると一定のフレームの間受けつけ不可にするのはどうした良いでしょうか。
"ボタンが押されると一定のフレームの間受けつけ不可"にすりゃいい
ASの知識が自分で思うように伸びず、歯痒い思いをしています。
java scriptがASと似ていると言う話を聞き、java scriptを勉強しようかと思ってます。
java scriptを覚えるとASの知識の+にもなるでしょうか?
318 :
316:04/04/21 11:11 ID:???
>>317 なるほど。ありがとうございます。java script を勉強する事にします。
所で、ASはフラッシュで色々制御出来ると言う事で覚えたのですが、
java script はどのような事が出来るでしょうか?
ブラクラはjava scriptな気がするのですが、
有用な事で何かイメージが付く一つだけで良いので教えてください。
スレ違い気味かもしれませんが、よろしくお願いします。
onClipEvent(enterFrame){
hoge = "質問させてください!
良く、 for で i と言う変数が使われているのですが、
変数は最初に宣言しなくてはいけません。と教わったはずなのに、宣言がされていないです。
それでも普通に動いているのですが、変数の宣言は必要では無いのでしょうか?
それとも何か特別な状況なのでしょうか?
教授ください。よろしくですオス。"
}
>>318 昼アクセス->こんにちは
夜アクセス->こんばんわ
とか、右クリック禁止です、とかブラウザ上でなんでも。
>>319 何で習った?C?ASじゃないでしょ。
ASはほんと手続きのイラナイ言語
参照して変数が存在しなければ上書きつーか宣言されます。
つーか1フレームづつ連投すな!鯖落ちる!delete 319'sEnterFrame
321 :
Now_loading...774KB:04/04/21 13:11 ID:baXhJ1+Y
>>313 ありがとうございます。どうも釈然としませんが・・・。
とりあえず完成品を納めます。汎用性が高いスクリプトだと思うので、ご自由にどぞー。
function loadXML(path,myXML) {
var xmlData = myXML.childNodes;
loadXML2(path,xmlData);
}
function loadXML2(path,xmlData) {
var len = xmlData.length;
for(var idx = 0; idx < len; ++idx){
if(xmlData[idx].nodeType == 1){
var path2 = path+"."+xmlData[idx].nodeName;
loadXML2(path2,xmlData[idx].childNodes);
}else{
trace(path);trace(xmlData[idx].nodeValue);
set(path,xmlData[idx].nodeValue);
}
}
}
あ。原因がわかった気がします。
私のスクリプトだとfor(i=0
のときiがグローバルなんですね。
例えばi=4のときのforループで再帰した場合、再帰先でi=1で終わったとすれば、
戻ったときにはi=4ではなくi=1に上書きされて無限ループになったみたいです。
forループ使うときは全部varしといたほうがよさげですね・・・(鬱
323 :
301:04/04/21 21:07 ID:???
>>312 onClipEvent(KeyDown)にしたらできました。
ありがとうございます。
function hoge(a,b,c) {
...
}
ってあるじゃないですか。
このとき、aとかbとかcってグローバル変数なんですか?ローカル変数なんですか?
グローバル変数だとすれば、ローカル変数にするにはどうすればよいのでしょう?
>>324 難しく言うとa,b,cの内容によりけり。
function hoge(a,b,c) {
a = 0;
b[0] = "3";//e[0]の内容が3に変わる
c.b = "2";//f.bの内容が2に変わる
}
d = "あいうえお";
e = new Array("0","1","2");
f = {a:"0",b:"1"};
hoge(d,e,f)
この場合は、aはローカル変数、b,cはそれぞれe,fへの参照。
328 :
327:04/04/22 02:59 ID:???
ついでに便乗質問。
function hoge(){
var obj = {a:"a",b:"b"};
return obj;
}
result = hoge();
こーいう風に使うとresultの内容はグローバル扱いになるけど、
元々varで宣言したobjの中身がfunction終了後も破棄されずに
保持され続けるのって何でなんでしょう?
この場合はそーいうモノなんだ、って覚えてるんだけど
ちゃんとした理由を知ってるエロい人がいたら御教授キボンヌ。
>>328 「ガベージコレクション」という仕組みがあって、ActionScriptはそれを採用してる。
これは、どこからも参照されていないメモリを自動的に解放する仕組み。
この場合のobj(の参照してるメモリ)はresultが参照しているので、
破棄されずに保持され続ける。
MX ですが C言語での#defineみたいなものってないんでしょうか
三角関数を多用した複雑な軌道を移動するボールを20個ほどシミュレートさせたら
糞重くなったんですが、そんなもんですか?
あと、普通のFLASHでも作ってる最中にIEとかを立ち上げるとメモリが
足りなくなるんですが、皆さんメモリはどのぐらい積んでますか?
ちなみに当方はPen4の2.0GHzに768Mです。
↑あとOSはWinXPです。
>>331 どのくらい複雑なことしてるか解らない・・・
でも大抵算術計算より画面の大きさ、シェイプの複雑さ、アルファの使用とかのほうが
オーバーヘッドになると思われ。
そのあたり見直してもダメならアルゴリズム見直すしかないね。
メモリが足りなくなるってどんな状況なの?
ムービークリップ内で
1秒ごとに数字をランダム表示させるには
どのようにすればよいのでしょうか?
OSはWinXP、ソフトはFlashMXです。
onClipEvent (enterFrame) {
t2 = Math.floor((getTimer()/100) % 2)+1;
if(t2 == 1){
byourandom = Math.floor(Math.random()*1000)+1;
}
}
byourandomがダイナミックテキスト内の変数です。
よろしくお願いします。
三角関数を組み合わせて、花びらに見立てたボールを動かし、花が回転しながら開いたり閉じたりします。
ゲームの魔法エフェクトに使おうと思ったんですが、動かすとCPUがフルになってカクカクするので・・・。
色々試してみまつ。
新しいウィンドウを開こうとすると、ジャン!ってなってウィンドウが開きません。
あとはメモリ(番地)がほにゃららとか、ウィンドウ真っ白とか色々挙動が怪しくなります。
別のウィンドウを閉じてメモリを確保した後、同じ作業をすると問題なく動きます。
>>335 > 新しいウィンドウを開こうとすると、ジャン!ってなってウィンドウが開きません。
> あとはメモリ(番地)がほにゃららとか、ウィンドウ真っ白とか色々挙動が怪しくなります。
> 別のウィンドウを閉じてメモリを確保した後、同じ作業をすると問題なく動きます。
Flashが問題と言うよりOSに問題有りそう。
とりあえずFlashとOS、ドライバー等のアップデート確認してみそ。
あとHDの空きが無くなってるとか・・・。
swfってこじ開ける事できるんですか?
解析してゲームの結果(ランキング)を改ざんされたりしないか心配です。
>>330 無いです。いわゆる定数を定義したい場合には、特定の定数管理用の
クラス、または、_globalオブジェクトに任意の値を返す関数を作成します。
#define BALL_SIZE 10
↓
_global BALL_SIZE = function(){retuen 10}
いわゆる「読み取り専用フィールド(プロパティ)」を作成するような
処理になります。
>>337 余裕。
送信するときに、多少複雑にして、cgi側で処理すれば多少は硬くなる。
相手が本気だと何やっても無駄なんじゃないかな
まぁーパケット止めて書き換えてから送れば一発だし。
暗号化すれば硬くなりそうだが、perlとかのcrypt関数ってflashで使えるっけ?
>>334 setInerval関数を使用する方法
setInterval (function(){trace("1秒経過")},1000)
onEnterFrameを使用する方法
onEnterFrame = function(){
if(!t)t = getTimer()
if((getTimer() - t)>1000){trace("1秒経過");t = getTimer();}
}
両方とも処理速度に依存するので厳密に1秒というのは難しいです。
>>337 できます。swfファイルは仕様が公開されています。
基本的にその気になればソース丸見えだと思ってください。
単にユーザー名とスコアを投げるだけで登録されるようなCGIでは
改竄される可能性は多々あります。
サーバー側でなんらかの認証を行う仕組みを作ってください。
>>341 ありがとうございます!!
これで夜もゆっくり寝られます。
MX使いとして新しいASを覚えてわくわくしております。
Flash5の場合では、onEnterFrameは
フレーム1に
if(!t)t = getTimer()
if((getTimer() - t)>1000){trace("1秒経過");t = getTimer();
フレーム2にgotoAndPlay(_currentFrame -1);を
置けばいいんですね。
swfを解析しなくても、メモリーを操作できれば
ハイスコア偽造なぞ余裕
そのまま丸投げしないようにして、あとは
ありえないのが来たら弾く程度でよいかなと。
気にしないのが一番健康上よいかと
オーム社の「macromedia FLASH ActionScriptバイブル」っつー本を買ったんですが、その中に
n=1;
eval("ufo"+"name"+n) = "アダムスキー";
みたいなことができるって書いていたんですが、俺のMX2004じゃエラー吐くんですよね。誤植?それとも昔はそうだった?
またその本にはset()は使っちゃいかんみたいなこと書いていたんですが、どうなんでしょう?
バイブルはflash5。
MXからは左辺のevalは推奨されなくなりました。
すると今同じ処理をしたければ、setを使うしかないのですか?
this["ufo"+"name"+n] = "アダムスキー";
でよいのかな
ユークリッド座標を球面座標に変換するにはどうしたらいいんですか?
>>349 こんな感じで。
ちなみにActionScriptは数として無限大を扱えるので、
iY / iXの計算で0除算しても問題無い。
function euclideanToSpherical(iX, iY){
var result = new Object();
result.angle = Math.atan(iY / iX);
if(iX < 0) result.angle += Math.PI;
result.distance = Math.sqrt(iX * iX + iY * iY);
return result;
}
ASって∞扱えるんだ?
勉強になったです。横レスですが
複素数計算したいんだけど、そういうビルトインないよね?
オブジェクトA,B,Cがあり、それらの深度はA-10,B-20,C-30だとします。
ここでBをクリックしたときに、Bが一番上に来るようにしたいんです。
(もちろん、その後でCをクリックすると今度はCが一番上)
単純にA-10,B-40,C-30とすると、いずれ1000あたりにある別のオブジェクトと
ダブる恐れがあるので、できれば10,20,30のままにしたいと思います。(またはその前後)
どういう方針で組めばいいんでしょう?
>>354 1.一番上を変数で持ってそれと深度変更
2.深度管理の配列作る
>>354 3. 10,20,30にこだわらなければABCを内包するMC内で順序変更
357 :
Now_loading...774KB:04/04/24 00:36 ID:L7BHPWVl
Math.random()って、0から1までを返すんですよね?
すると、
r = int(Math.random() * 2);
if (r == 0) trace("omote");
elseif (r == 1) trace("ura");
と書いたとき、表も裏もでないこと(r=2)が数百万回に1回ぐらいはあるってことですか?
>説明
>メソッド; n を返します。0 <= n < 1 です。
なので無いかと。
0.0000000000・・・・・・・・・・・・・・1 〜 0.99999999999・・・・・・・・・・・・・・9
って事だよ。
360 :
Now_loading...774KB:04/04/24 12:47 ID:L7BHPWVl
あるボタンをマウスで押しっぱなしで0.5秒おきに同じ操作を繰り返す
ってなことをやりたいんですが、どういう方法がいいんでしょう?
0.999999999999999999999999... = 1だけどな。
証明:
0.999999999999999999999... = 0.9 + 0.09 + 0.009 + ....
= 9 * (0.1 + 0.01 + 0.001 + ...)
= 9 * (1/10 + 1/100 + 1/1000 + ...)
= 9 * (1/10)/(1-1/10)
= 1
証明終。
>>361 無限に続くならね。
Flashでは32bitで表現できる程度かな?
>>361 証明になってねぇし。
= 9 * (1/10 + 1/100 + 1/1000 + ...)
= 9 * (1/10)/(1-1/10)
何勝手に等号で繋いでるん?
あぁ、あれだろ。藻前。1mの位置から物落とした時、必ず50cmの位置を通過する。
25cmの位置を通過する、12,5cmの位置を通過する・・・・必ず半点を通過して0にはならないのに、
実際に物を落とすと地面に落ちるのはなんで?とか言うタイプじゃね?
まぁ、ああだこうだいってもflashのランダムは1000兆通りしかでないんだから無駄ってこった。
>>363 あえて流したんだが、希望なら10レスぐらい使って延々と極限の定義から上限定理からワイエルシュトラウスから攻めるが、よろしいか?
というかスレ違いだし、真実は
>>362。
どうせ参考書でも書き写すんだろ?
参考書に載ってれば真実と思い込んでしまう奴には、定理なんてただの公式だよ。
空論をいかにして説得力を持たせて納得させるかって話自体が意味無い。
そもそも、この流れの中で異論証明を唱えるのであれば、
math.random()によって0と1が叩き出されない証明をするのが筋であり、
君がやってる事は詭弁以外の何物でも無い。
ディベートと勘違いするなよ。
math.randam()によって0と1が叩き出されない事実を前提にしての証明
AS上で
>>0.999999999999999999999999... = 1
じゃないから証明されてもなぁ
いいかげんスレ違い。
重箱の隅つつく一言
「MATH.random()で0はでるよ、1は出ないけど」
ということで次の質問どうぞ
↓
374 :
Now_loading...774KB:04/04/24 20:45 ID:15vlLKjz
Flash製作初心者の質問スレッド 23フレーム目 から誘導されて来ました。
flashのサイトを運営している者です。
私のページのSample020を見ていただきたいです。
入力テキストフィールドに入力した文字列をタイプライター風に表示させる
ものを作りました。setIntervalを使って1文字ずつ増やして表示するように
しています。ここで、出力された文字数が入力フィールドに入力した文字数
以上になったときにclearIntervalをしています。
それゆえ、出力が全部終わる前に子ウィンドウを閉じると、次に子ウィンドウを
開いた時に、いきなりタイプ風表示が始まってしまいます。これを直したいの
ですが、解決法が思いつきません。おながいします。
#FLASH上に読み込んでいるために起こる問題なので、DLできるファイルを直
したく、お願いに来たのではありません。
#メインの*.swfと、サンプルの*.swfは別ファイルです。外部*.swfとして読み込
んでいます。
サンプルファイルは、メニューボタン 「F」 内にあります。
ttp://www.geocities.jp/sisyou_talbo/ ##もう1つ質問です。
入力テキストフィールドに文字を入力した状態で(初期状態で)子ウィンドウを
ドラッグすると、文字の折り返し部分がガクガクなってしまいます。
原因不明でつ・・・。おながいします。
「窓閉じるボタンにもclearInterval」か「窓開いたときにclearInterval」
もう一つは文字である必要ないぽいのでアウトライン化してみては?
すいません。超基本スレで昨日聞いたのですが、回答が得られなかったので、こちらで質問させていただきます。
MCのASで
onClipEvent(enterFrame){
if(key.isDown(key.UP)) { _y -= 5; gotoAndStop(○) } //○フレームには上方向への歩きMCが入っています。
if(key.isDown(key.LEFT)) { _x -= 5 ; gotoAndStop(×) } //×フレームには左方向への歩きMCが入っています。
}
今、△フレームに、左斜め上への歩行MCが入っている状態で、
LEFTとUPを同時に押した際に、 _y -= 3.5 ; _x -= 3.5 ; gotoAndStop(△) としたいのですが、
if(key.isDown(key.UP && key.LEFT)) の記述では方向が狂ってしまい、訳わからなくなってしまいました。
どのように記述すれば良いのかアドバイスをお願いします。
>>376 >方向が狂ってしまい、訳わからなくなってしまいました。
というのがどういう状態なのかよく分からないので答えづらいですが……。
とりあえずソース見た感じ、カーソル左と上を押すと>376中の全ての
if文の中を通ることになってしまいます。
2つ目以降のif文の前に else を付けると良いかもしれません。
378 :
376:04/04/25 12:11 ID:???
>>377 else if を使うと言う事でしょうか・・・。
イメージとしては、上キーを押した時、左キーを押した時、左と上を同時に押した時。
と言う条件設定が出来ると嬉しいのですが、
else if を使った所、
上キーを押していない状態で左と上を押している状態となって、やはり上手く動きませんでした。
>>378 よくよく読んでみた。
Key.isDown()の使い方が間違ってますね。
if(Key.isDown(Key.UP) && Key.isDown(Key.LEFT))
380 :
376:04/04/25 12:50 ID:???
>>380 else if も使わないと。
あと、こういう場合はデバッガ使ったり、どこを通っているかtrace()で確かめたりするといいよ。
onClipEvent (enterFrame) {
if (key.isDown(key.down) && key.isDown(key.right)) {
trace("down&right");
gotoAndStop(2);
_x += 3.5;
_y += 3.5;
}
else if (key.isDown(key.down)) {
trace("down");
gotoAndStop(1);
_y += 5;
}
else if (key.isDown(key.right)) {
trace("right");
gotoAndStop(3);
_x += 5;
}
else if (key.isDown(key.up)) {
trace("up");
gotoAndStop(5);
_y -= 5;
}
else if (key.isDown(key.left)) {
trace("left");
gotoAndStop(7);
_x -= 5;
}
}
>>380 onClipEvent (enterFrame) {
if (key.isDown(key.down) && key.isDown(key.right)) {
gotoAndStop(2);
_x += 3.5;
_y += 3.5;
}else if (key.isDown(key.down)) {
gotoAndStop(1);
_y += 5;
}else if (key.isDown(key.right)) {
gotoAndStop(3);
_x += 5・・・以下略
383 :
374:04/04/25 13:55 ID:XuhjG/dz
>>375 レスありがとうございます。
窓を出すのは、親swfの役割です。
親の操作から、子swfの関数を消すということは出来るのでしょうか?
どうパスを書けばよいのかがわかりません。
別の方法を思いついたので、試して結果報告します。
では、おながいします。
384 :
374:04/04/25 13:55 ID:XuhjG/dz
関数ではなくて Intervalでした。
385 :
376:04/04/25 14:02 ID:???
>>381 >>382 ありがとうございました。
同時押しの時を基軸にして、else if で単独押しの時を振るんですね。
とても参考になりました。
本当にありがとうございます。
386 :
374:04/04/25 14:10 ID:XuhjG/dz
_root上にMCを作り、そこに
onClipEvent(load){
_parent.clearInterval(sliceID);
}
と書いてみましたが…駄目でした。
387 :
376:04/04/25 14:25 ID:???
>>381 >>382 おかげさまで、右下同時押しについては完璧に出来ました!
が、次に右上を設定する際、どうしても右下で設定した右を拾ってしまいます。
本当に申し訳ありません。
今一度、どの部分に定義をすれば良いのか教えてください。
>>386 よく分かりませんが、ひょっとして_parent.sliceIDでは
>>387 else if の意味をよく考えて、if文の順番を変えてみましょう。
trace()使って確認したりすることも覚えるとよいです。
389 :
Now_loading...774KB:04/04/25 18:49 ID:Pq3t30D3
はじめまして。 duplicateMovieClipの使い方で注意しなければならない事はありませんか?? 複数複製したときに最初のやつだけうまく動作しないんです。
多分depthの問題
391 :
374:04/04/26 00:34 ID:+OffVinJ
>>388 むむ、確かにsliceIDのある階層はMCのそれと違いました。うっかりしてました。
・・・が、それでも駄目でした。
>>391 >374からの一連の質問を追いかけてみましたが、回答者はエスパーじゃ
ないので、もっと状況を単純化して質問した方が良いと思われます。
とりあえず、clearIntervalはメソッドではなくてアクションなので、_parentを
付ける意味は無さそうですが……。
swfを表示しているウィンドウを移動したり拡大・縮小すると
ダイナミックテキストや文字入力フィールドの折り返しの計算誤差で
表示がずれる問題は、FlashもしくはWindows自体の仕様と思われます。
とりあえず、等幅フォントを使い、文字フィールドの大きさをフォントの倍数
+(フォントのサイズ/2)くらいにしておけば、移動に際しての表示ずれは
若干抑えられるかと思います。
>>391 色々追ってみた結果、なんとなく何がしたいか分かったような。
sample020 のルートのタイムラインに、
function dispose(){ clearInterval(sliceID); }
という関数を加えます。sample020を外部MCとして読み込んだり閉じたりする
MCの方でsample020を閉じる時、この関数を呼び出してからunloadしてやります。
_level1.dispose();
unloadMovieNum(1);
こんな感じでどうでしょ。
MCの拡大や傾き、アルファの変更は変数があるので
ASで制御できるのですが、
変形ツールを使ったような傾きはASで制御できないのでしょうか?
395 :
Now_loading...774KB:04/04/26 12:21 ID:yzOCzzey
質問です。
テキストファイルをロードして、再生中のムービーに取り込みたいんですが、
どうやってやればいいでしょうか??また、テキストファイルの部分的なとこ
ろだけロードするってこともできるんですか??
ぉあdもヴぇいr
>>394 できないはず。ASじゃないがPHPのMingライブラリなどを使えばできるかもしれないが…
>>395 utf-8で書いたテキストファイルをLoadVarsオブジェクトでロード。
テキストファイルに変数名=文字列、という形式で書けば
myLoadVars.変数名 でその文字列を読める。
裏技として、=などを含まないutf-8のテキストファイルを読むと
LoadVarsの最初のプロパティ名がテキストファイルの中身そのものになる。
var myLoadVars = new LoadVars();
myLoadVars.onLoad = function(){ for(var propName in this){ trace(propName); break; } }
myLoadVars.load("test.txt");
このプロパティ名に読み込む方法は、規定外の動作と思われるのでお勧めはできない。
参考までに
398 :
Now_loading...774KB:04/04/26 12:47 ID:yzOCzzey
>>397 ありがとうございます!早速やってみます!!
400 :
394:04/04/26 13:31 ID:???
画像を変形ツールで変えるなら、シェイプ使うしかないだろね。
単純な立体画像とかなら座標を結んでfillで塗れば良いだろうけど。
402 :
Now_loading...774KB:04/04/26 13:59 ID:FG67XinV
すいません質問です。ランダムに動く○を線でつなぐようにしたいんです。
○−−○−−○−−○(このような感じで)
隣り合う2点間の座標(x1,y1)(x2,y2)を_rootで取得して線のMCの中心点を((x1-x2)/2,(y1-y2)/2)と
それぞれの中間点におき、widthとheightをx1-x2、y1-y2に置き換え、Math.atan2で角度を設定すれば
ノートの上ではうまくいくはずなのですが、どうにも。
考え方自体が間違っているのでしょうか?
A−−B−−C−−D
だよね?
ABCDの中心から線を延ばすならば、各MCの座標を取得する。
線を引くだけならば、
moveTo(Ax.Ay);
lineTo(Bx,By);
で良いでしょ。
もちろん、Axとかの設定については自分でどうぞ。
>>400 ああ、そういうことがやりたいだけなら>399 >401の方法で十分に表現できる。
テクスチャ無しの生ポリゴンとしてMovieClipの描画メソッドを使えばいい。
MovieClip.beginGradientFill()を使えば擬似グーローシェーディングも表現できるだろう。
透視変換などを行うライブラリを自分で作るだけだね。
>>402 FlashMXなら>403の方法で。
描画メソッドの無いバージョンのFlashなら、
原点から真上(または真横)に1.0の長さで線を描いたMCを使えば、
わざわざ二点の中点を計算する必要が無いので楽。
406 :
Now_loading...774KB:04/04/26 14:21 ID:FG67XinV
ありがとーございますっ
MXなので描画メソッド使ってやってみます!
407 :
Now_loading...774KB:04/04/26 14:37 ID:qVBnDtO+
409 :
400:04/04/26 14:39 ID:???
>>401 >>404 すいまそん。四角なのはテストでして、
実際は複雑なpngを読み込みます。
それを4分割して左右上下に引き伸ばして、3D表現できないかなと
8方向の上、横、下から見た画像、3つと
真上、真下で、2つ。
合計26枚書いて、更にバラバラにして読み込みなんで、
他の3D使えるソフトでやったほうが軽くて早いかなとも思っていますが。
410 :
Now_loading...774KB:04/04/26 14:40 ID:qVBnDtO+
だから、シェイプで出来るって。
>>409 できなくはないけど、ASではMCの変形は拡大縮小しかできないため、かなり意図したものとは違うものになると思う。
例を挙げると、セガサターンはスプライトを自由変形させることでポリゴンっぽい物を表現しようとしていたが、
透視変換におけるテクスチャの変形というのは単純な自由変形ではないので、歪みがどうしても生じていた。
ASでは、サターン以上に制限がきつい。テクスチャを貼った3D表現はかなり汚くなると覚悟した方がいい。
テクスチャを使用しないなら、ASでもかなり良い3D表現ができる。
413 :
400:04/04/26 15:01 ID:???
414 :
Now_loading...774KB:04/04/26 15:07 ID:qVBnDtO+
なってるなってる3Dに。
マウスの位置取ってきて自分でいじってる感じとかも出せますね。いいんじゃないですか?
シェイプとかでゆがめずに、パラパラマンガの要領のほうがきれいそうです。
ツイーンして、それを全部キーフレームに変換してからいじるのよ。
いらない所を消したり、良い部分だけつぎはぎしたり。
>>413 なるほど、正射影でいいのか。それならなんとかなるかもしれない。
MC単体を平行四辺形に変形させることはできないが、
MCを入れ子にすれば複雑な変形をさせることができる。
つまり、MCを回転させるMCの中に拡大縮小させるMCを入れ、
更にその中にMCを回転させるMCを入れ……という具合に。
更に一般化すると、任意の行列Aを回転行列Rと軸方向への拡大縮小行列Sの積に分解できるか、
という問題になるが……さて、どうだろう
417 :
Now_loading...774KB:04/04/26 16:33 ID:oUT5Lr9n
AcitonScript初心者です。
どなたか知恵をかしてください。
コンポーネントにある
scrollpaneでMCを表示しているのですが
scrollpaneで32Kb
scrollpaneで読み込むMCで32kb
計64kb
このscrollpane関連のデータが
ローディングの時1フレーム目よりも先に読み込んでしまいます。
よって scrollpane関連のデータをよみこむまで
1フレーム目が表示されません。
scrollpaneで読み込むMCはフレームには配置しないため
最初にローディングされるのだと思いますが、
先に1フレーム目を表示させる方法はないでしょうか。
418 :
Now_loading...774KB:04/04/26 16:47 ID:14s5jdDV
今から新規に開発する場合、Flash7でパブリッシュするのが最適なんでしょうか?
その場合、古いバージョンでは再生できない可能性がありますが、その場合はユーザーに
「いいから最新版いれろやゴルァ」
って言い切っちゃっていいもんなんでしょうか?
何かの理由があって古いバージョン使っている人います?
質問させてください
cgiやphpでindex.phpなど作って、
その中の変数$hogeをフラッシュで読み込むことはできるのでしょうか?
よろしくおねがいします。
できます。
どうやったらできますか?
愛と勇気とloadVariablesで
loadVarsまじおすすめ
425 :
Now_loading...774KB:04/04/27 17:36 ID:Ufd7FNKh
スクロールマウスで、コロコロ使う方法ありますか?
コロコロってなんじゃい。
とりあえず2004から、ホイール機能は追加されとるよ。
427 :
420:04/04/27 22:24 ID:???
できましたー!!
ありがとうございました
428 :
Now_loading...774KB:04/04/28 00:19 ID:bd6Wtxd0
深度(depth)って、全体で一つの深度しか許されないのですか?
それとも、オブジェクトごと?
深度100のオブジェクトAの中に深度300のオブジェクトC
深度200のオブジェクトB
これを重ねたときの順番は、C->B->A?B->C->A?
質問です。
かなり初歩なんですけど、
ボタンの上にカーソルがきたら
テキストフィールドに文字を表示したいんですけど、
on(rollOver){trace(***************)};
テキストフィールドのターゲットパスは何処に入れるべきですか?
ってゆうかそもそも↑自体間違ってますか?
別のASでもいいんで教えてください。
XPでMXです。
432 :
430:04/04/28 00:47 ID:???
>>431 レスありがとうございます。
AS無しというのはボタンのオーバーの時に文字を表示させるという事でしょうか?
それだと一応できますが、同シンボルのボタン全てに同じ文字が表示されるので、
できればAS使って教えて頂きたいのですが。
on(rollOver){こいつの.テキストフィールド.text=どこぞの.変数;}
434 :
430:04/04/28 00:59 ID:???
そうですか。
雑談 糸冬
436 :
Now_loading...774KB:04/04/28 02:46 ID:WfHDB1MW
まあまあ。
>430
たくさんボタンを作れば?
ライブラリにあるボタンを複製して、テキストをかえたバージョンを作ればいいじゃない。
それらをステージに配置。で。
>433の言ってることがわからないとすると、絶対そのほうが早いしラクかと。
>>428 深度はオブジェクト毎です。
A(深10)の中にB(深100)、C(深200)
D(深20)の中にE(深10)、F(深20)
だと重ね順は上からD(F→E)→A(C→B)になります。
そもそもAの中にB,Cが入ってると、
C・BとAの深度比較なんてできないのはご理解ください。
#この場合Aって具体的に何を指すと思います?
先生!キスだと思いまーす。
\__ __________
V
∧_∧∩
( ´∀`)/
_ / / /
\⊂ノ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
Keep It Simple, Stupid
440 :
Now_loading...774KB:04/04/28 18:48 ID:RNIgExPD
MX2004使ってます。
あのものすごーく初心者な質問で申し訳ないんですが、
変数 a - 変数 b を行うとき、
それぞれの変数に入ってる数値が、-か+か判らないときに
かならず+符号同士で減算するにはどうしたらいいんでしょうか?
>>440 Math.abs(a) - Math.abs(b)
442 :
Now_loading...774KB:04/04/28 18:59 ID:RNIgExPD
>>441 ありがとうございます!!
無事期待通りの結果になりました。
条件分岐で、if(this.hitTest(_root.hoge)) の間だけ 〜〜 と言う記述はどのようにすれば良いでしょうか?
例えば、下から上へ進む車(Acar)と、右から左へ進む車(Bcar)があるとして、
交差点でかち合った時、Aは移動を0にして止まり、Bが通りすぎたら(ヒット判定が無くなったら)再び進む。
こんなイメージです。
Acarの移動量をspeedAとして、hitTestでBとかち合った際に止まるのですが、再び動き出さず、SpeedAは0のままになってしまいます。
アドバイスをお願いします。
>>443 ヒットしてないときだけ、進めればモーマンタイ
if(!hitTest()){
すすむ記述
}
loadVars使ってphpからswfに変数を受け渡しているのですが
うまくいきません。
変数がabcとか英語だとうまくいくのですが日本語だと文字化けしたりします。。
PHPのエンコードもいろいろ試したのですが(EUC,SJIS,UTF-8)うまくいかず
ご教授よろしくおねがいします
System.useCodePage=true
こーでしたっけ、度忘れ
Flash MX 2004を使っています
早速質問なんですが、ムービークリップの中にダイナミックテキストを作成し、
その中に変数の値を表示しています。
その後、_xscaleを使ってムービークリップの幅を変更し、
文字の幅を変更したいのですがうまくできませんでした。
静止テキストならうまく動くのですが、ダイナミックテキストでは無理なのでしょうか?
確か、ダイナミックテキストで動かしているものを見たことがあったと思うのですが・・・
文字の幅ちゅーか、MCが拡大してるから文字も大きく見えるだけだべさ。
449 :
447:04/04/29 01:03 ID:???
>>448 そうですね
しかし、ダイナミックテキストの場合のみできないというのは
どういうことなのでしょうか?
>>449 ダイナミックテキストで使ってるフォントを埋め込めば望み通りにできると思うよ。
ダイナミックテキストの場合、フォントを埋め込まないとフォントのポイント数を変えるだけの
拡大縮小しか出来ず、テキスト領域の縦サイズによってフォントサイズが切り替わる。
だから、縦方向に伸ばす方向ならフォントサイズ変わるはず。ただし、ポイント単位の拡大になるから
ガクガクするけどね。
451 :
445:04/04/29 02:32 ID:???
PHPのコードは以下のようにSJISで書いてるのですが
<?php
$abc = "abc";
$hoge2 = "あいう";
echo "hoge=" .$abc ."&hoge2=" .$hoge2;
?>
System.useCodepage = true;
を記述してもabcだけ表示されて、あいうの部分が表示されません
なぜでしょうか?
452 :
450:04/04/29 04:21 ID:???
ダイナミック、静止関係なくフォント埋め込むかどうか次第だった。
静止テキストだと、デバイスフォントを使わなければ自動的に埋め込みになるからな。
453 :
445:04/04/29 05:28 ID:???
解決しますた
454 :
447:04/04/29 15:01 ID:???
>>450 フォントを埋め込んでみたら期待通りの動きが出来ました
本当にどうもありがとうございました
質問です。
swfファイルを盗まれないようにするにはどうしたらいいでしょうか?
漏れなんか、どんどんソース公開するし、どんどん盗んでくれとも思うな。
自分で作れた! と言うのが最重要だと思うか否かの相違かもしれんね。
盗んでその作品を自分の物として使うような奴は、その作品以上の物は作れない訳だし。
盗まれて影響が出るほどの作品を作れるなら、固定ファンもいるだろうから、神経質になる必要はないでしょ。
>>455 大切な物は金庫にしまいましょう。
つまり公開しなければ盗まれませんよ。
スタートボタンを押して、何かの条件の時までの時間を記録したいです。
getTimerって記述が良いらしいのですが、FlashMXで使えるでしょうか?
2004は持ってません。
使えるか否か?
help嫁ヴォケ
ストップウォッチを作ろうと思い、色々なサイトで見てきました。、
On (Release)
If (ChkFlg = 1 )
Set Variable:"STime" =GetTimer
Set Variable:"ChkFlg" =0
Play
End If
End On
と言うソースがあったのですが、Set Variableや End if End on 等の記述などがさっぱりわかりません。
今使ってるのはMXで、このソースは4の物らしいのですが、
この記述はMXの物とは若干違うと言う事なのでしょうか?
それともMXでも使われていて、私が知らないだけなのでしょうか?
参考書は買って読んだのですが、このような記述が無くてわかりませんでした。
>>461 Flash4のことはきれいさっぱり忘れましょう。
463 :
Now_loading...774KB:04/04/30 16:37 ID:NxQlDWm2
みなさん始めまして。最近FLASHを触り始めた者です。
質問させて頂きたいのですが、WebServiceConnectorを使用して、WSDLを読み込みこ
もうとしています。
読込先はローカルネットワーク上のマシンで、WebServiceConnectorのプロパティ[WSDLURL]に、
http://192.168.1.10/wsdl/test.WSDL のように指定したのですが、
実行すると、Error Opening URL
http://localhost/wsdl/test.WSDL のようなエラーが出てしまい、
読みこむ事ができません。なぜかローカルホストにアクセスしているようなのですが、
どなたかご教授願います。よろしくお願いします。
開発環境はFlashMX2004です。
質問させてください。
複数の変数があって、同じ値が無ければ***としたいのですが
if (A!=B && A!=C && A!=D && .....){
****
}
という風に、条件を延々と書く以外方法ないでしょうか?
後々変数が膨大になっても編集が楽な
そんな方法ないでしょうか?
同じ値の時だけ処理すれば良いジャン。
>>465 コロンブス的発想だ罠w
>>464 どうしても全値を確認したかったら、
B,C,D,...を配列arryに入れて、
sw = false;
for(vari=0; i < ary.length; i++){
if(A == ary[i]){ sw = true; break; }
}
if(!sw){
お好きな処理
}
なんてどうよ?
vari って何だと思ってもた・・・。
バリ・・・ばり???w
var i かYP!
468 :
464:04/04/30 17:55 ID:???
>>465,466
スンマセン。言葉が足りんかったみたいで。
変数はどれもコロコロ値が変わって
例えば>464の場合だったら、変数が3つだったら
A!=B && A!=C && B!=C
4つの場合
A!=B && A!=C && A!=D && B!=C && B!=D && C!=D
みたいになると思うんですが
>466さんの方法だと配列を変数の個数分だけ作るって事で良いんですかね?
Flashって、レンダリングみたいなことはできないんですか?
まったく同じエフェクトがかかるのに、実行するたび律儀に計算しまくるから糞重いんですが。
>>469 mov書き出しがプリレンダリングのようなものではないかなぁ?
>>466 アホめ。クイックソートさせて前後だけ比べたほうが早い。
この手の問題はアルゴリズム関係の本には必ずといっていいほど載っているから、もっと早いアルゴリズム使ったほうがいい
てか、スクリプトなんだよな?
stringsの段階を踏んで、indexOfで検索ヒットしなかった場合に実行させるのはどうなんだ?
473 :
464:04/05/01 00:01 ID:???
>>471 配列は私が不馴れなため、まだ途中なのですが
今回は変数の値が全て数値だったので
変数全部を配列に入れてsort()
>466さんの改造
if(ary[i]==ary[i+1])
でなんとか完成しそうです。
これなら変数が増えても配列に追加するだけで済むので
相当楽です。
本当にありがとうございました。
動いているMCがあって、クリックすると増殖する感じの物を作りたいです。
on(press){
this.duplicateMovieClip("acopy",100)}
のように組みました。1回押すと分裂するのですが、もう一度クリックしても
前に分裂した奴が消えて新たに出現するだけで、増える感じで分裂してくれません。
どんどん分裂させて増やしたい場合の記述を教えてください。
>>474 同じ階層にコピーすると前にコピーしたものが消えてしまうので、
クリックするたびに階層を1ずつずらすなどして対処してください
476 :
475:04/05/01 12:44 ID:???
>>474 あ、あと、コピーした物のインスタンス名も変えた方がいいと思う
例えば
on(press){
this.duplicateMovieClip("acopy" + _parent.i , 100 + _parent.i);
_parent.i++;
}
みたいな感じで
シンタックスエラーなのですが。
478 :
475:04/05/01 13:06 ID:???
>>477 えっと、もしかして俺に言ってる?
>>476のやつの2、3行目の先頭に全角スペースが入ってるんで、
それを消してやってください
さらに書き忘れ
親に変数iを宣言してください
480 :
475:04/05/01 13:10 ID:???
481 :
475:04/05/01 13:15 ID:???
シンタックスエラーが出たら自分で直せよ。そのぐらいの脳味噌は持っているんだろう?アアン?
ここはAS便利屋
484 :
474:04/05/01 14:25 ID:???
ありがとうございましたー。
教えてもらった甲斐あってきちんと動作しました!感謝です。
on(press){
if(_name=="a1"&&_root.i<3){
this.duplicateMovieClip("acopy" + _root.i , 100 + _root.i);
_root.i++;
}else if (_name=="a1"&&_root.i>=3) _root.i==3
else {
removeMovieClip(this);
_root.i--}
}
こんな感じに仕上がりました。どうもですー。
485 :
475:04/05/01 15:48 ID:???
>>484 もう見てないかな・・・
そのアルゴリズムだとおかしなことになると思うんだけど
例えば、
a1を3回押す(インスタンスが3つ生成されて全部で4つになる)
↓
acopy0を押す(acopy0が消える)
↓
もう一度a1を押す(この時_root.i=2なのでacopy2が消えて違うacopy2が生成される)
↓
よってこれ以降はインスタンスが2つまでしか生成されない
さらに同じことを繰り返すとインスタンスが一つしか生成できなくなる
ってな感じになるんだが
それで正しい動きなら問題ないけど
486 :
474:04/05/01 18:01 ID:???
>>485 色々触ってたら、ご指摘の通りの挙動になりました。
条件分岐を改変して補正して行こうと思います。
ありがとうでした。
配列からアクセス指定子のリストを作るにはどうしたらよいのでしょうか?
XML.attributesなどで属性名を取り出すために必要なのです。
488 :
Now_loading...774KB:04/05/02 06:01 ID:mYl6Jj3I
age
すんごいねおrねろだがなmか質問内かい?
呑み過ぎたはずない、俺はシラフ
なんで連休ってこうなるんだろうな
おい
こちらの方が人が多そうなので転載させてください。
630 名前:Now_loading...774KB[] 投稿日:04/05/01 19:04 ID:t+oXA6yC
ASで、MCの座標から線を引きたいのですが、
lineTo(x,y) で、ルートから見た座標へと線を引きたいです。
_root._x、_root. _yが100 として、そこに線を引きたいのですが、lineToにはどのようにしてパスを通せばイイのでしょうか?
よろしくお願いします。
自覚マルチはイクナイが、それ以前に質問が不明確
moveToとlineToで書けばいいんじゃないの?
>>491 そのことに関して今までどんなことを試みてダメだったかも書いてくれ。
494 :
491:04/05/02 08:45 ID:???
すいません。制作初心者の方は人が少ないらしく、書きこんだ後に気づきました。
一応12時間経って0書きこみだったので、こっちに書きなおしました。
んと、moveTo(0,0) ← MCから見た座標
lineTo (x,y) ← ルートから見た座標 へと線が引きたい訳です。
イメージとしては、 lineTo(_root._x=100 , _root._y=100 ) な感じで。
だから、その12時間の間にどんな試行錯誤をしたのか書いてくれ。
createEmptyMovieClip("dummy" , 1);
dummy._x = 100;
dummy._y = 100;
dummy.clear();
dummy.lineStyle(1, 0x000000, 100);
dummy.moveTo(0,0)
dummy.lineTo(_root._xmouse, _root._ymouse);
これでマウスの座標に対して100,100から線が引けると思う
テストはしてないんで雰囲気だけ
497 :
491:04/05/02 12:30 ID:???
丸のMC → 四角の上部を左右に行き来してます。
onClipEvent(load){
hoge=10}
onClipEvent(enterFrame){
if(_x>450||_x<150)hoge=-hoge
_x+=hoge}
四角のMC → 固定です。
onClipEvent(enterFrame){
clear();
lineStyle(5,0x000000,100)
moveTo(0,0)
lineTo(_root.maru._x,_root.maru._y)}
と言うイメージで組んだのですが、2点を結ぶ線が引けません。
trace(_root.maru._x) _y 共に、取得はしているのですが、明後日の方向へ線が延びている感じです。
何が問題であるのかがわからないで困っています。よろしくお願いします。
498 :
491:04/05/02 12:34 ID:???
四角のMC
onClipEvent(enterFrame){
clear();
lineStyle(5,0x000000,100)
moveTo(_x,_y);
lineTo(_root.maru._x,_root.maru._y)}
でもずれた点へ引いてしまいました。
>>497 lineTo(_root.maru._x-_x,_root.maru._y-_y)
とか、ダメかな?
onClipEvent(enterFrame){
clear();
lineStyle(5,0x000000,100)
moveTo(_root.sikaku._x-_x,_root.sikaku._y-_y);
lineTo(_root.maru._x-_x,_root.maru._y-_y)}
でなんとかイメージに近い感じで描写できました!thxです。
501 :
487:04/05/02 14:42 ID:???
私のほうもおねがいします。
>>501 for(var i in obj){
trace(i);
}
for(var in lin of joytoy){
trace(i);
}
504 :
487:04/05/02 16:05 ID:???
perlや何かのcrypt関数みたいなものはないんですか?
507 :
あ:04/05/02 16:36 ID:???
508 :
Now_loading...774KB:04/05/04 04:17 ID:IWrQE/mA
質問です。
検索フォームの値を変数a
チェックボックスのブール値をを変数b
としてsubmitボタンでgetで送信した場合に
htmlで別ページが開く仕様に現在なっている
HTMLフォームがあります。
これをFlashのフォームで実現したいのですが
getURLメソッドを使うのでしょうか?その際に
getURL(url [, window [, "variables"]])
とFlashHELP(MX)では出ていますが
変数を複数送信することはできますか?
LoadVarsとか使うのでしょうか(これは変数の値で
返ってくるだけでhtmlでの返信は無理なのかな?)
CGIの知識は無くloadvarsの知識がありません。
よろしくお願いします。
function submitHandler() {
// LoadVars版
var formData = new LoadVars();
formData["str"] = this.StringInstance.text;
if (this.CButtonInstance.checked) {
formData["chk"] = "on";
}
formData.send("
http://www.hoge.com/bar.html","_blank","GET");
// 子MovieClip版
this.createEmptyMovieClip("formClip",1);
formClip["str"] = this.StringInstance.text;
if (this.CButtonInstance.checked) {
formClip["chk"] = "on";
}
formClip.getURL("
http://www.hoge.com/bar.html","_blank","GET");
formClip.removeMovieClip(); //varが使えないので必要ならばremoveすること
}
外部読み込みJPGファイルのタイムスタンプ取得方法がわかりません
そんなプロパティあったかな・・・
裏でCGI動かして送ってもらうとかじゃダメ?
質問です。
MCを複製してから3秒後にまた違うMCを複製したいのですが、3秒後というのがどうしたらいいかわかりません。フレーム移動せずにボタンアクションの中でやりたいのですが、うまくいきません。お願いしますm(_ _)m
質問です。
MCを複製してから3秒後にまた違うMCを複製したいのですが、3秒後というのがどうしたらいいかわかりません。フレーム移動せずにボタンアクションの中でやりたいのですが、うまくいきません。お願いしますm(_ _)m
setInterval()
を参照のこと。ちなみにミリ秒だから3000と指定するのを忘れずに。
515 :
Now_loading...774KB:04/05/04 19:20 ID:pKM4ccvY
onClipEvent(load){
fps=20;//フレームレート
i=0;//初期化
}
onClipEvent(enterFrame){
if(i>=fps*3){
複製処理を書く
i=0;//初期化
}else{
i++;
}
}
こんなんどう。
switch
517 :
516:04/05/04 19:57 ID:???
ごば
518 :
512:04/05/05 00:05 ID:???
うまくいきました。ありがトン。
519 :
Now_loading...774KB:04/05/05 01:03 ID:MUj7+jVY
フレームレートの計測ってこれでいいんでしょうか?
9とか20とか ものすごいバラつきがあるんですが・・・。
this.onEnterFrame=function(){
myD = new Date();//時間取得
t1=myD.getTime();//今回計測
trace( (Math.round( 1000/(t1-t0) ) )+" fps" );
t0=myD.getTime();//前回計測
}
getTime()をgetMilliseconds()に変えても同じような感じでした。
this.onLoad = function() {
this.frame = 0;
this.interval = function() {
trace(this.frame);
this.frame = 0;
}
setInterval(this,"interval",1000,0);
}
this.onEnterFrame = function() {
this.frame += 1;
}
1秒ごとの表示でよければ上のようにすればより正確になるよ。
setInterval(this,"interval",1000);
最後の0はゴミ。別にいらない。
522 :
519:04/05/05 02:31 ID:???
>>520 ありがとうございます。 なるほどsetIntervalですか!
気がつきませんでした。 ・・でさっそく制作中のゲームで計測したん
ですが 恐ろしい数値が検出されました。
スタート画面(キー入力待ちのみ 設定fps=12)は当然12でしたが
プレイ中は平均7 敵MAX時は なんと5!!
・・・・・5て(笑)
>>522 まぁそこらへんはswf形式の限界くらいに思っておいていいんじゃないかなぁ。
俺の場合はEnterFrame内でカウントをとって、その結果をfpsで割った数値を
そのまま経過時間として表示しちゃってますからw
(秒っていう意味合いではおかしいけど、タイムアタック等で
スペックの違うマシン毎に出る数値は平等になりますからね)
SWFの仕様の問題だろうね。しかし完璧なFPSを実装するには手間が掛かるさね。
1フレームごとに残りミリ秒/残りフレーム分のウエイトタイムを再計算しまくらなきゃいけないし。
単にそういう仕様じゃないのか、それともしてても処理落ちするのか・・・
簡単なタイマーソフト(設定時間来たらチャイム鳴らすだけ)が欲しくて数分で作った事あるんだが、
CPUに負荷かけるとかなり時間がズレたからなぁ。
swfの仕様というよりflashプレイヤー側の仕様だろうね。
はじめまして
早速質問なんですが、「インスタンス名に特定の文字列が含まれているものとのhitTest」というのは可能なんでしょうか?
例えば、インスタンス名に「hoge」がついているものと衝突したら、のような感じです。
また、hitTestで判定した後に衝突したインスタンス名を取得する事は可能でしょうか?
>>526 可能。だけど普通は衝突判定するインスタンスを配列に放り込むとかする。
あと、取得もなにも、インスタンス名がわかってなければhitotest出来ないぞ。
インスタンス名じゃなくて、フラグを送らせれば良いんでないか?
インスタンス名は同じなんだけど、内部フラグがそれぞれ違う感じ。
>>526 最終的に何がやりたいかを具体的に書くと
自分では思ってもみなかったような簡単な方法を
教えてくれるかもしれないよ。
変数が3つあるとして、その変数は各々が動きます。
ある状態の時に、その3つの変数を比べて、最大の物と最小の物を計算で扱おうと思っています。
2つを比べる時は math.max や math.min で扱えると思うのですが、
3つ以上を比べるのに、条件分岐で予め処理して、2つに絞るのが大変で困っています。
何か簡潔に行う方法はあるでしょうか?
アドバイスお願いします。
function limitCheck( ary ) {
var i;
var result = new Object();
result["max"] = Number.MIN_VALUE;
result["min"] = Number.MAX_VALUE;
for (i in ary) {
result["max"] = Math.max(result["max"], ary[i]);
result["min"] = Math.min(result["min"], ary[i]);
}
return result;
}
配列の要素番号が欲しいなら少し修正が必要だけど。
まあ最大と最小の値だけってのならこれでOK。
532 :
Now_loading...774KB:04/05/05 14:10 ID:OEU/CHE+
以前格闘ゲームの製作について質問させていただいた
>>239です。
皆さんのご協力により、ようやく完成にこぎつける事が出来ました。
しかし実際にswfファイルを出力してプレイしてみると、1Pと2Pが同時にキックを出しただけで
CPU使用率が100%になってしまうなど、実質、体感共にやや重くなってしまいました。
なのでこれからプログラムに修正を加えていきたいと思うのですが、ActionScriptを組む上で、
「〜〜こと」に気をつけていれば軽くなるよー、といった事は無いでしょうか?
大雑把過ぎて申し訳ないのですが、ご教授よろしくお願いいたします。
>>531 ありがとうございます。
ユーザー定義関数の勉強がまだまだ足りなくて、使いこなすのは大変そうですが、
是非とも書きとめておいて使えるよう勉強して行こうと思いました。
今回はその関数を利用させてもらいます!
534 :
526:04/05/05 14:59 ID:???
みなさんありがとうございます
私が何がやりたいのかと言いますと、要するにシューティングゲームが作りたいだけなんです。
自分の弾を「jitama」、敵の弾を「tama1〜6」とし、それぞれのインスタンスをduplicateMovieClipで複製しています。
複製されたインスタンス名は「元のインスタンス名+今まで複製した数」となっています。
ここで自分の弾と敵の弾が衝突した時の判定をしたかったのです。
イメージとしては
if(自分の弾とインスタンス名が"tama"から始まるインスタンスが衝突したら)
{
ここで衝突した敵の弾のインスタンス名を取得;
敵の弾を消す;
this.removeMovieClip();
}
という感じにしたいのです。
これが可能であればどのようにしてやればよいのでしょうか?
もし不可能であれば何か代替案はないでしょうか?
>>532 onEnterFrameに大量に処理を詰め込まなければそれほど負荷は掛からないよ。
1フレームあたりにいくつの処理が入るのか、実行されるだろうステートメントを計算するといい。
あと描画だけならベクターよりビットマップの方が早いから、メモリの節約ってのも考え物。
つまり jitama-1〜jitama-n と tama1-1〜tama1-n, tama2-1〜tama2-n, ... と言った感じでjitamaとそれ以外の弾との全ての衝突判定がしていのね?
537 :
526:04/05/05 16:47 ID:???
>>536 はい、そういうことです。
しかし、jitama以外の全ての弾とのhitTestをしようとするとかなり処理が重たくなってしまいますので、
先ほどのを少し改良して
if(何かとぶつかったら)
{
衝突したインスタンス名を取得;
if(取得したインスタンス名が"tama"から始まっていたら)
{
敵の弾を消す;
this.removeMovieClip();
}
}
というのが出来れば一番かな、と思っています。
三角関数覚えて、自弾用配列と敵弾用配列作って一気に処理すれば?
X軸、Y軸、弾の速度、ラジアン、弾消滅時のデリゲードを弾_mcのプロパティに埋め込めればいい。
それなら2つのfor(i in array)文でネストしてあげれば、すっきり判定がかけるでしょ。
ちなみにデリゲードってのは早い話が関数渡しのことで、
弾がぶつかって消えた後に、その弾を撃ったオブジェクトに何らかの処理をさせたい時に記述する。
ちょっと複雑かもしれないけど、この処理をしないとシューティングはちょっときつい。
539 :
Now_loading...774KB:04/05/05 18:18 ID:9KFzSi89
if ( A<100 ) A=100;//1
A= ( A<100 ) ? 100: A;//2
↑これって2の方が処理速度速いって本当?
コンパイラ次第。(Flashならパブリッシュというが)
いや、Flashの場合はパブリッシュ後のswf実行時のリアルタイム処理(インタープリタ?)
じゃないかな。
>>539 とりあえず、本当?って聞かれても実験用のスクリプト書いて確かめることになるね。
自分でやって報告してくれないか?
実験してみました。 なんと?:の方がifよりも遅かったです!
みなさんの環境ではどんなもんでしょ?
stop();
this.onEnterFrame=function(){
frame++;
for (i=0; i<=1000; i++){
var r=Math.floor(Math.random()*400);
//if ( r > 200 ) r=200+r+r+r;//速い!
//r=( r > 200 )? (200+r+r+r): r;//遅い!
}
}
function interval() { //フレーム計測用
trace(frame+" fps");
frame = 0;
}
setInterval( function(){ interval() },1000);
543 :
532:04/05/05 19:29 ID:Ot2bG/hF
>>535 お返事ありがとうございます。
明日から色々弄ってみようと思います。
>>542 俺は両方とも同じだったよ。
差が出る可能性としては、
下の方は、r=r という処理があるからかな。
そんなとこに気使うぐらいなら、もっと他の場所見直せよって話だよな
このスレもとうとう三角関数の時代か・・・w
三角関数マンセー
ActionScriptで書かれたやつって、コンパイルすると何になるの?C?Java?
アクションスクリプトになる。
SWFでしょ?タイプ的にはJavaと同じでバイトコードになるかと。
いや、最終的には機械語に直さなきゃいけないわけじゃん?
その辺どうなってんのよ。
機械語になる。
>>548 パブリッシュで、for文がwhile文に変更されたりする。
ほとんどはそのまんまswf内に書かれるよ。
554 :
Now_loading...774KB:04/05/05 22:23 ID:2nr0cYgo
ちょっとすれ違いかもしれませんが
FCSでビデオ&ボイスチャットを作りたいんですが
どのくらいの規模のものが作れるんでしょうか?
ヤフーチャットの一部屋分ぐらいの大きさの物って作れますか?
初心者な質問ですいません。
555 :
Now_loading...774KB:04/05/05 22:23 ID:2nr0cYgo
localconnectionで2つのフラッシュファイル同士を連動させたいんですが
うまくいきません
片方のムービーには
lc =new localconnection();
lc.send("text","sayhello");
と書いて。もう一方には
lc =new localconnection();
lc.sayhello=function(){
trace("受信しました");
};
lc.connect("text");
とやって
片方のメッセージを受け取ってもう片方が「受信しました」と表示する
ようなものをつくったんですが
なぜか実行してもまったく反応しません
考えられる原因はなんですか?
558 :
526:04/05/05 23:00 ID:???
>>538 どうもありがとうございます。
一応三角関数は使えますが、かなり厄介そうですね。
シューティングゲームはもっと簡単なものだと思っていました。
もっと勉強して出直してきます。
ピタゴラスの定理?
>>555 問題なく出来ました。受信側を先に立ち上げないと使えないのでそこらへんの手順ミスでは?
561 :
Now_loading...774KB:04/05/05 23:46 ID:2nr0cYgo
>>560 まじですか?
自分もちゃんと受信側からやってみたんですけど
まったく動きませんでした
なぜかムービーに書き出すとtraceが使えないんで
テキストムービーで文字を表示したりするようにしたりとか
変更はしましたがぜんぜんです
もしよろしければどのように作ったのか
ちょっと詳しく教えていただけませんか?
//main.fla
lc = new LocalConnection();
lc.connect("text");
lc.sayhallo = function() { str = "受信しました"; }
stop();
//call.fla
lc = new LocalConnection();
lc.send("text", "sayhallo");
stop();
/* 環境はFlashMX */
563 :
561:04/05/06 01:05 ID:mVfzCgOz
564 :
Now_loading...774KB:04/05/06 01:35 ID:0FWZLNmO
>>563 背伸びしてないで普通にASの基礎からやったほうがいい。
trace(this)をデバッグで活かせるようになると初心者卒業だ。
Flashって数学必須?
566 :
Now_loading...774KB:04/05/06 01:56 ID:0FWZLNmO
多弾なSTG, 厳密なアナログ時計, 3Dコントロールなど特殊な事しないかぎりは、まず要らない。
567 :
561:04/05/06 01:58 ID:mVfzCgOz
>>564 どうしてもここ知っておきたいんでよろしくおねがいします・・・・・
ピタゴラスの定理と高校レベルの三角関数が使えればいいんじゃね?
ラジアンとかアークタンジェントとかそういう値や関数の使い方にはテンプレがあるから、丸暗記でOKなんだけどね。
>>561 LocalConnectionに登録されたメソッドのthisはObjectを差す。
そして_parentをしてもundefinedを返す。これはどういうことか?
これはつまり、LocalConnectionオブジェクトは_level(n)のレイヤーを持たないって事。
thisや_rootや_parentは使わず、何もつけずにMoiveClipインスタンスから書き始めなさい。
何も無いのが寂しいのなら_level0.インスタンスかな。
そもそもLocalConnection.connectが登録用の関数内にあっては、いつまでたってもコネクションなんて確立しない。
connectは関数の外に出しなさい。言いたいことはそういうこった。
570 :
569:04/05/06 02:27 ID:???
修正。_root は _level0 を返すようだ。これは間違ってたな。
画像BBSとフラッシュを組み合わせて
アップロードした画像をフラッシュで表示
したりするようにしてみたいんですが
この場合ってFCSの知識がないとだめなんですか?
それともCGIとアクションスクリプトだけで十分ですか?
FCSなんて使うまでも無い
XMLスレでぐだぐだ言ってる奴か?
そんなことよりloadMovieはJPEGオンリーなのでは?
574 :
Now_loading...774KB:04/05/06 03:28 ID:mVfzCgOz
575 :
572:04/05/06 03:32 ID:???
あーそか。pngも使えた気がしたんだが
cgiとASだけで作ることは可能だが、
cgi側で工夫が必要でまんどいと補足
画像あぷ板を、flashで作る理由がよく分からないので
そのへんを細かく書いてくれれば何らかの回答は出るかも
576 :
Now_loading...774KB:04/05/06 03:52 ID:mVfzCgOz
ローカル共有オブジェクトを使うとローカルディスクにデータが保存されるそうですが
ローカルディスクのどこに保存されるんですか?
577 :
Now_loading...774KB:04/05/06 05:01 ID:mVfzCgOz
>>575 ただ見た目を派手にしたいだけです^^;
580 :
576:04/05/06 07:04 ID:mVfzCgOz
>>579 へぇ。CGIってそんなことができるんですね。知りませんでした
あと、もうひとつ気になったんですが何百個もの球のインスタンスを
これほどいっぺんに動かしてるのにまったく重さを感じさせないのが気になります
自分がやると簡単にとてつもなく重くなってしまいます。
これはいったいどういう処理をしてるんでしょうか?
>>580 工夫するとしか言いようがないな
onEnterFrame、hitTest、複雑なifを使わないように心がける
ベクタ画像を非常にシンプルにする。
あと
>>538
まぁ、三平方の定理とか、sin cos tan くらいは使いこなせると良いかもね。
余弦定理とかは・・・まぁいらないと思うけど。あれば便利だが。
583 :
Now_loading...774KB:04/05/06 13:28 ID:mVfzCgOz
シンボルにlinetoで線を書くことってできますか?
584 :
574:04/05/06 13:28 ID:???
どなたか・・・・
585 :
Now_loading...774KB:04/05/06 13:47 ID:C5T2vzW8
2004ProのDataGridコンポーネントのスクロールバーを、
「表示させたまま」操作不可にすることってできます?
>>574 喪前が動かせることを見守っても面白くないし、時間の無駄
とりあえずサンプルを動かしてみて、
その状態では動かせたのか?
2フレ目にgotoAndPlayしているのが問題なんじゃないのか?
再生しては繰り返しているようだし。
あとhtmlの問題、起動する順序。その辺を全部分かってるのか?
588 :
574:04/05/06 19:41 ID:???
寝る前に適当にっと
>>588 サンプルが動くのは当然
で、そのサンプルとお前のとの違いは何さ
まずサンプルを少しづつ改造してみて、
どこで動かなくなるのか調べれ
ここを追加すると動かないとか
そういう段階の質問汁
591 :
574:04/05/06 22:34 ID:???
>>589 サンプル見ました
でも自分のプログラムのどこがおかしいのかわかりませんでした
>二度と来るなボケ
そんなこといわないでください
592 :
574:04/05/06 22:35 ID:???
MovieClip.onEnterFrameはど素人が使うようなイベント関数ではない。
ボケ氏が作ろうとしている程度の仕様では、ボタンイベント以外は使うはずがない。
ライブラリにsymbol1が入っています。
それには
function test() {
trace("symbol1_in_test");
}
と書かれています。
rootに
trace("root_before");
this.attachMovie("symbol1","symbol1",10);
trace(this.symbol1);
this.symbol1.test();
trace("root_after");
と書きます。
んで実行すると
root_before
_level0.symbol1
root_after
symbol1
と出てくるんですわ。
どうもattachMovieした段階では中身ができてないっぽいんですが、
そういう仕様なんですか?
これを意図したもの(symbol1にtestメソッドを送れる)にしたい場合、
どうすりゃいいんでしょう。
595 :
Now_loading...774KB:04/05/07 00:09 ID:IhEsHyts
ごめん、symbol1は表示されたときに"symbol1"とtraceするようになっています。
そしてage
そういう仕様っぽいねぇ。
となりのキーフレーム上からなら呼び出せてるし。
解決策は在るかもしれないからちょっと探してみる。
でもオブジェクト自体は存在しているみたいなんだよね。
ガワだけでできてて、フレーム移動すると中身が作られるんかいな?
処理の順番は親優先だから、ルートフレームの段階では子のloadイベントは投げられないしね
あれ?FComboBoxで試したら出来た。
良く分からないけど Object.registerClass(symbolID, theClass) あたりが臭いから調べてみて。
#initclip 1
function Symbol1Class()
{
this.init();
this.test = function() {trace("test_func");};
}
Object.registerClass("symbol1", Symbol1Class);
#endinitclip
てかあっさり解決してしまった。
いい勉強の機会をありがとう。
>>594
それだとあんま意味なくね?
MCとの関連付けもFlashUICompornentsからソースぱくれば大丈夫でしょ
>>600で問題ないだろ
this.Instanceがちゃんと判断で来てる
getTimer()の信頼性ってどのぐらいのもんなんでしょう。
これでストップウォッチを作れるぐらいの信頼性はありますか?
>>604 内部的には結構信頼できると思うけど、
値を参照→表示
とかに時間がかかるのであまり信頼できない。
ストップウォッチの場合、
押す→値を参照
にも時間がかかる。
負荷かかっても信頼できるんかいね?
ためしに作ってCPU負荷かけまくったら、フレームが飛ぶ(カクカクいう)けど
ちゃんと測れているように見えるが、どうなんだろうか。
2回の時刻の差分を取ると特定の法則が見てとれたような記憶がある。
精度があまり高くないのかな、と思ったけど。といっても数msの話だが。
まぁ、よっぽど重くない限り、人間の反応速度超えるっしょ。
609 :
Now_loading...774KB:04/05/07 19:30 ID:jjBd4O2v
ゲーム中に画面をクリックしある処理を行う際に たまにMCが消えるという
バグが発生して困っております。
↓クリック処理
someListener.onMouseDown = function (){
if ( 条件判定 ) フラグ立つ
}
マウスダウンの初期設定(?)もやっております。
someListener = new Object();
Mouse.addListener(someListener);
MCをトレースすると消えた後は何も出ず 出力ウィンドウのバーが
下がりつづけるだけです。(消える前はきちんと内容が表示されてます)
trace( _root.MC+" "+_root.MC._visible );
漠然とした説明で申し訳ありませんが 似たような経験のある方やピンと
きた方がおられましたら何卒お助けを。
なんでイベントハンドラ作ってからnewしてるの?
611 :
609:04/05/07 23:07 ID:???
>>610 説明不足ですんません newは最初の初期設定等をしているフレームで設定して
おります。 onMouseDownはその後のメイン部で使っております。
ソースに_mc._visibleに値を入れてる部分はないの?
613 :
609:04/05/08 00:09 ID:???
>>612 visibleに値は入れてません それだとトレースで表示されるので・・。
やはり リスターというヤツがくさいと思っております。
よくわからず使っているので・・もうちょっとがんばって何か判明しましたら
報告に参ります。 ありがとうございました!
614 :
Now_loading...774KB:04/05/08 00:20 ID:4kBdtJlE
インスタンス名が"a1"とかだった場合
"a1"の"1"の部分だけを取り出して
それを変数に渡すようなプログラムを作りたいんですが
そんなことってできますか?
(a1、a2、a3・・・・a30というインスタンス名を持ったインスタンスが
それぞれ名前が隣あったものどうしが連動しあっていろいろと動きを処理
したりするプログラムを作ろうと思ってます)
>>609 アルゴリズムがまずいだけで、Mouse.addListenerは関係ないと思う。
個人的に触ってる分にはそんなことに陥った事ないしね。あとリスターじゃなくてリスナー。
slice(1)だったかな
>>614 普通にオブジェクト配列作ろうよ・・・ちなみにその処理は
for(i in array), String.length, String.substr(start [,length)
あたりを駆使すれば普通に作れます。
618 :
Now_loading...774KB:04/05/08 01:19 ID:4kBdtJlE
619 :
Now_loading...774KB:04/05/08 01:46 ID:4kBdtJlE
>>617 たびたびすいません
string.substrでインスタンス名の数字の部分を
取得して変数に与える処理に成功したんですが
当然文字列なんで数字として扱うことってできないですよね?
文字列の数字を数値データに変換するいい方法ってないですか?
>>619 たぶんこれでいける
num = (new Number("123")).valueOf();
trace(typeof(num));
string * 1すれば数字にならね?
パブリッシュするときにどのみち
>>620に直すような・・・
乗算分が無駄かと
for(i in array)という式は基本的な部分ですか?
手元のAS入門書では全く触れられていないのですが。
もしも、学ぶとすればどういった本や、
ヘルプのどの項を読めばいいのでしょうか?
また、対応は2004からでしょうか?
>>620 ちょい冗長かな。
var num1 = Number("123");
var num2 = int("123");
var num3 = Math.round("123");
var num4 = parseInt("123");
好きなものを。
>>623 使い慣れると結構便利だけど、慣れないうちは使わないほうがいい。
for(var idx in obj) でオブジェクト(又は配列)の全てのプロパティ名が
順番にidxに入るけど、注意しなくちゃいけないのは、idxが文字列であるということ。
だから var test = idx + 1; と書くと、idxが1なのにtestは"11"になったりする。
あと、順番が降順になるのも注意。
勉強したいなら、flashのヘルプのfor..inの項を読んで自分で実験するのが一番かと。
var arr = ["a", "b", "c"];
for(var idx in arr){
trace("idx = " + idx + " typeof idx:" + typeof(idx) + " value:" + arr[idx]);
}
こんな感じで。
>>625 ありがとん
ついでに
for(var i = 0; i < 配列.length; i ++)
と
for(var idx in 配列)
では速度的には同じですか?
>>626 さあ……?気にするほどの速度差じゃないと思うけれど。
気持ち的には上のほうが、数値計算だけで済む分早い気がする。
アルゴリズムやMCの設計を見直す方がそれより数万倍速くなるよ。
628 :
Now_loading...774KB:04/05/08 05:57 ID:4kBdtJlE
フラッシュでマイクやカメラを使ってるときに
録音または録画することってできますか?
>>629 ごめん・・・文章読解できなかった・・。
>>630 たとえばmicrophoneオブジェクトでマイクを
取得してマイクを使えるようにした後
マイクの音声を録音したいなあって思ったんですが
そういうことって可能ですか?
>>631 単体じゃ無理。
Flash Communication Server とか使えば可能かもしれないが。
> for(var i = 0; i < 配列.length; i ++)
PHPやったことある漏れからすれば、すげー違和感あるんだが。
var c = 配列.length
for (var i=0;i<c;i++)
のほうが速くね?
早い早くないじゃない
forchahは添え字が分からない場合でも全部アクセスできるのが強み
って普通のforかよ、ぶっちゃけ変わらないよ
そんなマイクロセカンドの差を競うぐらいなら、もっと見直すべきコードがあるだろう?
>>637 まったくだ。AS使いはフレームあたりのステップ数を気にするのならともかく、そんな細かいところは気にしちゃいかん。
この手の質問でいつも思うことは、
「気になるなら、なぜ自分で実験しないのか」
初心者スレだから。
LoacalConnectionの一件でその全てが理解できるw
サーバーで動かすのなら、1msの差が100人のアクセスによって0.1sの差になって現れる。
1000人なら1s、1万人なら10sだ。これは大きい。
しかしASはローカルで実行するのが基本だ。最近のPCの進歩はすさまじく、
限界ギリギリまで切り詰めたコードでも数ヶ月で無意味になる。
まぁそうだな。
なんせLoacalConnectionだしな・・・。
_root.test1.m1
を
_root.test2の中に移動して_root.test2.m1としたいのですが、その場合は
duplicateMovieClipして元のをremoveMovieClipするしかないんでしょうか?
もっと簡単な方法は・・・MX2004です
元のを消したらduplicateした方も消える仕様じゃなかったっけ?
コピー元をリンケージ登録してattachMovieしたほうがいいよ。
initObjectの引数で初期化対策もできたはず
いや、m1は動的に作られたものなので・・・。
マンドクセので、コピー元はtest1ごと_visible = falseして消しときます。
プログラムの話になってしまうのかもしれませんが、
パズルゲームで一手前(数手)に戻るという機能は思いつく限りですと、
1 前の状態のデータを丸ごと格納しておいて、それを代入
2 前のデータとの可変分だけを格納しておいて、変化分を元に戻す
3 入力された手順だけを覚えておいて、最初から一手前まで内部で計算して表示する
ですが、他にもいい手がありますでしょうか?
また、
1は作るのが容易だが、覚える手数が多いとメモリを大量に使う可能性がある
2は煩雑になり作成が面倒。処理速度が早い
3は非常にシンプルだが、処理によっては表示に時間がかかる可能性がある。
この程度の理解でよいのでしょうか?おねがいします
>>646 それでいいんじゃないでしょうか。
エンバグしやすさを考えると2は避けたほうが無難かも。
あと、1と3を組み合わせて、数十手ごとに盤面全体を記憶して、
その前までの手順を忘れるようにするという手もあるかと。
>>646 前に簡単なペイントを作ったときは2を使った。
流石に絵を0から全部描く訳にはいかないから。
複雑でなければ1で十分では?
数百手を越えるものになると流石に困りもんですが。
ローカルユーザーのPC時計を利用して、1秒ずつカウントダウンさせようと思います。
カウントダウンで、FPSから参照ですと使用環境で大きな誤差が生じそうなので、
内部時計を利用する方法を考えてみました。
ボタンを押すとダイナミックテキストの変数hoge に表示させてある数字をカウントダウンさせる感じです。
if構文から、1フレーム前の getSeconds() と違う数値だった場合にカウントダウンをさせるかと思ったのですが、記述がわかりません。
凄まじく厳密では無くても良いのですが、何か方法があればアドバイスをお願いします。
他の方法でも、良く使われる物などがありましたら教えてくださいません。
よろしくお願いします。
>>646 盤上パズルものなら3が早さも軽さも量も優れてる。
棋譜の規格も在るし、何より2つの棋譜との差分だけを処理すればいいんだから。
リアルタイムさが求められる複雑なパズルなら1がいいかな。
ダイナミックテキストの変数をcountにした場合。
//初期化
count = startcount = 100;
sd = new Date();
starttime = sd.getTime();
//毎フレーム実行される処理、例としてonEnterFrame使用
onEnterFrame = function() {
var cd = new Date();
count = Math.floor(startcount - (cd.getTime() - starttime)/1000);
if(count == 0){
//0になった場合の処理、カウントダウンの停止処理忘れずに
trace("count up!");
this.onEnterFrame = undefined;
}
}
こんな感じかな。
>>649 1秒ずつという表現をした時点でsetIntervalが一番最適かと思われます。
カウントダウン周りの処理を一元管理できますし、処理終了後に自分でclearIntervalをすれば掃除も楽珍。
フレームプログラムというFlashの特徴からすれば、異質な関数だけど、このスレでも解決策としてたびたび登場してるよ。
setIntervalは負荷でかなり変動した気がするんで、↑のような方法考えてみたんだが。
setIntervalで問題無い用途ならそっち使った方が楽なのは確かだね。
654 :
649:04/05/09 15:43 ID:???
>>651 .
>>652 .
>>653 ありがとうございました。
setInterval で 1000ミリ秒毎に(数字を減らす関数)を実行 と言う事ですか。
勉強になります。
setInterval の方を先にやってみて、もし誤差が激しいようでしたら
>>651 の方法を試してみます。
本当に感謝です。
655 :
649:04/05/09 16:06 ID:???
教えてもらった通り、setIntervalを勉強して自分で書いてみたのですが、どうも上手く行かなくて悩んでます。
onClipEvent (enterFrame) {
if (unko == 1) setInterval( function(){baka()}, 1000);}
onClipEvent (load) {
baka = function () {
_root.aho.hage--;}}
on (release) {
if (_root.aho.hage>=1) unko = 1;}
イメージとしては、ボタンを押すとフラグunko が1となって、フラグが立っている時に、
setIntervalで、1000ミリ秒に1度、 関数baka を実行してくれると思ったのですが、
インターバルが効かずに、毎フレームbaka を実行している感じに見うけられます。
関数bakaを記述する部分について色々触ったのですが、同じ結果になってしまった為、
根本的な何か間違いがあるのだと思いました。
問題のある部分をご指摘願いたし、よろしくお願いします。
>>206さんの質問で
>>214さんが
>>毎回hittestするよりかは
>>ドロップターゲット参照した方が軽い処理になると思われ
・・とレスしてましたが この「ドロップターゲット参照」というのが
いまいちわかりません。 誰か教えて〜。
>>655
setInterval( function(){baka()}, 1000);
↑はイフやイベントハンドラ関係なく実行されまふ。
>1000ミリ秒に1度、 ・・ではなく↑は1秒でふ。
良く分かんないけど1000ミリ秒は一秒だと思う。
>>655 setInterval使うならこんな感じです。
//フレームスクリプト
function intervalMethod() {
カウントダウン処理...
if (_global.countDownSec <= 0) {
clearInterval(_global.intervalID);
}
}
//ボタンスクリプト
on(release){
_global.intervalID = setInterval(intervalMethid,1000);
}
マイクロ秒単位で操作をしたいんですが、どういう方法があるでしょうか。ミリ秒は得られるんですが・・・
>>661 Flashの仕様上それは無理だと思います。
Flashはデータ処理と描画処理を同時に行うので、実質16ミリ秒程の刻みが限界です。
この数値は、FPSを60としたハイパフォーマンス描画処理での目安秒です。
646です
ありがとうございます。
ケースバイケースとテストしてみてってことですね
がんがります
664 :
656:04/05/09 20:22 ID:???
ドロップターゲットの使い方がわからないアホな656です。
この使い方じゃダメなんでしょうか?
_root.attachMovie("maru","M",600);
_root.attachMovie("kabe","K",500);
_root.K._x=300;
_root.K._y=10;
this.onEnterFrame=function(){
XX+=5;
_root.M._x=XX;
_root.M._y=250;
trace( _root.M._droptarget );
trace( eval(_root.M._droptarget) );
}
665 :
656:04/05/09 20:25 ID:tGsfMX9i
↑トレースしてもundefinedしか出ません。 ヘルプ見てもさっぱりだし。
ついでにage
>>664 on(press) {
startDrag(this,true);
}
on(release) {
stopDrag();
}
onClipEvent(load){
//意味なし
// Selection.setFocus("_root.inst1");
}
onClipEvent(enterFrame) {
this._x += 5;
if (this._droptarget.length>0) {
trace(this._droptarget);
}
}
これで試したけどドラッグ中じゃないと作用しないっぽい。
しかもオブジェクト中でドラッグを終えるとその値を保持し続けるし。
ゲーム用じゃなくてソフトウェア用だね。
_dropTarget は、マウスカーソルがポイントしているMCが入ってくるプロパティのようだね。
ドラッグしているMCの座標などは関係なく、単にマウス位置を見ているみたいだ。
どうやって
>>214氏の言うようにシューティングゲームの当たり判定に使うのかは
俺も正直よく分からんかったです。
まあリファレンスにもゴミ箱アイコンと捨てるファイルを例に挙げてたしね。
その例以外で使えそうなのはいらいら棒くらいだよ
開始ボタンの作り方を教えてください。
>>669 以下は開始ボタンを適応する上での基本的な構成です。
手順にそって作ってみてください。
レイヤー1
・フレーム1
初期化処理
・フレーム2〜3
プリロード処理
・フレーム4
ボタンにより再生されるまでthis.stop()
レイヤー2
1.ボタンシンボルをステージに貼り付ける。
2.ボタンシンボルをクリックした際に出るアクションウィンドウに以下を記述する。
on (release) {
this.play();
}
671 :
656:04/05/09 21:52 ID:???
みなさんありがと〜。 なんとなくですがわかりました。
672 :
Now_loading...774KB:04/05/09 22:52 ID:kWJajXrZ
AS自体の質問ではないのですがASを使っているときによく
使われる変数などを代入するためのダイナミックテキストてありますよね。
これってデバイスフォントにする方法とかってあるんでしょうか?
ダイナミックテキストに漢字やひらがななどの文章を入れようとすると
埋め込みフォントの全部を選択しないといけなくなり
ものすごく容量を喰ってしまうので困ってしまいます。
なにか良いアドバイスをいただけたら嬉しいです。
>>672 普通にシステムフォントしか使わないはずだけど?
"_"系フォントはFlashプレイヤー側に内臓された埋め込みフォントだし。
埋め込まれているなら、WinとMacで同じフォントを埋め込むと思うんだけど、
"_"系フォントを使ってもWinとMacで見た目が違うんだよなぁ。
埋め込まれているんじゃなくて、法則にそって見た目が近いフォントになっているんじゃ
ないかな?
675 :
Now_loading...774KB:04/05/09 23:19 ID:kWJajXrZ
ああ、ごめんなさい。謎が全て解けました。
どうやら画面から映像がはみ出さないようにマスクを使っていたのが
駄目だったみたいです。どうやらマスクの対象になっている下のレイヤーに
文字を入力すると表示されないんですね。初めて知りました。
これを埋め込みフォントにすると表示されるみたいだから
今までなにか意味不明で勘違いしていたみたいです。
676 :
Now_loading...774KB:04/05/10 10:20 ID:EGH1brrB
しーましェーん
loadMovieNum()で外部swfを読み込んだとき、読み込んだswfのサイズを
変更することってできますか?
677 :
Now_loading...774KB:04/05/10 10:45 ID:4GCeU5ld
質問なのですが、読み込んだ外部SWFのフレーム数(_totalframes)を変数に渡したいのですが、うまくできません。
symbol.loadMovie("hoge.swf");
a = symbol._totalframes;
新規で読み込んできた"hoge.swf"のフレーム数を"a"に渡したいのですが、もとの"symbol"のフレーム数が"a"に入ってしまいます。
お解かりの方、教えてください。
>>677 読み終わるまで待ってから代入してもダメかな?
>>676 何のためにそんなことする必要があるの?
680 :
Now_loading...774KB:04/05/10 13:20 ID:WHqgDjOh
お訪ねします。
外部XMLデータを、flashで読み込んでいます。
空白、改行を無視するようslides_xml.ignoreWhite = true;
を設定しています。
以下XMLテキストの、<credit></credit>間に文章を記述し、
flashのダイナミックテキストに出力したいです。
<photo num="1">
<pic>
<credit>white & Blue<br />2003</credit>
</pic>
</photo>
ですが、特殊文字 &がそのまま出力されてしまい、<br />もききません。
テキストボックスのhtmlレンダリングチェックをはずしたり、
<p>タグを使ってみたり、<![CDATA[white & Blue<br />2003]]>と入れてみたり
したのですが、&と返され、<br />はききません。
当方MX、MacOSX使用です。
どなたか、お心当たりありましたらご教授ください。
よろしくおねがいします。
681 :
680:04/05/10 13:23 ID:WHqgDjOh
Σ(゚д゚lll)
&が表示されてしまっている!
上記(&)の部分は、特殊文字(&)です。
&
683 :
Now_loading...774KB:04/05/11 00:40 ID:hIQHK98N
教えてください。
クリックしたら点滅するMCを作りました。
だいたい期待通り動作したのですが、いったんこのMCをremoveして、
再度attachし直すとなぜかsetIntervalが有効なままで、点滅した状態になってしまいます。
さっぱり意味が分かりません。お願いします。
ちなみにattachの際は元と同じname、depthでattachしました。
#initclip
function Hoge() {
this.intervalId;
}
Hoge.prototype = new MovieClip();
Hoge.prototype.blinkText = function(mc) {
if(mc._visible) {
mc._visible = false;
} else {
mc._visible = true;
}
}
Object.registerClass("hoge", HogeClass);
#nedinitclip
this.onRelase = function() {
this.intervalId = setInterval(this.blinkText, 1000, this);
}
>>683 _mc.onUnload に clearInterval() をセットしたらたぶんいけるかと。
setInterval() は早い話がレイヤー独立の透明MCみたいなものなので、
clearInterval() きっちり消してやらなきゃいかんです。
685 :
684:04/05/11 01:02 ID:???
//Hogeクラスのメソッド
this.callbackUnload = function() {
clearInterval(this.intervalId);
}
//実用時
moge = new Hoge();
moge.onUnload = moge.callbackUnload;
クラス内で直接this.onUnloadに無記名functionを関連付けてもいいけどね。
好みでどうぞ。
オブジェクトAからオブジェクトBにメソッドを送るわけですが、このときオブジェクトBはこのメソッドがオブジェクトAから
送られたということを感知する方法はありますか?単純にtest(this)と送ればいいんですが、カッタルイので・・・
オブジェクトAからオブジェクトBにメソッドを送るわけですが、このときオブジェクトBはこのメソッドがオブジェクトAから
送られたということを感知する方法はありますか?単純にtest(this)と送ればいいんですが、カッタルイので・・・
>>686 関数をオブジェクトに関連付けるだけでいいのでは?
b.a_methopotamia = a.meso;
689 :
683:04/05/11 01:16 ID:???
>>684 ありがとうございます。
> setInterval() は早い話がレイヤー独立の透明MCみたいなものなので、
> clearInterval() きっちり消してやらなきゃいかんです。
そういうことだったのですね。やってみます!
お手数ですが、タイムラインのAAを使ってstartボタンを作る時のActionScriptの配置の仕方を分かりやすく教えてくれませんか?
タイムラインのAAというのが既に分かりません。
>>693 感謝します。
ありがとうございました。
setInterval( function() { hoge() ;}, 1000 )
のようにやるのはなぜですか?
setInterval( hoge, 1000)
とはどう違うのですか?引数を与える必要があるときに、
上のように書くのでしょうか?
ボタンを取り付けた後にモーショントゥイーンを設定すると、モーショントゥイーンが表示されないんですが、どうすればよいでしょう?
>>695 その見解であってるかと。
>>696 状況がこれまたいまいち読めないけど、
>>693 のを使っているなら4フレ目で stop() させているのが原因。
2, 3と同じような2フレループでも仕込んでみるがよろし。4フレ目は空、5フレ目は this.gotoAndPlay(this._currentframe-1)
setInterval は enterframe イベント内では使いこなすのは難しいですか?
フレームアクションへの記述だと上手く行くんですけど。
>>695 ありがとん
>>698 enterframeだと、延々と新しいsetIntervalが
重ねて作られて、まともに動かなくなる余寒
setIntervalをしてくれる、functionを作って、
生成、消滅をちゃんと管理して、
何度も呼び出される可能性がある場合は、
ひとつだけしか生成できないようにフラグで制御するなり
工夫が必要かな。
>>698 setIntervalはボタンと同じように単発で関数を使われてこそ生きる。
例えば、enterframeで何度もストップウォッチやstartDrag(endDrag)は使いたくないでしょ?
だからenterframe内で細かく制御したいならonEnterFrameで完結させたほうがいい。
Intervalタイマーとenterframeイベントは似たもの同士だから併用が難しい。
面クリアなどでデータの一部を初期化するときに、
MCに書かれたスクリプトが先に実行されて
稀に動作がおかしくなります。
全て終わるまで、次の処理を待つにはどうしたらいいんでしょうか?
MXをXPで使っております。
>>701 データ初期化処理用と、ムービークリップ初期配置用と
2つのフレームを使えばいいのでは
703 :
Now_loading...774KB:04/05/12 23:03 ID:gQ6ACbof
FlashMX2004なんですが、本体で動作確認したときと、パブリッシュしたときで
動作が違うんです。バージョンの問題かと思い、最新版のプレイヤーを入れて、
パブリッシュもFlash7+AS2.0でやったのですが、駄目です。
しかも、パブリッシュしてできたexeやswfを直接実行すれば正常に動くのですが、
ブラウザで実行するとおかしくなります。
MXのバグなんでしょうか?そんな話、聞いたことありますか?
>>703 いや、どうおかしくなるのか聞かないと分からないでしょ。
705 :
Now_loading...774KB:04/05/12 23:21 ID:gQ6ACbof
RPGっぽいものを作っていまして、move.cgi?direction=upとかのURLをCGIに
送ってキャラクターを移動させ、その後XMLでキャラクターの座標を所得して
画面に表示するんです。
が、キャラクターの座標が移動されなかったり、GETメソッドが飛んだり飛ばなかったり、
あらゆる怪奇現象が多発するんです。もちろん、ブラウザで実行しなければ正常です。
706 :
Now_loading...774KB:04/05/12 23:24 ID:gQ6ACbof
追記。他のGETメソッド(HPやMP、アイテムの所得)はまったく問題なく動きます。ブラウザ上でも。
>>705 ブラウザ用のFlashプラグインは最新ですか?
あるMCだけ動かしたい時はどうすればいいですか?
709 :
Now_loading...774KB:04/05/12 23:27 ID:gQ6ACbof
7.0.19です。たぶん最新。
>>705 Flash内で自分でクエリーストリングくっつけてるの?
LoadVarオブジェクト使いなよ、それは仕様外。
711 :
Now_loading...774KB:04/05/12 23:40 ID:gQ6ACbof
>>710 XML使ってます。move.cgi?direction=upは移動後の座標を格納したXMLを返します。
というか、これは関係ないと思います。
ログを確認しましたが、サーバー側までリクエストが届いてないんですから。
ちゅうか、パブリッシュして動作が違うという時点でバグ臭い
>>711 CGIサーバとSWFファイルの置いてあるHTTPサーバは同じドメイン?
714 :
Now_loading...774KB:04/05/12 23:46 ID:gQ6ACbof
XML.sendAndLoad
メソッド; 指定された XML オブジェクトを XML ドキュメントにエンコードし、POST メソッドを使用して指定された URL に送ります。
仕様外だと言ってるだろ
716 :
Now_loading...774KB:04/05/12 23:49 ID:gQ6ACbof
使ってるのはXML.loadです。
XMLのサブドメイン排除関係のバグ臭い。
どうやって違うサブドメインだと判断しているんだろう?
単純に文字だけで比較しているのか、DNSでIP引いてるのか?
同じゆーとるやん
何でsendAndLoadがあるのか疑問にも思わんのかこの自己中は
720 :
Now_loading...774KB:04/05/13 00:08 ID:G301Od4Y
すみません、突然の閃きで原因わかりました。
何故かキャッシュを読み込んでいたようです。
Math.random()で適当な数字作って
飛ばすURLにmove.cgi?direction=up&8.182112431
とかして飛ばしたら、ちゃんと動きました。
これだとまた偶然キャッシュよむ恐れがあるので、perlなどのtime()と
同じような関数作って対策します。
・・・で、Flashのキャッシュ処理とかどうなってるんですかね?
GET信者にどう教えろってのさw
なんでやたら噛み付いてるんだ?
仕様厨だからだろ。
キャッシュなんてASの範囲外でしょ
まともなコーダーなら仕様厨は当然だろ
ブラウザの問題か、串通してたか、どっちかじゃね?
つーか、仕様なんて個人で作る分にはどうでもいいと思うのは俺だけか?
現実問題として、POST使うとデバッグがメンドイ。
HTMLの仕様と全然おかしいソース吐くビルダーもあるけどな
HTML4.0原理主義ウザい
>>720 ブラウザで対象ファイルを読み込む動作と一緒
対策は書いてあるとおりでいいんじゃない?
trace(new Date().getTime());
の値を使うのが簡単だと思う
正規の解決策を無視してバグですバグです騒がれてもな
解決法は一つじゃない。
別に面倒くさい方法取らなくても動くようにできるのなら、そのほうがいいだろう。
めんどくさくないよ、デバッグの腕が無いだけ
拗ねるなよw
そういう問題じゃないだろ
738 :
Now_loading...774KB:04/05/13 01:40 ID:VEYa7lj0
まあまあ。質問者の態度はちょっと引くけど、解決したようだし。
マターリいきましょ。
↓次
onClipEvent(enterframe){
if ( hukuatu > 100 ) koumon._xscale+=5 ; koumon._yscale+=5
if ( koumon._xscale>50 ) koumon._xscale=50 ; koumon._yscale=50 ; unko._y +=10
}
と記述しています。
普通のウンコの時は正常に出てくるのですが、下痢の時は肛門の広さに関係無く漏れてしまいます。
括約筋が緩いのでしょうか?
パンツにウンコ付いて困ってしまいます。
>>739 中国の赤ん坊はおむつをつけずに垂れ流します。
前も後ろもぱっくりと、ええ。
>739
普通のウンコの時と下痢の時便秘の時等でフラグ立てて分岐させてはいかがでしょうか
on(release){
this.onenterframe = function() {
_root.a._y -=math.floor(math.random()*5)
_root.b._y -=5 ; hoge++}
}
として、ボタンを押すとMCが動くようにしています。
別条件で設定した変数Xにhogeが追いついた時、この関数をストップさせたいのですが、止めかたがわかりません。
if(hoge == X ) 〜〜
の条件分岐で停止させる事が出来ると分かりやすいのですが、どんな方法があるでしょうか。
よろしくお願いします。
>>742 delete onenterframe
最近質問連発している人はいきあたりばったりのコードばかりだねえ
同じ人なら1冊きちんとした本を読んでからの方がいいよ
744 :
Now_loading...774KB:04/05/13 10:49 ID:BB7xmaOv
大きな円の中で小さな円がバウンドしているムービーを作成しています。
小さな円が大きな円の側面(曲面?)にヒットした時にバウンドさせたいと
思っているのですがActionScriptをどのように書けばよいのかわかりません。
FlashKitなどのサイトを検索したのですが、四面の中でボールがバウンドしているものしか
見つけられませんでした。
大きな円をくりぬいたMCを作り、hitTestを使ってやってみたりもしたのですが
小さな円がMCの中にあるのでうまくいきませんでした。
環境はMac、Flash MX 2004です。
よろしくお願いします。
>>744 大きな円の中心点からの距離で反射させるとか
746 :
742:04/05/13 11:53 ID:???
>>743 ごめんなさい。
普段は超基本的な方で質問させてもらってます。
ASの入門書を買って、次に買った本がjava scriptの本でして;;。
>>742も、変数を使って条件分岐させていたのですが、ボタン連打で挙動が心配になって考えた事です><
onClipEvent(enterframe) イベントハンドラ内の記述で上手く作動しました。感謝です。
今後はなるべく作例に沿った物から学習して行く事にします。申し訳ありませんでした・・・。
747 :
Now_loading...774KB:04/05/13 12:12 ID:BB7xmaOv
>>745 あ、たしかにそういう考えだとうまくいきそうな気がします。
そこで質問なのですがActionScriptで円はどのように書けばいいのでしょうか?
>>747 HelpでMovieClip.curveToを見るなり。例も載ってる
どこか記憶の片隅にtoString(n) で
n進法に変換出来たって覚えてたんだけど記憶間違いだったかな・・・。
ヘルプ見ても載って無いや。なんでやろ。
parseInt ?
752 :
749:04/05/13 16:47 ID:???
ごめん・・・マジごめん。
X=15
Y=X.toString(16)
trace(Y)
で f になった・・・。何でさっき出来なかったんだろぉ・・・。
しかし、 abcdef・・・・ って、数値としても文字列としても扱えるって事にならんかな。
ちっと面白いスクリプト組めるかもしれないから、試してくる。
半角アルファベットで入力された文字列を参照して〜〜〜みたいなのとか。
ご迷惑掛けたなり。
753 :
742:04/05/13 16:53 ID:???
あぁ、これ面白いかもしれないなー。
36進法で35代入すると、やっぱり z 吐き出してくれた。
2-36進法までは受けつけてくれるみたい。
けど、不可逆みたいだね。
X=z
Y=X.toString(10)
trace(Y)
はNaNだった。
単語から数字を推理させるようなロジカルパズルには使えそう。
スレ違いになりそうなので撤収しまー。
本当にありがとうー。
なんでこんなくだらない質問ばっかりするんだ?
>>754 お前は新しい発見をする喜びを知らない人間だ。
a.textに、a,b,c,d と入力し、ボタンを押す度に、b.textにa(1回目押す)。
b(2回目押す)。c(三回目押す)。とできないですか?
>756
マルチよくないよ
>>756 //framescript
cnt=0;
//buttonscript
on (release) {
switch (cnt) {
case 0:
b.text = a.text.split(",")[cnt];
break;
case 1:
c.text = a.text.split(",")[cnt];
break;
//以降増やしたい分だけつらつらと。
}
cnt++; //循環するならここで仕掛けをかませる事
}
早速のお返事、ありがとうございます。ただ、わたしの質問の仕方が悪かった
みたいですっ^^;
目的は、a.textに書かれたa,b,c,dをb.textにボタンを押すたびにa,b,c,dと
表示したいです。
例
ボタンを1回押す=b.textにa表示
2回目押す=b.textにb表示
3回目押す=b.textにc表示
です。表示部分のb.textは固定で、ボタンを押す度にa→b→c→dと表示され
るようにしたいです。
とりあえず、頂いたアドバイスにて、
case1;
b.text = a.text.split(",")[cnt];
break;
case2;
b.text = a.text.split(",")[cnt];
break;
と、b.textを固定すれば良いのかもしれませんが、case20くらいまで必要
なものですから、、、;; もっと短くできないでしょうか?^^;
ちなみに、下記とする事で、順次表示可能になったのですが、
a,b,c,dまで表示後、もう一度ボタンを押すとundefinedが表示
されてしまい、操作が止まってしまいます。
>>//循環するならここで仕掛けをかませる事
これはどうやったら良いのでしょうか?
on (release) {
b.text = a.text.split(",")[cnt];
break;
cnt++;
}
ジョーよぅ!
マルチポストなの?だったら後は自分でやって。
マルチポストですか?^^;すみません。なんの意味かわかりません。
やり方を教えて欲しいのですが、、、ダメでしょうかっ;;
マルチポスト ・・・ 複数のスレに同じ内容の質問を投稿すること
そうだったんですか>マルチ すみません。知らなかったものですから。
似たようなスレッドが沢山あったものですから、たくさん書き込めば
回答をいただけると思って。。。以後気をつけますm(_ _)m
//framescript
cnt=0;
field=4;
//buttonscript
on (release) {
b.text = a.text.split(",")[cnt%field];
cnt++;
if (cnt>=field) {
cnt = 0;
}
}
まあ横柄じゃなかったから。
ちなみにcnt%fieldは別にcntのままでも構わない。
ありがとうございましたっm(_ _)m 解らなくて、for使ったらPCフリーズ
しちゃったし、アクションスクリプトバイブルにコーヒーこぼしちゃうし、、、
本当に、ありがとうございましたっm(_ _)m
コーヒーなんか飲みながらプログラム書くんじゃねぇアホタレ
>>769 バイブル汚すような奴は地獄の業火に又吉されてください。
getURL を無限ループさせたら無限スクリプトになって、ブラクラが作れると思ったんですが、
for や while で故意に無限ループさせても、getURLには機能しないのでしょうか?
自分で実験ぐらいしてから書き込め。つーかブラクラなんか作るな。
二度とここには来んな
一応forとwhileで無限ループは組んだんだけど、無数にウィンドウ開くってのは無理ですた。
普通に実験してダメだったと言う書き方したつもりだったんだけど・・・。
getURLはブラクラ対策でループ無効な仕様なのかなー。と思っただけでつ。
ブラクラが欲しい訳ではなくて、ブラクラの仕組みから勉強しようかと。
嘘つけ作りたいだけだろ?
自分が嫌な事は他人にしても仕方無いでしょ。
よくわかんないけど、サイトのデータ、ローカルに落とせるフリーソフトあるから、それで調べてみたら。
フラッシュを見せる相手に、最初から(画質 低)で開かせる事ってできる
のでしょうか?
>>779 _quality = LOW;
マウスを乗せると下にメニューが伸びて、
クリックできるのを作ろうとしているのですが、
rolloverで開いた状態になるメニューに、ボタンを配置しておいても、
クリックができません。マウスの優先順位みたいなものを取られている
感があるのですが、うまく回避するにはどうしたらよいのでしょうか?
>>781 776 774
少しは質問に答えろ。いちいち絡みやがってムカつく奴だな。
藻前本当はロクに知らないんだろ。
たしかに、答えてから罵るのがマナーだな。
>>782 お前なんかよりよっぽど詳しいっつーのw
>>780 親ボタンをロールオーバーすると子ボタン群がニョイーーーって伸びる奴だね。
とりあえず、その質問内容だけだとどんな構造になってるのか分からない。
親ボタンをMCにして扱ってるのか、それともボタンのままやろうとしてるのか、
子ボタン然り。どんな構造で作ってるか、もしくはFLAをアップするのが良いと思う。
もし発表したくないならば、同じような感じの物を適当に作ってアップすれば良いんじゃないかな。
あまりにもくだらない質問でこたえる気がしない。
もっと高度な質問しろよ。ほとんど調べればわかることばかりじゃねぇか。
本当に低レベルな質問ばっかりだな。質問者の態度もやけにデカいし。
昔はもっといい質問があったのに・・・
回答者の態度のほうがでかい。お前何様のつもりだ
「教えてあげる」のに何で態度がデカくていけない?
愛が無い。
毒蝮三太夫がOKなのは、態度デカイし、毒舌だけど、愛があるから。
ただ態度でかくて毒舌なだけなら、ネットでしか虚勢張れないゴミと取られるぞ。
相手の顔も年齢も分からなくて、一切の平等な立場で会話が出来るネットだからこそ、
人格者であるべきだと思うんだけどね。
俺の場合、たまたまASについては質問者よりもわかったから答えるに過ぎない。
他の事について俺が逆に教えてもらう立場になる事だってあるんだし。
まぁ、答えたくないなら答える必要無いし。
とりあえず、文句言いたいだけならID出してくれないかな。NGワードに登録したい。
教えてくれるなら、態度がでかくてもいーよ。
でもあなた、教えてくれないじゃん。
790のこといってるなら、俺は違うぞ。
解答しないで愚痴だけ言ってる奴とは違う
態度に関して細かく言う気はないけど、
面白い質問が少なくなったのは、確かだ。
回答してる奴らだって自分で新しい言語作ったりするような奴はいないだろ?
どっかの本で読んだ知識で教えてる以上、面白いもつまらないも無いと思うんだがな。
俺個人じゃないが、うちの研究室で新しい言語作ってるよ。
新しい言語作ってる人=偉い
現存の言語を使ってる=糞
らしいですよ。
結局、色んな本が出てて、ASで出来る事ってのはほとんど出尽くした気がするんだよね。
俺は丁寧に教えてるつもりだけどな
ひらめきGETTERの登場以降無駄に荒れてる感が在る
801 :
780:04/05/14 22:25 ID:???
>785-786
ありがとん。
785のサンプルを真似しながら完成させますた
高度な話は技術交換スレでやれば良い。
こっちはAS版の質問スレで、初心者〜中級者くらいまでの質問受けるスタンスでOKだろう。
>>799 ってことは、どっかで見たことある質問ばかりになるのも仕方ないよねぇ。
っつぅことで、煽らず漏れが答えるので、次の質問者ドゾー
サブルーチンってどうやって定義するんですか?
>>804 //type 1
function methodName (param) {
//statement
}
//type2
this.methodName = function (param1, param2..) {
//statement
}
どちらかお好きな方をどうぞ
function名のつけ方のコツみたいなものってあります?
とにかく細かく分けるようにしていくと、
どこに命令を出していいのか分からなくなります。
また、名前が長すぎるとミススペルが発生して、
そんなFunctionないぞゴラァというエラーもでないため、
デバッグに手間取ります
俺は全部f1,f2,f3...って番号振ってるけどな
>>807 処理の種類に合わせて接頭語みないなのを設けるといいよ
どのくらいから長いというのかは分からないけど下のくらいは普通
initClass, initClip, initString //初期設定関数の例
getNameObj, getCurrentNameObj //取得:内容:対象
>>807 外部エディタを使うのも良いですよ。
例えばMeadowなら、キー操作でファイル中の関数名を拾って補完したりできます。
複雑なASを書かなくてはならない場合は特に、外部エディタを使うことをお勧めします。
parseInt 等で使う radix に変数を用いる方法はありますか?
どなたか、デコンパイラを持っている方おりませんか?もしよろしければ、
一つデコンパイルして頂きたい代物がございましてっm(_ _)m お願いでき
ますでしょうか?
>>814 違います。今は公開されてない代物ですが、以前一般公開されていた物です。
一応、ASを抜き出すまでのデコンパイルはできたのですが、swf→flaへデコンパイル
できるツール(例えば、MacのGorden等)をお持ちの方がいたら、お願いでき
ないかと思いましてっm(_ _)m
スマソ、詰まってるんで助けて下さい。
○←ボタンっぽいもの
□←なんかシンボルっぽいもの(100px×100px)
ボタンっぽいものを押すと、
シンボルっぽいものが拡大(200px×200pxとか)するようなスクリプトが組みたいんです。
教えてくださいな。
on(release) {
squareSymbol._width = 200;
squareSymbol._height = 200;
}
>>817 なるほど、on(release)を使えばいいんですね。
サンクス
今までHTMLやらCGIは独学で何とかしてきたんですけど、
素直に学習用の書籍を買ったほうがいいですかね?
>>818 らぶらぶはぁととかで学べば別にいらんかな。
ネット上に落ちてるサンプルを落とすのがいいよ。
ソースサンプルより、flaのサンプルを見ることが重要
CGIってのはPerlか?
イベントドリブン系のプログラム組んだ事あれば直ぐ馴染むよ
独学するなら、ちょっと遠回りだけどWinアプリやJavaアプリを触ってみるといい
821 :
Now_loading...774KB:04/05/16 00:47 ID:U/T/DjUG
マターリやればいいじゃん。
>AcitonScriptのことなら初歩的な質問でもなんでもおk
↑なんだから。
しょーも無い質問に回答するのがイヤなら、スルーするかスレ移動しなさいよ、って感じだね。
知識を得ると人はおごるねぇ。
荒れた原因の素は別問題だろ
済んだ事を蒸し返すな
823 :
Now_loading...774KB:04/05/16 13:18 ID:DhmvfEiC
>>823 第一引数
ファイルのある場所(./ は省略可、自分と同じディレクトリの意。 ../は自分の親のディレクトリ)
第ニ引数
空のMovieClipを用意して、そのパスに関連付ければいいんじゃないのかな?
825 :
Now_loading...774KB:04/05/16 13:50 ID:DhmvfEiC
>>824 >>823のファイルにActionScriptで
../:yspeed = Number(../:yspeed)+Number(/:gravity);
と書かれているのですが、「../:yspeed」は「:yspeed」ということですか?
このコロンの意味がいまいち理解できていないのですがよかったら教えてくれませんか?
あと第二引数の空のムービークリップ(この場合のmc)にパスで関連付けれるとなると
../をmc.にかえればいいということでしょうか?
_root.mc.loadMovie("spark.swf");と読み込んでいます。
>>825 ../ は親。_parent
./ が自分。this
それは書き換えろってことじゃないの?
_root.createEmptyMovieClip("Hoge_mc",depth); //depthは重なり順
_root.loadMovie("spark.swf",_root.Hoge_mc);
ものをダウンロードしてないから適切な解説になっとらんかもしれんね
まあ構文的にはこうだから
827 :
Now_loading...774KB:04/05/16 14:15 ID:DhmvfEiC
>>826 この場合「:」はそのままでいいってことですか?
ファイルが古いのかな?:って普通はArrayの時しか使わないからわかんないなぁ
それ単体で動くならloadMovieNumをつかってみるのもあり、ヘルプで使い方見てくだされ
:なんて使われてないけど?
MXバージョンのASに自動的に補完されるでしょ
あとこのプログラムは /spark みたいな部分を /mc.apark みたいに直さないといけない
てか、このプログラムが既に糞、普通組み込み用ならこんな書き方絶対しない
830 :
Now_loading...774KB:04/05/16 15:08 ID:DhmvfEiC
>> 828
そうだったのですか、「:」の正体がわかってよかったです。
とりあえず無視して
>>824さんや
>>826さんのように書き換えてみたら
うまく動いているみたいです。
ただ_root.mc.loadMovie("spark.swf");とやってもまだ表示されていません。
検索してloadMovieNumを使ってみたのですが、ターゲットはどうやって指定すればよいのですか?
_root.mc.loadMovieNum("spark.swf", 3)というようにやっているのですが表示されないです。
loadMovieNum("spark.swf", 3)だけだとindex.swfの上に表示されてしまいます。
mcにはマスクを使っているのでできればターゲツトを指定したいんです。
いやloadMovieNumは全ての入出力情報をシャットアウトするから使えない。
あれは外部のFlashを単独で使いたいときに使うもので、併用するものではない
ライブラリを読み込む形にすればいいじゃん
あとはsparks.flaの内容と同じ構成にすればそのまま使える
833 :
Now_loading...774KB:04/05/16 15:24 ID:DhmvfEiC
>>832 ライブラリを読み込むというのはswfファイル、例えばこの場合spark.swfを
ライブラリに登録するということですか?
>>833 いや「ライブラリを開く」で.flaを開いて、自分のライブラリにコピーしていく。
835 :
Now_loading...774KB:04/05/16 15:40 ID:DhmvfEiC
>>833 他にも読み込むファイルがたくさんあるのでライブラリにインポートすることを考えると
外部ファイルを読み込む形が後々の更新とかにもいいと思うんです。
できればloadMovie()を使って読み込みたいんですが、
>>823のファイルを
index.swfに読み込んで表示させる方法は無いですか?
>>830のように書き換えてもいるのですが、単体での表示は可能でも
読み込むと表示されなくなってしまいます。
836 :
Now_loading...774KB:04/05/16 15:42 ID:DhmvfEiC
ムービークリップ「M-controller」に書かれている
zpos = Number(zpos)+Number(../:zspeed);
scale = (Number(zpos*4)+100)/100;
factor = (Number(zpos/10)+100)/100;
setProperty("../spark", _x, (Number(../spark:_x)+Number(../:xspeed))*factor);
../:yspeed = Number(../:yspeed)+Number(/:gravity);
setProperty("../spark", _y, (Number(../spark:_y)+Number(../:yspeed))*factor);
setProperty("../spark", _xscale, scale*100);
setProperty("../spark", _yscale, scale*100);
setProperty("../spark", _alpha, ../spark:_alpha-../:fade);
if (Number(../spark:_alpha)<0) {
removeMovieClip("../");
}
を
837 :
Now_loading...774KB:04/05/16 15:44 ID:DhmvfEiC
zpos = Number(zpos)+Number(_parent:zspeed);
scale = (Number(zpos*8)+100)/100;
factor = (Number(zpos/200)+100)/100;
setProperty("_parent.spark", _x, (Number(_parent.spark:_x)+Number(_parent:xspeed))*factor);
_parent:yspeed = Number(_parent:yspeed)+Number(_parent:gravity);
setProperty("_parent.spark", _y, (Number(_parent.spark:_y)+Number(_parent:yspeed))*factor);
setProperty("_parent.spark", _xscale, scale*200);
setProperty("_parent.spark", _yscale, scale*200);
setProperty("_parent.spark", _rotation, scale*200);
setProperty("_parent.spark", _alpha, _parent.spark:_alpha-_parent:fade);
if (Number(_parent.spark:_alpha)<0) {
removeMovieClip("");
}
と書き換えてみました。
動くのですが、読み込むと表示されません。
他の部分も同じように書き換えました。
連カキコすんません。
_parent:yspeed = Number(_parent:yspeed)+Number(_parent:gravity);
はMXでは
_parent.yspeed = int(_parent.yspeed)+int(_parent.gravity);
とすればいい
setProperty("_parent.spark", _yscale, scale*200);
はMXでは
_parent.spark._yscale = scale*200;
とすればいい
839 :
Now_loading...774KB:04/05/16 16:33 ID:DhmvfEiC
>>838 zpos = int(zpos)+int(_parent.zspeed);
scale = (int(zpos*8)+100)/100;
factor = (int(zpos/200)+100)/100;
setProperty("_parent.spark", _x, (int(_parent.spark._x)+int(_parent.xspeed))*factor);
setProperty("_parent.spark", _y, (int(_parent.spark._y)+int(_parent.yspeed))*factor);
_parent.yspeed = int(_parent.yspeed)+int(_parent.gravity);
_parent.spark._xscale = scale*200;
_parent.spark._yscale = scale*200;
_parent.spark._rotation = scale*200;
setProperty("_parent.spark", _alpha, _parent.spark._alpha-_parent.fade);
if (int(_parent.spark._alpha)<0) {
removeMovieClip("");
}
上記のように変更してみました。
いまだ表示されません。
840 :
Now_loading...774KB:04/05/16 16:35 ID:DhmvfEiC
他の場所に下記のActionScriptが書かれているのですが
gravity = .98;
setProperty("/spark", _visible, false);
startDrag("/draggie", true);
「/」をとっても動くのですがこれはどうすればいいですか?
>>839 setPropertyがまだ残ってるじゃん
842 :
Now_loading...774KB:04/05/16 16:43 ID:DhmvfEiC
>>841 zpos = int(zpos)+int(_parent.zspeed);
scale = (int(zpos*8)+100)/100;
factor = (int(zpos/200)+100)/100;
_parent.spark._x = int(_parent.spark._x)+int(_parent.xspeed)*factor;
_parent.spark._y = int(_parent.spark._y)+int(_parent.yspeed)*factor;
_parent.yspeed = int(_parent.yspeed)+int(_parent.gravity);
_parent.spark._xscale = scale*200;
_parent.spark._yscale = scale*200;
_parent.spark._rotation = scale*200;
_parent.spark._alpha = _parent.spark._alpha-_parent.fade;
if (_parent.spark._alpha<0) {
removeMovieClip("_parent.spark");
}
こんな感じですか?
全ての/を一々直すのは間違いなんじゃないのかな?
ライブラリを開くでライブラリをコピーしていって、
同じ環境を再現していかないと気づかないバグに悩まされ続けるよ
ライブラリにコピーしたら、あとはそっくりの構成を作るだけじゃん
844 :
Now_loading...774KB:04/05/16 16:49 ID:DhmvfEiC
間違えた。こうでした
_parent.spark._x = (int(_parent.spark._x)+int(_parent.xspeed))*factor;
_parent.spark._y = (int(_parent.spark._y)+int(_parent.yspeed))*factor;
>>843 じつはまだ他にもファイルがあるんです。
ビデオクリップや他の作品の紹介などでindex.swfを軽いサイズにするだけでなく、
あとからのファイルのやり取りを扱いやすいようにと考えているのですが
やはりパスを変えていくだけでは無理ですか?
>>846 sparks.flaを除いた限りでは、
>>843の使い方しか頭に入れてないから、そうしなさい。
考えてるほど手間じゃないし、重くもならない。所詮728バイト じゃん。
848 :
Now_loading...774KB:04/05/16 16:57 ID:DhmvfEiC
>>845 動いているのですが、まだindex.swfから表示はされません。
ポインターが手の形に変わるので読み込まれていることには間違いないと思います。
ASでも
ぬるぽ ってありますか?
>>848 動かないなら
>>843、それ以外に方法は無い。
>>849 NullPointerならあるよ
ただしNullPointerExceptionは投げません
851 :
Now_loading...774KB:04/05/16 17:32 ID:DhmvfEiC
>>850 このファイルをベースにいろいろと作っていこうと考えていたので、
似たようなファイル探してみます。
まだ他に解決法か間違いや何かあればよろしくお願いします。
>>851 ドラックしたりするだけじゃん、なに億劫になってんの?
まあいいや、じゃあこの問題は解決ってことで。
なぜASスレは香ばしい先生ばかりなのですか?
香ばしい質問ばかりするからだよ
FlashでDirectX使いたいんですが、どういう方法がありますか?
外部APIにアクセスできないからどうしようもないのでは?
方法はあるはずです。DirectX使ったやつ実際に見たことありますから
>>858 リンク先ある?別のものと勘違いしてるんじゃないのかなと。
そんなわけないです。動作条件にDirextX *以上って描いてましたし。
リンク先はわかりません
別のActiveXコンポーネントをFlashだと思い込んでるのか、
それともSWFプレイヤーにDirectXが使われているのかのどちらかです
意地悪しないで教えてください
誰か他にわかる人いないんですか?
無理。
Directorと勘違いしてると思われ。
そうじゃないと言い張るなら、そのサイトのURL張れ。
もういいです。要するに、わからないんですね。
もっと詳しい人に聞きます
随分と生きの良いデムパさんが現れましたな・・・
swf を DirectX を使った exe に変換するのを見たことがある。
それはDirectXをFlashが利用してるのとは違うのでは?
変換だけならSWFからでも出来るんだし・・・
そのやり方では嫌なんです的発言はしないでおこう
「それで解決する」のに別の切り口なんて探してはくれないよ
荒れる元にしかならないから、諦めて2chの外で聞こう
すいません。
うんこしてきます。
WinXP MX2004
swfに使用期限を設ける事ってできますか?
解る方おりましたら、教えてくださいませ。
>>871 どのくらい厳密なものが必要なのでしょうか?
簡単なものなら起動時にDateのチェックだけすればいい。
厳密に管理したいなら管理サーバみたいなものを用意して
起動時にアクティべーションを許可するようにするとか。
ありがとうございます。厳密さで言いますと、「10日で期限を設けたら、
その後100%開けない」程の堅いものが良いです。
>>厳密に管理したいなら管理サーバみたいなものを用意して
起動時にアクティべーションを許可するようにするとか。
この方法は、こちらで「アクセス」を遮断すると、一切使えなくなるという
方法でしょうか?また、この方法を付けるには、難しいのでしょうか?
>>873 swf形式は仕様が公開されているので、セキュアな用途には無理があります。
他の手段を探したほうが良いでしょう。
>>874 ・・・(ノД;)
ちなみに、Dateのチェック方法は、どんなでしょうか?知識のある人なら、
簡単に「解除?」できてしまうのでしょうかっ。
>>875 できます。解析用のソフトも商用・フリー共に揃っていますので、
知識が無くても内容を閲覧することは簡単です。
制限用のASを除去するのもASが読める人であれば簡単でしょう。
swfは悪意を持って接すれば、内容は丸見えなフォーマットです。
>>876 そうですかっ^^;ありがとうございましたっm(_ _)m
限定公開みたいな感じか。
dateオブジェクト使えば作れるが、
PCの時計を前に戻すだけで余裕で解除されるよ。
動的なデータをcgi側から提供すれば、
ある程度は硬くなるかもしれないが、
プロテクトのために使うのは激しく非効率。
>>878 q(T▽Tq)(pT▽T)p ありがとうございましたっm(_ _;)m
10日経ったらデリるようにしとけばある程度堅くなるんでない?
スパイ大作戦みたいなイメージで。
ノーキャッシュにしてrootに
PHPか何かから返させたswfのurlにloadmovie
_urlチェックと同じページにLC&DATE仕込む
これだけでもだいぶ違うと思いますです。
asvとかSSDのデコンパツールで、試用期間解除した人いる?
あれって、クレカのみ?だれか売ってくれない?eバンクが銀振等で。
>>881 ありがとうございますっm(_ _)m しかし、、、難しそうですね^^;
レスの内容を見る限りでは、半分は何の事なのかわかりませんっ^^;
とりあえず勝手にコピーされて困るくらい
いいもの作ってから考えようぜ。
この場合こういうレスでいいのかな?
>>884 オマエガナー
あるネトゲのツールを開発したんですっ^^
で、一部の人だけに「お試し版」として配布しようと思ったのですが、
何やら簡単にはいかないようなので、諦める方向ですっ^^;
まぁ、「自分だけで、こっそり楽しめ」って事にしておきますっ(爆
> あるネトゲのツール
BOTじゃねぇだろうな
んと。
Flashでツール・・・??ですか。
俺はswfをバイナリでRSA暗号化し、別のswfでそのファイルをサーバーから取得したキーで復号化して読み込む方式を使ってるが。
妄想っぽいな。あるいは着せ替え程度か。
FCSでも使わないとまともなツールはつくれんだろうし。
まぁヌル区切りテキストデータならFlashでツール作れるかもな
>>889 ん?loadMovieする以外に外部swfを具現化する方法があるのん?
分割ツールで分解すりゃいい。
>>893 なんか文脈が読めない
外部ライブラリとかそういうこと?
895 :
Now_loading...774KB:04/05/17 23:44 ID:0A1hF078
親.swfファイルから、子.swfファイルを「loadMovie()」で呼び出したら、
Soundオブジェクトに「attachSound()」した子.swfの音がなりません。
↓のスクリプトで、子.swfを単独で再生するとちゃんと鳴ってます。
var s1 = new Sound();
s1.attachSound("linkagename");
-------------------------------
buttonname_btn.onRelease = function() {
s1.start();
}
昔ながらの方法でフレームに音声ファイルを置いたら問題なく音が鳴るみたいなんですが、
ランダムで音を変えたいので……何か解決方法はないでしょうか。
(バージョンはMX、MacOS9です)
896 :
895:04/05/17 23:56 ID:???
↑のスクリプトは子.swfに記述してます。
s1への参照はちゃんと出来てるかな?
s1.attachSound...
s1.ObjTest = "this is s1 instance";
-------------------------------
buttonname_btn.onRelease = function() {
trace("s1.ObjTest = " + s1.ObjTest );
s1.start();
}
899 :
895:04/05/18 00:34 ID:???
色々試してみたんですが、
-------------
var s1 = new Sound();
s1.attachSound("linkagename");
s1.ObjTest = "this is s1 instance";
trace("s1.ObjTest = " + s1.ObjTest );
s1.start();
-------------
で、これだと本来なら.swfを読み込んだ直後にtraceウィンドウと音が鳴る筈で、
実際読み込まれる側単独で再生するとちゃんとtraceもSoundも動いてるのですが、
やっぱり元.swfから読み込んだ時は両方とも何も起こらず……
(;´Д`)ウェー?
900 :
895:04/05/18 01:23 ID:???
すまん、自己解決しますた
子.swfで呼び出される音声ファイルが、
親.swfのところにないといかんモヨリ
子.swfに置いてあった.mp3を親.swfにコピったら動きました。
……たぶん
JSからASの変数を操作する【SetVariable】が使える環境って
Win+IE6以外で何がありますか?
あと、NN7でJSのタイムラン操作命令【Play】等って動かないんでしょうか?
>>221 つまりこう言う事じゃないのか?
x~2 + y~2 = r~2
y*y = r*r - x*x
y = Math.sqrt(r*r-x*x)
これで変数xを代入してやればyが出る。公式だって関数に過ぎないんだから、スクリプトで読めるようにすれば良いのよ。
んで、この公式で座標は求まる訳で、座標が求まれば (x1-x2)で横の長さ、(y1-y2)で縦の長さが出る。
P点Q点として、大きい数から小さい数を引くって言う条件が必要だから、
Math.max(x1,x2)-Math.min(x1,x2) とでも条件付けておけば大丈夫でしょ。ただ、x1=x2 の時は例外として設定しなきゃダメ。
2辺の長さが分かれば、残りの1辺の長さも求まる訳で。この場合は斜辺だから、三平方の定理から
O = Math.sqrt(P*P+Q*Q) になるよな。
3辺から面積求めるならヘロンの公式、2辺と角度から面積求めるならば、余弦定理でも分解して関数にすれば良い。
そこまでは面倒見きれないんで、お好きな方でどうぞ。
コンピュータならヘロンの公式より、積分したほうが速い
制作環境と、Perlのことについて質問です
現在オールフラッシュサイトを持っているのですが
ヤハリインタラクティブなページのために
Flashとの連携を考えた、CGIスクリプトに
手を出したいです。現在借りている
レンタル鯖がPHPはとりあえずダメなので
Perlでいきたいです。ちょっとしたデータベースも
操作したいのです。
こういうのに目覚めた方は取り敢えず、
Windows環境で制作されているの
でしょうか?また、PHP+MySQLのような解説本が
多いですが、Perlでもダイジョブでしょうか?
>>904 PerlにはDB機能が付いてたような気がします(OS依存かも知れないけど)
でもRDBじゃないのなら、テキストファイルで管理したほうが楽かと思われ
>>904 個人サイト程度のデータなら普通にテキストファイルで十分だと思ふ。
907 :
Now_loading...774KB:04/05/19 01:37 ID:hX+VSJnV
インスタンス名を変数に渡すことってできます?
知ってる人いたらやり方教えてください
for in文とか、MCなら_nameとか。
変数にインスタンス名を格納していんだけどどうすればいい?
>>909 それをして、何をしたいのか。
話はまずそこからだ。
evalをつかえばいいことがわかりますた。
910さん返信ありがとう。。。
912 :
910:04/05/19 16:17 ID:???
>>911 evalは古い方法だから[]アクセッサの使い方覚えた方が良いぞ。
質問させてください!!
1−9 の数字を、ランダムに並べたいです。
a = new array(1,2,3,4,5,6,7,8,9)
b = Math.floor(Math.random() * a.length )
c = a[b]
ってのと、 a.splice(b,1) ってのを使うであろうと思うのですが、
そこから先、どうすれば連続して a.length が0になるまで取得させ続けるのかがわかりません!
どなたか教えてください!!よろしくお願いします!
>>913 > 1−9 の数字を、ランダムに並べたいです。
1〜9を重複無くランダムに並べたいのか、
それとも重複ありでただ1〜9の値が欲しいのかで処理が変わるよ
>>914 ランダムに重複無しで並べたいです!
パーミテーションな感覚です!!
選択した物をspliceで切りとって行くってあたりが難しいっす。
a = new array(1,2,3,4,5,6,7,8,9) ;
for (i=0; i<100; i++) {
r = Math.floor( Math.random() * a.length );
work = a[0];
a[0] = a[r];
a[r] = work;
}
これを関数化してreturnしてやるのが簡単でいいかな
>>915 a = new array(1,2,3,4,5,6,7,8,9)
c = new array()
while(a[0]){c.push(a.splice(Math.floor(Math.random() * a.length ));}
//while(c.length != 0)
trace(c)
spliceはpushと組み合わせればいいよ。
918 :
915:04/05/19 17:38 ID:???
>>916 ちょっと難しいっすね。配列から取得した変数が配列に代入されるあたりが。
もう少しASに慣れてから理解しようと思います。
ありがトウでした。
>>917 なるほどー。空の配列を準備しておいて、そこにブチ込んで行く感じですね。
理解しました。
whileの使い方がなかなか玄人っぽくて格好良いっすね。
それをアレンジして使ってみようと思います。ありがトウでした。
spliceは戻り値ないのでは?
重複管理するなら916のじゃねーと無理じゃね?
921 :
915:04/05/19 18:20 ID:???
ダメぽ・・・><
922 :
916:04/05/19 18:32 ID:???
function randArray() {
var a,i,work;
a = new array(1,2,3,4,5,6,7,8,9);
for (i=0; i<100; i++) { r = Math.floor( Math.random() * a.length );
work = a[0];
a[0] = a[r];
a[r] = work;
}
return a;
}
ra = randArray();
trace(ra);
ダメでないってw
function shuffle(array:Array):Array{
var i:Number;
for(i=0;i<array.length;i++){
var j:Number = Math.floor(Math.random()*array.length);
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
>>916 100回ループすることに意味ってあるの?
924 :
917:04/05/19 18:50 ID:???
>>921 ああ!ごめん。spliceの引数が足りなかったよ。
while(a[0]){
c.push(a.splice(Math.floor(Math.random() * a.length),1));}
}
ランダムに並べ替えるだけなら、
a = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
i = a.length
while (i ) {
r = Math.floor(Math.random()*i)
work = a[--i]
a[i] = a[r]
a[r] = work
}
trace(a)
でいいよ。
>>923 精度の問題。少なすぎるとシャッフルにならない。
926 :
915:04/05/19 18:55 ID:???
>>922 関数化ありがとうございマス。
完璧に動いたのですが、
work = a[0];
a[0] = a[r];
a[r] = work;
}
return a;
この部分の仕組みが難しくて。
work = a[0] で work には a[0] = a[r] で置き換わった a[r] の値が代入されると思うんですが、
a[r] は work に置き換わってると・・・。 work には work が代入されると見えてしまいます。
これがどうして、一度選ばれた物を再び選ばなくなるシステムなのかが知りたいです。
せっかくですので、自分の物にしたく思います。面倒でなかったら教えてくださいませ・・・・。
>>926 a[0]=a[r]とした時点で同じ値が2つ出来てしまうのはわかるよね?
ex) a=1 , b=2
a=b //a=2, b=2
b=a //やってもやらなくてもどちらも2のまま
間にworkとよばれる一時的に値をとっておく変数を用意して
work = a; //work=1, a=1
a = b; //a=2, b=2
b = work //work=1, b=2
これならちゃんと入れ替わる
work = a; //work=1, a=1
a = b; //a=2, b=2
b = work //work=1, b=1 ←ここ修正
はずかしいミスをしてしまったw
>>925 要素の数以上のシャッフルって確率的に意味がないような・・・そうでもない?
>>925 >少なすぎるとシャッフルにならない。
これはちょっと誤解だね。9枚のカードだったら最高でも9回順番に引いて
引いたカードを別の場所に重ねていけばいいだけでしょ?
100回もやるのはよっぽど心配性の人だけ。
たいした時間じゃないだろうけど、無駄な処理だよね。
>>929 要素数分のランダムってことは母体となってる配列要素が分かってれば
必ず幾つかは母体となった配列と同じ内容の場所が生まれる
1,2,3,4,5,6,7,8,9 //元
1,9,7,4,3,6,8,2,5 //ランダム配列
要素数以上でかき混ぜる事は必須ですよ
混ざってない麻雀って最悪だよなw
933 :
915:04/05/19 19:27 ID:???
>>928 なるほど〜理解出来ました。
降順に記述されてる物を一度ずつ実行するって事をすっかり忘れてました。
数学的な思考だと陥りやすいかもしれませんね!
>>931 1回目でせっかく並べ替えた順番を2回目で元に戻してしまわない保障はあるの?
数をこなせばいいと考えるのはまったく馬鹿げてる考え方だよ。
適当でいいなら別に構わないけど、あんまりプログラムに向いてない考え方だと思うなあ。
>>934 >1回目でせっかく並べ替えた順番を2回目で元に戻してしまわない保障はあるの?
その可能性をランダム要素と言う。ランダムで発生させている事象である限り、ランダムの範疇であれば問題無し。
どっちが良いかを確かめるには検定するしか無い・・・。面倒だね。
まぁ、確率論で議論が起こるのは間違いな訳でさ。
とりあえず新規配列に要素をランダム抽出して放り込むのが理想かと思う。
>>931 1/要素数の確率のランダムでシャフルしている限り
要素数以上のシャフルには意味が無いような・・・
正しい?数学の偉い人
>>934 要素数分だけ置き換えるほうがプログラム向きじゃないってw
マジでスレ違い
>>936 要素数のみなら毎回確実に同じ場所に同じ値が入るケースが生まれる
0〜8までをうまいこと返してくれるほどrandomは親切じゃない
解決した事でスレを汚さなくていいよ
おまいら、アルゴリズムの本くらい読みなさい
では次の方どうぞ↓
>>941 このスレの質問者がそれを理解しないからそういうので教えるのはどうかと
944 :
Now_loading...774KB:04/05/19 21:12 ID:Q422EoG7
外部ファイル名に変数使うことってできる?
例えば
myLoadVars.load("test.txt");
みたいなのを
test.swf?temp=aaa で読みこむ時に持たせて
myLoadVars.load("testaaa.txt");
みたいに使いたいんだけど。
hoge="test" + temp + ".txt";
myLoadVars.load(hoge);
次スレテンプレ考えましょうか
rno = 2;
trace("物凄い勢いで怪盗するスレ その3");
trace("テンプレは>>" + rno)
this.gotoAndPlay(rno);
2 :ど、どろぼー :04/03/12 14:18 ID:???
関連スレ
【AS】ActionScript技術交換スレ Part2 (ASを完全に組める人限定
http://pc4.2ch.net/test/read.cgi/swf/1071929938/ ASお勉強さいと
FLASH ActionScript Helper (初級〜中級。ASの概念をじっくりと
ttp://village.infoweb.ne.jp/%7Eginga/flashhelper/ AS書籍
おしえて!!Macromedia FLASH MX Action Script (イラスト入りで分かりやすい
macromedia FLASH ActionScriptバイブル (リファレンス本
続FLASH ActionScriptバイブル MXのツボ (上の続編、MXに対応
Macromedia Flash Mx 2004 Actionscript 2.0 Dictionary
Actionscript for Flash Mx: The Definitive Guide
購入は書籍店か、アマゾンあたりで。
ぐあ〜昨日の夜面白そうだったなー。参加したかったぜ・・・。
コンビネーション配列のスクリプトか。
漏れはsplice push派だ。
a = new array(1,2,3,4,5,6,7,8,9)
c = new array()
while(a.length){c.push(a.splice(Math.floor(Math.random() * a.length),1 ))}
trace(c)
これ。
>>949 「ど、どろぼー」よりも個人的には「やつはとんでもないものを盗んでいきました」のほうが(ry
952 :
Now_loading...774KB:04/05/20 16:48 ID:zmgcXuY2
初歩的な質問ですいません。
当方使用環境
MAC OSX 10.3.3
Flash MXにて
GET URLで新規のウインドウを開く際
アドレスバーやステイタスバーを消したい(消えたウインドウを新規に作りたい)のですが、、
過去スレの200あたりに似た様なレスがあったので自分なりに、
ノーマルモードからエキスパートモードに切り替え、
on (release){
getURL("javascript:void(window.open(”アドレス","_blank"))");
}
また
on (release){
getURL("javascript:void(window.open("アドレス","_blank”,"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,))");
}
などとやってみたのですが旨くいきませんでした、、、。
基本的な所などが全くわかっていないかもしれないんですが
どうかご教授願いできませんでしょうか?
954 :
Now_loading...774KB:04/05/20 17:43 ID:lfU3N+6f
geturl() で target=_new みたいなことってできないんでしょうか?
ターゲットウィンドウをどんどん開いてしまう_blankを使うのが嫌で
いろいろとサイト検索したのですが探し方が悪かったのか見つけられなかったです。
フラッシュで作ったリンクサイトなのですがリモートコントローラーみたいに
一つのテレビ(新ウィンドウ)を切り替えるようにしたいのですが教えてください。
>>952 TextAreaコンポーネントじゃだめなの?
http://2ch.senshin.org/owarai/cgi-bin/img-box/img20040520190228.lzh 質問させてください。
言葉で説明しにくいので、ファイルをアップしました。
イメージとしては、デコトラとかの光が順次動いて行くという感じです。
一応動いてはいるのですが、今の状態では初期設定と言う事で、配置したMC全てのアクションで
onClipEvent(load){
hoge = new String(this._name)
baka = hoge.charAt(1)
gotoAndPlay(baka)}
を記述しています。
何か、フレームアクションなどでスマートに全てのMCの名前を参照して命令を送ると言う事は可能でしょうか?
配置した全てのMCに記述ではなく、一括処理が出来れば嬉しく思っています。
方法がありましたらよろしくお願いします。
>>953 とりあえず、
getURL('javascript:void(window.open("aaa.html","_blank"))');
っていうふうに、javascriptの宣言文を囲むクオーテーションを、
シングルクオーテーションにする必要があると思うが。
>>954 getURLでウィンドウの指定はできる。でもwindows/IEでウインドウの指定
ができないっていうバグがあるらしい。詳しい内容と対処法は
http://f-site.org/archives/000288.html
>>956 インスタンス名のリスト作ってフレームスクリプトでまとめて初期化。
あとインスタンス名をパラメータに使うのは余り美しくないかも・・・
パラメータを用意するか剰余算をつかって順番に初期化していく方が
いいかも。
インスタンス名を連番とかバラバラにして
以下フレームスクリプト
init();
function init(){
var nameList=new Array("a1","a2","a3","a4","a5"....);
for(i=0;i<nameList.length;i++){
_root[nameList[i]].gotoAndPlay(i%4+1);
}
}
動かなかったらゴメン
>>957 レスありがとうございます。
シングルクオーテーションに置き換え、
レスのスクリプトをもとに
on (release){
getURL('javascript:void(window.open("aaa.html","_blank"))');
}
と変更したのですが、残念ながら開いたウインドウのアドレスバーは
消えてくれませんでした。
またそれをもとに
on (release){
getURL('javascript:void(window.open("アドレス","_blank”,"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,))');
}
と言う形も試したんですが、今度はウインドウすらあらわれない始末、、
先ほどまで本屋にいって打開策を探したのですが、何せ田舎なもので解決策も見つからずで、、
以上を踏まえ、何かご指摘 アドバイス お願いできませんでしょうか、、。
よろしくお願いします。
>>959 キャッシュ対策はどうよ?
>>960 そもそもあなたの環境でそういうサブウィンドウ開けるjavascriptの
コードわかる?swfより、OSとブラウザの問題じゃねの?
962 :
959:04/05/20 22:01 ID:???
キャッシュ対策?ブラウザ再起動しながらやっているんですが、
それだけでは不完全ですか?
>>960 ふと気づいたんだが
"_blank”
の、右の方のクオーテーション記号が何か変、かも。
FS_COMMANDだったかそういう機能を使うのが正規のやり方なんだっけか?
>>959 実行してないからはずしてるかもだけど
onLoadはloadの前に書いたほうがいい。
あとCGIの戻り値って name = value みたいに
=の前後に空白入れてもいいんだっけか?
>>960 scrollbars=yesのうしろの「,」が邪魔なんじゃない?
967 :
959:04/05/20 23:10 ID:???
>>965 おおウマクいきました。空白がネックでした。
助かりましたです。
Perl全くの初心者だと、この本は詳細はハショってるので
苦労します・・。Flashのように、オーサリングソフトで
文法チェックしてくれるわけではないんで辛いっすね。
ありがとうございました。
WIN_XP MX2004
Lv.text(複数行)を配置し、hoge1、hoge2のオブジェクトのうち
Lv.text(複数行)に、hogeのレベルを表示させるようにしてあります。
Lv.text欄の表示↓
10 //hoge1のレベル
20 //hoge2のレベル
(各hogeのLvを1行ずつ表示)
そして、この二つのオブジェクトのLVのうち、
if ( Lv.text < 15 );
だっふんだ〜
という感じで、Lvが15以下だった場合、だっふんだを実行させたかった
のですが、できませんっ^^; この、複数行のtextボックスに1行ずつ
表示された中の部分をifに当てるには、何か方法があるのでしょうか?
説明がわかりにくかったら、ごめんなさいっ^^;
969 :
Now_loading...774KB:04/05/21 00:19 ID:8Neblu3K
質問させていただきます。
変数の値が、数値か文字列かを判定するにはどうしたらいいのでしょう?
例えば、
function hoge(hensu){
}
と渡されたパラメータであるhensuの値が、数字か、文字かを判定して
処理を分けたいのです。
ぐぐったり、フォーラム等で探したのですが、phpでの処理しかみつかりません。。
よろしくおねがいします。
Lv.text.split("\n")[i];
とかそういうこと?
>>969 typeof(hensu)=="number";
typeof(hensu)=="string";
973 :
969:04/05/21 01:04 ID:8Neblu3K
>>971,972
ありがとうございます!
typeof!まさにこれです。ほんとうにありがとうございました。
parseIntも初めて知ったのですが、いろんな発想がありますね〜
parseIntを調べたらば、isNaNというのを見つけました。
これで、数字か否かも調べられることもわかり、大変助かりました!
>>970 Lv = \r として、改行しているだけですっ。
>>961様
>>963様
>>966様
ありがとうございます。(><)
先ほど
on (release){
getURL('javascript:void(window.open("column.html","_blank","toolbar=no,menubar=no"))');
}
という形で自分の思い描いていた新規のサブウインドウが開けました。
>>966様のご指摘どおりscrollbars=yesのうしろの「,」が邪魔だったみたいです。
初心者の房な質問に色々とアドバイスくださいまして本当に感謝です。
>>974 for(i=0;i<hoge.length;i++){
if(this["hoge"+i].Lv<15){
trace("脱糞だ!");
break;
}
みたいな感じ?
けっこう超能力使ったけどこれで限界かな。
977 :
976:04/05/21 17:30 ID:???
訂正
Lv.text="";
hogeLv=new Array[];
hogeLv[0]=10;
hogeLv[1]=20;
for(i=0;i<hogeLv.length;i++){
if(hogeLv[i]<15){
trace("脱糞だ!");
Lv.text+=hoge[i]+"\n";
}
>>977 訂正の方で、できましたっ!ありがとうございますっm(_ _)mm(_ _)mm(_ _)m
>>977 訂正の方で、できましたっ!ありがとうございますっm(_ _)mm(_ _)mm(_ _)m