ActionScript 誰かが物凄い勢いで解答するスレ 8
1 :
Now_loading...774KB :
2005/07/23(土) 02:57:02 ID:DuZvu8zG
,-、
( ) 今世紀最大のAS職人、まっつんが2Getだぜ!
____ '、;:;:;;;;:;;゙i__゙i \
i'゙i;====ヨ ,! |
>>3 スキマ産業 サイト閉鎖したんじゃなかったの(プ
、 ! ''゙i;:;:;:;:;;! ,r‐'゙゙'' ,/
>>4 wosa せっかく建てた会社も倒産寸前ですか(プ
ー‐-、,,;---、ゞ ゙''''''i'/ /
>>5 のし いい歳してポケモンですかそうですか(プ
゙ ゙` ,ノ
>>6 512kb お前の得意分野は黒作品だったよな(プ
゙___ ,;. 、 ,ソ
>>7 monochrome 最悪アンチは常に監視してますってか(プ
゙i` ,:;'' i; ヾi
>>8 哭蔵 お前一生Fラジやってろよ同人部とかどうでもいいから(プ
| '" ;: ゙|
>>9 OoOoO いきなりbbs荒らされて哀れですね(プ
| ;: !
>>10 2501 男声の幼女って珍しいよね(プ
| ;;! ,!>11 G-style 小遣い稼ぎもほどほどにな(プ
i'^ゝ _゙__,,!、 >12 神倉みゆ 鋼の錬金術師って面白くないよね(プ
F、;ニニニニ、゙;‐''ヾ' >13 つかはら ウシガエルとかいい加減飽きたから(プ
‐'′ ゙i i i >14 青池良輔 CATMAN必死だな(プ
,!,! ,!、>15 かーず エロ広告って恥ずかしいよな(プ
_,,ノノ ; >16 すなふえ いい加減イベントの主催困らせるのやめとけ(プ
,;-‐''′`ヽ、 >17 シネマ野 軍人オタ必死だな(プ
,;-‐''′ ゙:、 ゙i >18蛙男商会 中の人一人じゃないのバレバレですから(プ
`i ゙:、 ;゙ヽ lヽ,,lヽ >19 エジエレキ つーかお前目立たないよね(プ
| `゙ヾ、 ( )
,! ゙:、と、 ゙i >20以下の三流職人はGIFアニメからやり直してください(プププ
4 :
>>2の訂正 :2005/07/23(土) 03:07:03 ID:zKpamawf
6 :
テンプレ :2005/07/23(土) 07:38:54 ID:LFQ0mWC5
>> 正規ライセンスじゃないからだと思います。 プロテクトがかかるはずです。登録はしましたか?
7 :
Now_loading...774KB :2005/07/23(土) 09:05:50 ID:Ji2XDXFc
>>5 >>3 はスキマ氏本人だよ
自分でレス番かいてるじゃないか
>>7 テンプレも知らんのか
9 :
Now_loading...774KB :2005/07/26(火) 16:47:50 ID:NQQKm9+q
さいきん、アクションスクリプトをかじり始めた新米です。 よろしくお願いします。 ボタンがあり、そのボタンを押すと、それに関連するムービクリップ などが再生するようにつくってます。 以下、ボタンのASです。 --- on (press) { gotoAndPlay("play");//タイムライン上が再生 tellTarget ("aaa") { gotoAndPlay(2); } } --- これを、ボタンを押すと、2回目は押せないようにすることは できないでしょうか?(一回動作すると、それ以降無効になる。) 初歩的だと思いますが、よろしくお願いします
>>9 ボタンが押されたらフレーム進めてボタンを消すとか。
ActionScriptでやるなら、ボタンクリップではなくムービークリップに変更して、
onClipEvent(load){
this.onPress = function(){this._parent.aaa.gotoAndPlay(2);}
this.onRollOver = function(){this.gotoAndPlay(1);}
this.onRollOut = function(){this.gotoAndPlay(2);}
}
とか。
でもTellTarget使ってるから4かLiteなのかな?
だとしたら前者のパターンで良いんじゃないかな。
>>9 on (press) {
gotoAndPlay("play");//タイムライン上が再生
aaa.gotoAndPlay(2);
ボタンのターゲット._visibility = false;
}
12 :
9 :2005/07/26(火) 20:15:45 ID:NQQKm9+q
ありがとうございます。 いろいろ試行錯誤しながら、みなさんの方法を試していたのですが 11さんの ボタンのターゲット._visibility = false; の部分がどうしても意味がわかりませんでした。 よろしければ解説願いませんでしょうか。
>>9 Flash4? 携帯電話用のFlashを作っているの?
>>12 ターゲットパスの意味がわからないならボタンじゃなくてムービークリップにしたほうがいいかも
on (press) {
_parent.gotoAndPlay("play");//タイムライン上が再生
_parent.aaa.gotoAndPlay(2);
this._visibility = false;
}
15 :
9 :2005/07/26(火) 20:35:37 ID:NQQKm9+q
携帯用です。 ターゲットパスだったんですね。 それでパスを割り当て直すと、Flash4でサポートされていないといわれて エラーがでますね。 ムービクリップでないと無理そうですね。
Flash4のスクリプトは覚えるだけ無駄で邪魔なものなんだけど、 携帯用なら仕方ないなぁ。 苦労すると思うけど、がんばってね。
18 :
Now_loading...774KB :2005/07/27(水) 21:55:26 ID:WNfuhulF
こんばんわ。 ASでのランダム値について質問なのですが、 現在、フレームアクションに 以下のように乱数を与えて、それぞれ、あるフレームに分岐するようにしています。 gotoAndStop("a" add (random(3)+1)); 分岐するフレームは、 以下の3つに分かれて、分岐します。 a1(フレームラベル) a2(フレームラベル) a3(フレームラベル) これをたとえば、a3のみの確率を操作するようにできないでしょうか? いまの状態だと、a1,a2,a3はそれぞれ、3×3×3で1/18の確率ずつになります。 これをa3のみを1/3に、というふうな感じです。それにしたがって、a1,a2の確率は、自動的に操作されることになると 思うのですけども。。 ご指南お願いします。
>>18 言ってること良くわかんないけど、考え方としては
乱数で1〜10の数をだして
1のときはa1
2のときはa2
3〜10のときはa3
ってするとa3の確立が大きくなる。
21 :
Now_loading...774KB :2005/07/27(水) 22:33:46 ID:WNfuhulF
ご回答ありがとうございます。 >1のときはa1 >2のときはa2 >3〜10のときはa3 >ってするとa3の確立が大きくなる。 考え方としては、その通りなのですが、a1〜a(番号)は増やさずに、 (a3〜a10は、フレーム制御は同じ。) 乱数は、今のままで(1〜3)、乱数にロジックを組むことはできないでしょうか?
>>21 >a1〜a(番号)は増やさずに、
誰もそれを増やせとは言っていないでしょ。
意地でもif文を使いたくないのかな?
23 :
Now_loading...774KB :2005/07/27(水) 22:55:54 ID:WNfuhulF
21 : 2005/07/27(水) 22:56 if文ですか? 根本的にアルゴリズムが理解できていないようです。 if文を利用するのと、乱数との絡みは、具体的にはどのように関係してくるのでしょうか? はじめたばかりで、わからないことが多く、意味がわかりづらいことが あるかと思いますが、ご勘弁ください。
>>17 やりたいのはこんな感じ?
onClipEvent (load) {
sokudo = 0;
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.DOWN)) sokudo += 1;
if (Key.isDown(Key.RIGHT)) _rotation += 4;
if (Key.isDown(Key.LEFT))_rotation -= 4;
velX = sokudo*Math.cos(_rotation*Math.PI/180);
velY = sokudo*Math.sin(_rotation*Math.PI/180);
_x += velX;_y += velY;
sokudo -= .5;
if (sokudo<0)sokudo = 0;
if (_x<-10)_x += 400;if (_x>410) _x -= 400;if (_y<-10) _y += 300;if (_y>310) _y -= 300;
}
>>23 どうしてもラベル文字列を作成しなきゃ気が済まないのかもしれないが、
まあ根本的にアルゴリズムうんぬん以前の問題
プログラミング関係の理解が足りない気がする
乱数とIfで分岐ってのは、まあ例えば
var rnd = Math.random() * 10;
if(rnd < 1){
this.gotoAndStop("A1");
} else if(rnd < 2){
this.gotoAndStop("A2");
} else {
this.gotoAndStop(("A3");
}
みたいな感じ
これみても意味わからないなら、もっと初歩的な本買って勉強したほうがいいよ
>>24 どうもありがとうございます。
やりたいことですが、
例えると(カーソル左右キーで宇宙船の向きを、下キーで加速)
宇宙船をX軸のプラス方向に加速(このとき、下キーは押している、機体の向きはX軸プラス方向)
そのときのスピードが毎フレーム3だとすると、
下キーを放しても、宇宙空間のようにずっとX軸プラス方向に毎フレーム3づつ進みつづける。、
左右キーで機体の向きをY軸プラス方向に向け(このときも宇宙船はX軸プラス方向に動き続けている)
下キーを押し加速して毎フレーム3、Y軸プラス方向に動くようにした場合、
機体は毎フレームX軸プラス方向に3、Y軸プラス方向に3進む
って感じです。
説明が下手ですみませんです。
2つの違うベクトルを足す式が知りたかったのです。
>>26 で、お前はこの1時間で何を調べて、どういう成果があったんだ?
28 :
Now_loading...774KB :2005/07/28(木) 01:29:32 ID:AV/gmmzI
>>26 onClipEvent (load) {
var sp , rad , vx , vy
sp = rad = vx = vy = 0
}
onClipEvent (enterFrame) {
if(Key.isDown(Key.DOWN)) sp=0.1
else sp=0
if (Key.isDown(Key.RIGHT)) _rotation += 4;
else if (Key.isDown(Key.LEFT)) _rotation -= 4;
var rad = _rotation*Math.PI/180
vx += sp*Math.cos(rad);
vy += sp*Math.sin(rad);
_x += vx;
_y += vy;
}
こういう事かな?
>>26 なるほど じゃあこうか。
xとyは別々に制御することになるから足してはいないよ
onClipEvent (load) {sokudo = 3;velX = 0;velY = 0;}
onClipEvent (enterFrame) {
if (Key.isDown(Key.DOWN)) {
velX += sokudo*Math.cos(_rotation*Math.PI/180);
velY += sokudo*Math.sin(_rotation*Math.PI/180);
}
if (Key.isDown(Key.RIGHT)) _rotation += 8;
if (Key.isDown(Key.LEFT)) _rotation -= 8;
_x += velX;_y += velY;
if (_x<-10)_x += 400;if (_x>410)_x -= 400;if (_y<-10)_y += 300;if (_y>310)_y -= 300}
ちなみにこれを見て理解できると思うから書いてる。見やすいように自動フォーマットかけてね
30 :
24 :2005/07/28(木) 01:40:25 ID:KhYYuX09
うほ すでに親切なひとが
最近ASに手を出し始めた若輩者です 現在携帯用(Lite1)で 全4ジャンル各15問の中から5問選び出すクイズを作ろうとしているのですが途中で行き詰まりました 問題点はなぜか必ず19行目に飛んでしまうことです 本来は1問もといてなければ4〜18に飛ぶはずなのですが ちなみに原因と考えられるのは3行目 その部分にあるスクリプトがこれです GF=Math.floo(Math.random()*15)+1; if (QA=5){gotoAndPlay(19); }else{if(GF=A){gotoAndPlay(3); }else{if(GF=B){gotoAndPlay(3); }else{if(GF=C){gotoAndPlay(3); }else{if(GF=D){gotoAndPlay(3); }else{gotoAndStop(GF);}} } }} やりたい処理としては 飛ぶ問題を指定 既にこのジャンルを5問やっていたら次のジャンルへ で、既にやった問題かどうか確かめて まだやってないならその問題へ飛ぶ 原因がわかる方がいれば教えていただけませんか?
>>32 いきなり何かを作ろうとせずに基本からやった方がいいと思う。
全然意味分かっていない気がする・・・。
まあ、どうにか予想すると・・・・
gotoAndPlayを大昔のBASICのように扱っている気がする。
BASIC時代の癖で=を1つにしてしまったのが原因ですかorz おそらくそれだと思うので後日試してみます 初歩の初歩のような質問すみませんでした
>>35 その他もいろいろとあやしいので基礎から頑張ろう。
38 :
32 :2005/07/28(木) 17:14:43 ID:f5yqUn27
>>37 _| ̄|○
>>35 確かに俺もASPやPHPやPerl,ASなどいろいろやるから、
とく混同することがある。
でも、
>>31 は今のBASICじゃなくて 20〜15年前のBASICを引きずっている希ガス
行番号は気にスンナ。
MXでattachSoundで鳴らした音をstopで止めた時に音がピタッと止まるのですが フェードアウトして止まるようには出来ないのでしょうか? 曲を最後まで聞く場合は設定出来るのですが・・・
>>40 音量を少しずつ下げていけばいい
音量に関するメソッド調べてみること
42 :
35 :2005/07/29(金) 08:09:11 ID:KAqWECmx
ご名答 少し前まで年代物のPCでBASICやってましたよ とりあえずASの本をもう一度基礎から読み直してきますよ
43 :
40 :2005/07/29(金) 12:56:21 ID:LNHJS2Qn
>>41 さん
レス遅れて申し訳ございません
ありがとうございました!!
44 :
Now_loading...774KB :2005/07/29(金) 17:04:43 ID:NTaFKOGA
>>44 情報少な杉。泡の位置を決めてるスクリプトくらい書かないと誰もわかりません。
左上に偏ってるということは計算の結果が0になってるということで、そこから自分で推測できることがあるでしょう?
たぶん、泡の位置決めにStage.width,height使ってるから。
そのままStageの大きさを基準にしてやるんだったら(画面全体に泡を表示するんだったら)
listenerで監視して、widthとheightを更新してやらないと。
でも、おそらく時計の周辺だけに発生させたいんだろうから、
その場合は普通に_rootの座標でやってください。
46 :
Now_loading...774KB :2005/07/29(金) 22:29:09 ID:1ll8c9Qb
_global.aという、[0,1,2,3,4]←のような配列があったとしたら、 これをランダムに並べ替えるには、どんなASを記述すればいいんだ? 環境はFlash MX 2004
>>46 ならべかえのアルゴリズムを考えてみるといいよ
48 :
はは :2005/07/29(金) 22:59:39 ID:/2TrspDz
49 :
44 :2005/07/29(金) 23:08:17 ID:x4jEl6h6
>>45 お世話になります。泡の位置決めには、やはりStage.width,heightを使っており、
これでStage.scaleMode = "noScale"; とすると、泡がステージ原点付近で動く
ことになります。
対策として、ステージの大きさの数値をそのまま使いました。
>>44 どうやってるのか全然わからないけど・・
Stage.width,heightの値は
表示指定しないとき(ShowAll)だと、FLASHで指定したデフォルトのサイズ
noScaleだと、変更したウィンドウの表示サイズ
が入る。
>>46 Math.random()、Array.splice()、Array.push()とか
51 :
46 :2005/07/30(土) 09:42:12 ID:pskicNKW
>>47 並べ替えのアルゴリズムって・・・orz
ちゃんと教えてくださいorz
>>51 >>50 がヒントくれてるんだからとりあえず
それらのスクリプトの例をみたら?すぐわかると思うよ。
>>52 スクリプトの例見てきました。
すぐに分かるとのことでしたが、漏れには分かりませんでしたorz
>>53 じゃあ、あきらめろ。
ここは、質問に答えるところで、かわりに作ってあげるところではない。
質問です。 ある数字を小数点一位まで表示させたいのですが、 どうやるんですか?
>>57 とりあえず、手っ取り早い方法としては、
【アイテムの動作設置絵】
1. 外部テキストにタイトルとリンクのリストを作り、
2. Flash側にはテキストフィールドをムービークリップ化してリンゲージ識別子付けておく。
3. 2.のMC内部にタイトル、URLの変数があればテキストをタイトルに変更し、URIをgetURL()に設定する処理をつけておく。
4. 外部テキストの読み込み処理後、タイトル&リンクのリスト分2.のMCをattachMovieで配置
5. attachMovieで配置するさいについでに2.のMC内にタイトルとURLを適当な変数で渡しておく。
【MCの座標設定】
6. 5.のMCは3.の処理によって勝手に自分のタイトルとURLを設定するので、設定位置をランダムで指定
7. 目的位置に向って慣性で移動する計算を毎フレーム行い、結果をMCの座標に代入
ってとこが楽じゃないかな。1〜5はcreateTextFieldとcreateEmptyMovieClipを使って親側で行ってもいい。
必要な関数等は、
loadVariables , attachMovie , for , getURL あたりか。
61 :
Now_loading...774KB :2005/07/30(土) 13:24:18 ID:YruBFBiG
>>56 ある数字 = Math.round(ある数字 * 10) / 10
>>60 >>57 ありがとうございます。
>URIをgetURL()に設定する処理
はどうやったら良いんでしょうか。
>>62 おまいにはまだ難しすぎたんだよ。もっと簡単なのから作れ。
ネット上や本屋に色んなスクリプトがあるから、
まずそれを見ながら勉強するんだ。
何回読んでも分からない箇所が出てきたら、ここで質問すればいいんだよ。
64 :
Now_loading...774KB :2005/07/30(土) 14:15:05 ID:YruBFBiG
>>62 じゃ、その部分だけまんま書いとく。
テキストフィールドのインスタンス名が txt
タイトル用変数が title
getURLに渡すアドレスが url
だったという過程で、
if(title && url && txt.text==undefined){
txt.text = title
this.onRelease = function(){ getURL(url) }
this.onRollOver = function(){ this.gotoAndStop(2) }
this.onRollOut = function(){ this.gotoAndStop(1) }
}
これでtitleとurlがあってtxtのtextがまだ代入されてなければ実行される。
※値はattachMovie直後に入れる。attach直後の値の代入はattachしたMCの1フレより前に行われるので。
ロールオーバーすると2フレに飛ぶので
2フレーム目はテキストフィールドの色でも変えておけばOK。
65 :
Now_loading...774KB :2005/07/30(土) 18:58:23 ID:JuSswXn4
現在FLASHMX2004で初めてチャット機能を作ったのですが、 ENTERキーを押してメッセージを送信させるようにしたのですが、 メッセージ入力時に漢字変換等でENTERを押しても反応しちゃいます。 これをなんとかしようと思って、本を参考に見てるのですが、 どこにどのようなスクリプトを記述したら良いかがわかりません。 参考になるような事がありましたら、ご教授お願い致します。
>>65 var temp_str:String="";
key_down.onKeyDown = function() {
if (Key.isDown(Key.ENTER)) {
if (temp_str != chat_txt) {
//送る処理
}
}
//すべてのキーを押したときに通る
temp_str = chat_txt; //変換し終わった文字が入る。
};
//ここまで
//chat_txtはチャット入力するとこ。
var temp_str:String=""; key_down.onKeyDown = function() { if (Key.isDown(Key.ENTER)) { if (temp_str != MessageTxt) { ←ココ4行目 userName = UserNameTxt.text; msg = MessageTxt.text; so.send("sendMsg", userName, msg); MessageTxt.text = ""; so.sendMsg = function(userName, msg) { ChatTxt.text += userName + " : " + msg + "n "; ChatTxt.scroll = ChatTxt.maxscroll; } } }; temp_str = MessageTxt; //変換し終わった文字が入る。 }; こんな感じでやったのですが、4行目の所でシンタックスエラー が出てきます。もう少しアドバイスお願いできないでしょうか? ほんとうに申し訳御座いません。
var temp_str:String=""; key_down.onKeyDown = function() { if (Key.isDown(Key.ENTER)) { if (temp_str != MessageTxt) {// ←ココ4行目 userName = UserNameTxt.text; msg = MessageTxt.text; so.send("sendMsg", userName, msg); MessageTxt.text = ""; so.sendMsg = function(userName, msg) { ChatTxt.text += userName + " : " + msg + "n "; ChatTxt.scroll = ChatTxt.maxscroll; } } }; temp_str = MessageTxt; //変換し終わった文字が入る。 }; ←ココ4行目 という文字をコメントアウトするだけ
69 :
Now_loading...774KB :2005/07/30(土) 22:22:19 ID:JuSswXn4
>>68 大変親切なご指導有難う御座います。
何度も申し訳ありませんが一度見てもらえますか?
FCSへの接続より下のスクリプトをコピーします。(フレームアクションです)
function initSO() {
so = SharedObject.getRemote("chat", nc.uri);
so.connect(nc);
};
var temp_str:String="";
key_down.onKeyDown = function() {
if (Key.isDown(Key.ENTER)) {
if (temp_str != MessageTxt) {//
userName = UserNameTxt.text;
msg = MessageTxt.text;
so.send("sendMsg", userName, msg);
MessageTxt.text = "";
so.sendMsg = function(userName, msg) {
ChatTxt.text += userName + " : " + msg + "n ";
ChatTxt.scroll = ChatTxt.maxscroll;
}
}
};
temp_str != MessageTxt;
};
何か間違ってると思うのですがどうでしょうか?
チャットネームのTextインスタンスはUserNameTxtです。
メッセージ入力欄のインスタンスはMessageTxtです。
あとメインのウィンドゥのインスタンスがChatTxtになってます。
長い文章で申し訳ありません。宜しくお願いします。
70 :
Now_loading...774KB :2005/07/30(土) 23:35:28 ID:q2stZBuB
ASの文法そのものではないのですが、海外のFlashのMLに参加して、 英語でのASの議論に加わりたいと思っています。 どなたか、英語版のML(出来ればアメリカが中心)を紹介頂けないでしょうか?
>>69 したから2行め。
temp_str != MessageTxt; の
「!=」を「=」に。
string.charAt()のようなカンジで、行を抜き出すことはASで可能でしょうか? 具体的には、TextInputコンポーネントに入力した3行のテキストを、 ボタンを押すことによって1行ずつ、別々のダイナミックテキストに振り分けたいのです。 アドバイスよろしくお願いいたします。
>>72 複数行ならTextArea。
行の取得方法は、
var textarea_str:String = _root.textarea.text; //TextArea入力文字取得
var textarea_array:Array = textarea_str.split("\r"); //改行コードで分割
trace(textarea_array[0]); //一行目取得
trace(textarea_array[1]); //二行目
74 :
9 :2005/07/31(日) 19:28:19 ID:v71vChN+
25さん レスおくれてすいません。 なんとか理解して、組み込むことができました。 しかし、25さんの関数はFlash5専用のようですね。 私は、環境が携帯用のコンテンツなので、エラーが発生するようです。 Flash4では、ランダム値を発生させる関数はないのでしょうか。 もしくは、代用できるテクニックなどあれば教えてください。
75 :
Now_loading...774KB :2005/07/31(日) 20:11:08 ID:ElSkOXmR
以前から幾度と無くチャットのメッセージ送信をキーボードの ENTERキーで送信したくて、今日も本を2冊買ってみてますが、 全然解りません。漢字変換し終わってからENTERキーで送信が 出来るようにするには、どうしたら良いでしょうか??? 下が現在のスクリプトです。これのどこにアクションを記述 したら良いか、どなたか付け足して教えて頂けないでしょうか? お願い致します。 nc = new NetConnection(); nc.onStatus = function(res){ if (res.code == "NetConnection.Connect.Success"){ initSO(); trace("接続しました"); } else { trace("接続に失敗しました"); } }; nc.connect("rtmp://FCSのIPアドレス/livechat"); function initSO() { so = SharedObject.getRemote("chat", nc.uri); so.connect(nc); SendButton.onPress = function() { userName = UserNameTxt.text; msg = MessageTxt.text; so.send("sendMsg", userName, msg); MessageTxt.text = ""; }; so.sendMsg = function(userName, msg) { ChatTxt.text += userName + " : " + msg + "n"; ChatTxt.scroll = ChatTxt.maxscroll; }; }
>>75 >>66 どの部分がどううまくいかないのか
書いてくれないとわからない。
今シューティングゲームを作っているのですが、 _root上に置かれたMCに書かれたASを MCの中のMCにASを書きたいのですが、 どうすればいいでしょうか。 onClipEvent (enterFrame) { _x = Math.floor(Math.random()*300); _y = Math.floor(Math.random()*300); point = {x:this._parent.aaa._x, y:this._parent.aaa._y}; _parent.globalToLocal(point); xdis = point.x-_x; ydis = point.y-_y; radian = Math.atan2(ydis, xdis); kakudo = radian/(Math.PI/180)-90; }
80 :
Now_loading...774KB :2005/07/31(日) 23:41:36 ID:ElSkOXmR
>>77 どの部分がと言う事なんですが・・・
今はボタンを配置してメッセージをChatフィールドに送るという
事は出来てます。しかし、ENTERキーを押す事でメッセージを、
送ることが出来ないです。親切な方がスクリプトの例を教えて
くれたのですが、漢字に変換するときにENTERを押しても、送信
してしまうので、それをなんとか解決したいのですが、
どこにどう記述したらいいかがわからなくなって
しまって、なんとかこれだけの説明でご理解頂けないでしょうか??
まだ初心者なもんで、ほんとうにすいません。
81 :
77 :2005/08/01(月) 00:19:58 ID:rk5Kao2a
82 :
77 :2005/08/01(月) 00:24:18 ID:rk5Kao2a
83 :
kyou :2005/08/01(月) 01:01:45 ID:vgFGO+r2
>>81 >>82 お〜〜〜〜〜〜!!できましたよぉ〜
私が思ってた通りのサンプルでした。素晴らしい!!
本当に有難う御座いました。感謝しております。。。
ちなみに今日、アクションスクリプトポケットリファレンスと、
フラッシュアクションスクリプト逆引き大全550の極意って本を
買ってず〜〜〜と見てましたが・・・まだまだ勉強不足すぎました。
今度は、送信側と受信側のテキストのColorを変更出来るように、
努力してみます。この場合はテキストフォーマットクラスで指定
したらいいんですかね??本当にこの度は有難う御座いました。
またヨロシクお願い致します。
>>83 お勧めの本
「Flash MX ActionScript ほぼ10行道場」(外間かおり、佐藤信正 著)毎日コミュニケーションズ
「Flash便利帖」(インフォメディア 著)毎日コミュニケーションズ
「Flash MX ActionScript 実践技&ウラ技大全」(C&R研究所)ナツメ社
「Flash ActionScript 逆引き大全550」(ITフロンティア 著)秀和システム
「ActionScriptポケットリファレンス」(馬場ぎんが 著)技術評論社
操作関係は、
「Flash MX MENU MASTER for Windows」 エクスメディア
85 :
Now_loading...774KB :2005/08/01(月) 02:44:45 ID:vgFGO+r2
>>84 こんなに遅い時間にわざわざご返事頂いて、
本当に有難う御座いました。
是非そのような本を参考に努力して行きます。
テレビの左上の時計のように、文字の周りに黒い枠を付ける方法ってありますか? 4つのテキストをずらして配置するしかないんですかね。
1-0までしか使わないなら、 そういう画像として作ってgotoすりゃいいかと。
たまたま例に挙げたのが、今見てたニュースからだっただけです。 実際には日本語扱おうと考えてます。
じゃあ、方法ないね。
ないんかい!! ('A`)
フォントの形を取得したり 画像をASで解釈したりできないから無理そ。
まあ、次のバージョンで近いことは出来そうだけど。 というわけで次回を待てw
93 :
86 :2005/08/01(月) 18:16:43 ID:bt8L1Dao
了解。スマートにはできないんですね。 4つ重ねてウソ枠にするやり方でやってみます。ありー('A`)ノ
>86 テキスト分解してソフトエッジ、外側選択して色変更じゃダメ? ……ここで質問するってことは任意のテキストだよね
ごめん…任意のテキストでした。 日本語全般を汎用的に使えればいいなと思って質問しました(つД`)
96 :
Now_loading...774KB :2005/08/01(月) 19:41:19 ID:vgFGO+r2
昨日に続きチャットの件なんですが、1対1のチャットの場合で、 自テキストの色と相手テキストの色を分けるということをしたいのですが、 テキストフォーマットのスクリプトを記述すればいいんでしょうか? 具体的には、どのような方法での記述のしかたがあるか、何かヒント みたいになるような事を教えて頂けないでしょうか? お願い致します。
ヘルプ嫁
ドラマ電車男のOP動画うpしてほしいです。 お願いします。
>>98 【ドラマOP】 電車男 第01話 (640x480 XviD 30fps #アニメ部分のみ).avi CFrgFJ3wPc 16,668,672 34f7314413e97a15e2f9f40145b1d19e
突然すいません。 FLASH超初心者なのですが、どうしても作りたいものがあったので、とりあえず環境だけは整えた状態なのですが… 実は、携帯用FLASHで、メトロノームが作りたいのです。 自分の考えとしては、テキストボックスがあり、そこに入力した値で60を割ったもの(秒)間隔でビートを刻む音声ファイルを再生するものを考えており、 将来的には八分や3連符なども例えば 八分は2キーでボリュームアップ5キーでボリュームダウン、3連符は3キーでボリュームアップ6キーでボリュームダウン 、などにもしたいと考えています。 そこで質問なのですが、こういったものを作るのに必要な知識(ActionScriptというものが必要なのか)や、またそれに関しての解説サイトなどを教えていただけませんか…? できれば自分で勉強して作りたいのですが、FLASHやActionScript系のサイトや本を立ち読みしても、全然わからず困っていました。 ちなみに、perlとJavaScriptの経験が少しあります。 どうかよろしくお願いしますm(_ _)m 長文失礼しましたm(_ _)m
>>100 超初心者には厳しい。
基礎から勉強して、自分で作ってみてわからなかったところを聞きましょう。
書き込む前に
>>1 を読みましょう。
102 :
Now_loading...774KB :2005/08/02(火) 07:32:22 ID:zpJlQ9Mv
リプレイに使うAS教えて下さい。
103 :
Now_loading...774KB :2005/08/02(火) 08:03:52 ID:TfZVcBHu
>>100 Sound クラス
Key.addListener
onEnterFrame(もしくはsetInterval)
このあたりをヘルプで検索してみるといいかも。
携帯だとAS4で、リスナーとsetInteval使えないような。
>>102 on(release){gotoAndPlay(1)}
106 :
Now_loading...774KB :2005/08/02(火) 15:29:23 ID:vSpaFayK
>>96 についてどなた様かヒント頂けないでしょうか??
>>106 テキストフィールドをいじるんだから、ヘルプのテキストフィールドの所に
載ってるんじゃない?
109 :
Now_loading...774KB :2005/08/02(火) 17:51:15 ID:vSpaFayK
>>107 >>108 やっぱりヘルプを見てもうまくいきません・・・
何か良い方法無いでしょうか??
すいませんがお願いします。
>>109 「TextField クラス」の項目の所にありそうじゃない?
112 :
Now_loading...774KB :2005/08/02(火) 19:49:38 ID:vSpaFayK
>>111 FCSへの接続より下のスクリプトです。見て頂けますか。
見にくいかもしれませんがすいません。
function initSO() {
so = SharedObject.getRemote("chat", nc.uri);
so.connect(nc);
var temp_str:String = "";
var key_down:Object = new Object();
Key.addListener(key_down);
key_down.onKeyDown = function() {
if (Key.isDown(Key.ENTER)) {
if (temp_str != MessageTxt.text) {
fun_release();
}
}
temp_str = MessageTxt.text;
};
_root.SendButton.onRelease = fun_release;
function fun_release() {
userName = UserNameTxt.text;
msg = MessageTxt.text;
so.send("sendMsg", userName, msg);
MessageTxt.text = "";
};
so.sendMsg = function(userName, msg) {
ChatTxt.text += userName + " >> " + msg + "\n";
ChatTxt.scroll = ChatTxt.maxscroll;
};
}
113 :
Now_loading...774KB :2005/08/02(火) 19:56:03 ID:jsphsOuH
変数textに「あああ」が含まれていたら2フレーム目、 「いいい」が含まれていたら3フレーム目に飛ばしたいのですが、どうすればいいか教えてください。
>>112 ん?どこで色変えようとしてる?
>>113 if (text.indexOf("あああ") != -1) {
this.gotoAndStop(2);
}
飛ばすときはフレーム番号よりフレームラベルを指定したほうがあとで編集しやすい。
>>114 ありがとうございます。
もうひとつ聞きたいのですが、
あああ以外に
いいいが含まれていたらフレーム3
それ以外はフレーム4に飛ばすようにはどうしたらいいのでしょうか。
if (text.indexOf("あああ") != -1) {
this.gotoAndStop(2);
}
if else{
if (text.indexOf("いいい") != -1) {←ここらへんがよくわかりません。
this.gotoAndStop(3);
}
else{
gotoAndPlay(4);
}
>>115 if文のヘルプみようよ。
if ( あああ が含まれてる ) {
処理1
} else if ( いいい が含まれてる ) {
処理2
} else { //それ以外
処理3
}
>>116 ありがとうございます。
ちょっとヘルプみに逝ってきます
ほんとにヘルプ見ないやつ多いんだな、と思う今日この頃
質問して解答まつより早く解決する事も多いのにな
>>112 なんか張ってるソースと質問内容がかみ合わん気がするのは気のせいか
119 :
Now_loading...774KB :2005/08/02(火) 21:48:25 ID:TfZVcBHu
120 :
Now_loading...774KB :2005/08/03(水) 12:42:50 ID:ljj/H9g8
>>114 どこで色を変えたいかと言うと、
要は、(自分側)MessageTxtで入力した文字をChatTxtで赤に表示したくて、
(相手側)からの入力文字は青みたいにしたいのですが、
HTMLに変換したり、テキストフォーマットクラスを使ってもうまく行きません
多分自分では、スクリプトを記述する場所が悪いのかなぁと思ってるんですが
すいませんが、ご教授お願い致します。
>>120 チャット云々その他の機能は別にして純粋にテキストの色を自由に変えることは出来る?
122 :
Now_loading...774KB :2005/08/03(水) 17:00:28 ID:ljj/H9g8
>>121 はい普通に色を変えるぐらいならできます。
しかしまだまだ初心者なもので・・・
ほんとうにすいません。
>>122 とりあえず、ASを使ってtext_field1というテキストフィールドの色を変える
スクリプトを書いて、それをここに貼ってみるんだ。
そしたら、次の段階に進む事ができるはずだ。
124 :
Now_loading...774KB :2005/08/03(水) 17:53:35 ID:ljj/H9g8
>>123 text_field1.textColor=0x0000ff
これで色は青に変わりますよね??
自分でやってみれ
それ全体変わるっしょ。 textformat使って一部だけ変えてみ。
>>124 今度はヘルプのTextField.setTextFormatとTextFormatクラスあたりを良く読んで
TextFormatを使った色の変更に挑戦しる
129 :
114 :2005/08/03(水) 18:32:36 ID:EbS/oAFq
>>120 俺が聞きたかったことはそういうことじゃなくて、
色を変えたいけどうまくいきませんっていってたから
そのうまくいかないコードはどこってこと。
130 :
Now_loading...774KB :2005/08/03(水) 22:48:16 ID:78GmIUwg
はじめまして。 質問なのですけど、 ムービクリップをアニメーションさせる場合は、 キーフレームやトィーンアニメーションなどさせるとおもうのですが、 それをアクションスクリプトで動かすことはできるのでしょうか? たとえば、 y軸に-20動くアニメーションを、永遠とループしつづけるといった具合です。
132 :
130 :2005/08/03(水) 23:11:29 ID:78GmIUwg
レス有難うございます 例えば、どのようにしたら動かすことができるのでしょうか。 アドバイス頂けないでしょうか。
ところでなんでASでやろうと?
134 :
130 :2005/08/03(水) 23:16:42 ID:78GmIUwg
描画スピードが遅くて、 もしかすると、ASでアニメーションさせると、 早くなるのでは?という推測のもとに、はじめての挑戦をしています。
なりません。むしろ遅いかもしれない。 むしろアルファとか使ってるならそっちを考え直すべき。
137 :
Now_loading...774KB :2005/08/03(水) 23:38:34 ID:78GmIUwg
アルファとかグラデとかトゥィーンアニメーションなどは全て見直しています。 今以上早くならないのでしょうか。
知らんよ。他の要因かもしれないし。 全てって書いてるけど多分全てじゃないし。
>>137 単純にフレームレートが12のままとかって事は無いよね?
まさかフレームレートそのままじゃないよね?
141 :
130 :2005/08/03(水) 23:59:40 ID:78GmIUwg
フレームレートは、60まであげています。 これ以上あげても、あまり効果がないようです。 携帯でみてます。
・・・
>>134 描画スピードが遅いってかくかくするってことだよね?
now loadingつけた?
145 :
Now_loading...774KB :2005/08/04(木) 00:31:09 ID:5K9yEj9d
143>ナウローディングはつけていますよ。 カクカクというより、全体的にスピードを向上させたいと思ってます。
もう、そのコンテンツのURLを晒して
質問なんですが、 ムービークリップaを、マウスカーソルのある方向にまっすぐに移動させるには、 Math.cos()とMath.sin()をどのように使えばいいんでしょうか。 ご教授お願い致します。
>>147 別にそうしなくても
aのxとyをそれぞれマウスカーソルのxとyの距離を1/n(nは任意の正の数。速度が変わる、大きいほど遅い)
移動させるようにすればいい。
>>147 要するにaにオブジェクトアクションとして書くなら
onClipEvent(enterFrame){
this._x += this,_xmouse/5;
this._y += this._ymouse/5;
}
みたいな感じね
>>148-
>>149 すみません。肝心な所を忘れていました。
マウスクリックすると、ムービークリップaをマウスカーソルのある位置に一定の速さで移動させるような
スクリプトを教えて欲しかったんです。
イベントの条件変えるだけだろ 画面全体にボタンかムービークリップ置いてオブジェクト動かせばいい これでわからないなら本買って来い
スマン、一定の速度なのか じゃ高校の数学の教科書買って来い
154 :
Now_loading...774KB :2005/08/04(木) 16:07:52 ID:SiNv3Q5r
ActionScript v2.0 のコンポーネント開発を日本語で説明してくれてるとこないかのう?
155 :
130 :2005/08/04(木) 16:17:46 ID:5K9yEj9d
146>urlは流せませんが、ファイルをどこかにアップすることはできます。確か、2chでアップローダとかありましたよね?
156 :
130 :2005/08/04(木) 16:21:55 ID:5K9yEj9d
>>156 モーショントゥイーンの幅を狭くするとか
回転してるように見えるぱらぱらまんがにするとかは?
159 :
さよ :2005/08/04(木) 20:51:50 ID:5K9yEj9d
こんにちわ。 分からないことがあって質問をしにきました。 よろしくお願いします。 シーンに、シーン1とシーン2があり、シーン1には、 ムービクリップA(インスタンス名a)、ボタンAがあり、 ボタンAのASは、 on (press){ a.gotoAndPlay(1); } ボタンAをおすと、 ムービクリップAの再生がはじまり、最後のフレームの フレームASは、 _root.gotoAndPlay("シーン2",1); です。 しかし、ムービクリップAの再生が終了しても、シーン2に飛びません。 なにか記述が間違っているのでしょうか? #ムービクリップ内ではなく、レベル0の階層内であれば、うまくいくのに。。
>>159 シーン使ったこと無いからわからないけど
_root.gotoAndPlay(2,1);
でどうですか
>>159 >>161 メソッドのgotoAndPlayはシーンの指定は出来ません。
ですのでgotoAndPlay("シーン2",1); と書きましょう。
どうしてもメソッドで使いたければ ラベルを使って例えば"シーン2"と名前を付けて _root.gotoAndPlay("シーン2"); の様に記述するとかいう手もありますけど。
>>151-
>>153 参考にしてみます。ありがとうございました。
しかし最も有効で、今後の為になる解決方法は、 シーンを使うのをやめる、ということ
シーン使ってる人って結構いるみたいだけど、どこでかで勧めてんのか?
>>166 ヘルプ嫁
ナウロの作り方とかで、ナウロ、本編でシーン分けると便利とかやってる
実際は、ASのないムービーで、
時間をつかさどる機能として、タイムラインの次に目に付くから
そのまま持ち込んじゃうのが原因だと思うが。
シーンってスクリプトにとっては敵に等しいけど アニメーション作る時には有効な機能だよ。 何でもかんでも否定すればいいってもんでもない。
169 :
Now_loading...774KB :2005/08/05(金) 01:53:09 ID:dsLBGWrt
IDサイトをご覧になるには、最新のMacromedia Flash Player 「Version 7,0,19,0」以上が必要です。 って、「インストールが完了しました」って画面見た後でも 言われ続ける。 なんで?
再起動した? ・・・つか、質問するスレが違うだろw
171 :
Now_loading...774KB :2005/08/05(金) 02:04:06 ID:dsLBGWrt
172 :
166 :2005/08/05(金) 05:46:20 ID:ARiV524N
>>167 ヘルプ読んだ。「シーンの使用」という所にシーンを使う事の
長短が書いてあった。
作り方は、その人がやり易い方法でやるのが一番なので
シーンを使う事を否定する事はしない。
だがおれは、
死 ん で も 使 っ て や ら ん !
ナウロって言葉初めて聞いたから何の事か分からなかったよ。
>>168 俺も同意見だ。
アクションスクリプトを使わないなら、シーンを分けても構わない。
アクションスクリプトを使うなら、シーンは絶対に分けるな。
Flashのヘルプは糞。(でも、読もうね)
マクロメディアも、シーン使ってる人には、 ウィザード入力方式のgotoしか使えないようにしてくれりゃいいのに。 ノーマルモード廃止する前に。
やれやれ、これだからAS厨と呼ばれるんだよな
すいません、質問させてください。 Flash MX 2004で外部のファイルを読み込み、 グローバル変数として使いたいのですが上手くいきません。 以下のようなスクリプトを試してみましたが、"Undifined"と出力されるだけです。 どうやったら上手くいきますか? //ここから read_aaa() trace(bbb.ccc); trace(_root.ccc); //目的:aaa.txtを読み込み、変数"ccc"をグローバル変数として"test"という文字列を代入 function read_aaa(){ bbb = new LoadVars(); bbb.load("aaa.txt"); //aaa.txtの内容は"ccc=test" bbb.onLoad = function(){ _root.hoge = this.ccc; } }
177 :
176 :2005/08/05(金) 13:27:23 ID:bzm8N6CT
すいません、間違えました。 一番下のが 誤 _root.hoge = this.ccc ↓ 正 _root.ccc = this.ccc; です。 失礼いたしました。
>>176 trace()するタイミングがちがくね?
正常に読み込みされたのを確認後、
読み込み完了時にtrace()しないと。
my_lv = new LoadVars();
my_lv.onLoad = function(success) {
if(success) {
// 読み込み成功後の処理
trace(this.ccc);
}
}
my_lv.load("aaa.txt");
//AS久しぶりだから、シンタックス間違ってるかもw
179 :
さよ :2005/08/05(金) 13:47:01 ID:aPlYwglX
162さん gotoAndPlay("シーン2",1); というように記述も試してみたんですけど、 シーンに飛ばないです... ムービクリップAは、レベル内で、最初のフレームに戻るだけです。 シーンはつかわないほうがいいんでしょうか。
180 :
176 :2005/08/05(金) 13:48:58 ID:bzm8N6CT
>>178 レスありがとうございます。
下記のように直してみましたが、上手くいきません。
functionの外で変数"ccc"を使う方法はないでしょうか?
function内でのtraceはもともと上手くいきます。
//省略
function read_aaa(){
bbb = new LoadVars();
//aaa.txtの内容は"ccc=test"
bbb.onLoad = function(success){
if(success){
_root.ccc = this.ccc;
}
}
bbb.load("test.txt");
}
>>179 そのとおり
シーンを使わずに作り直してください
182 :
Now_loading...774KB :2005/08/05(金) 13:59:17 ID:AiH94rYQ
質問させてください。 例えば指定のURLにアクセスしたらまずは、パスワードの入力 シーンが出てきて、パスワードが正しければメインのページに行く と言うような事をしたいのですが、どんなASの記述方法があるか 教えて頂けないでしょうか??
183 :
Now_loading...774KB :2005/08/05(金) 14:03:14 ID:AiH94rYQ
↑↑↑ すいませんAS教えて下さいというより ヒントみたいな感じでも結構ですので、 勿論ASの記述方法が解れば嬉しいですが・・・ 宜しくお願いします。
>>179 どうも話がおかしい気がするんだけど、
その記述で"シーン1"の最初のフレーム
(要するにムービー全体の最初のフレーム)に
戻ってると言うこと?
あり得ないことだと思うけど、シーン名はあってますか?
あと、ラベルを使う方法をお勧めしたと思いますが
そちらは試しましたか?
>>175 時々呼びたくなるw
自分もシーンは使わないけどね、滅多に。
>>182 Flashの中だけで言うならば
テキスト入力をさせて、
そのテキストがパスワードと一致するかを比較して
合ってたら次に進む・・・とするだけ。
もうちょっと頭整理して質問してくれないと。
>>180 >下記のように直してみましたが、上手くいきません。
うまくいかないだと、どううまくいかないのかがこっちにはまったくわかりません。
具体的に書き込みましょう。
//こっちはうまくいきます、じゃね。とかかれても困るでしょう?
で、読み込みは 正 し く 完了してますか?
さっきscriptのでtrace出力ではなんと表示されましたか?
もしくは表示さてませんでしたか?
bbb = new LoadVars();
bbb.onLoad = function(success) {
if(success) {
// 読み込み成功後の処理
trace(this.ccc);
} else {
// 読み込み失敗
trace("failed fileloading");
}
//test.txt?aaa.txtじゃなかたっけ?ま、いいや。
my_lv.load("test.txt");
↑あ、}閉じ忘れ。
>>182 パスワード入力フォーム作って、
pass文字列と入力文字列を比較して
条件分岐
でご希望なかんじのができるんじゃないかな?
if(mypass = "password") {
getURL("ひみつのぺーじ.html");
} else {
getURL("
http://www.aiseikai.or.jp/ ");
}
>>180 今やってみたけど、それで大丈夫だったよ。
functionの外でcccの値をtraceできた。
それ以前に
>>176 はtraceするタイミングがおかしいって事ない?
読み込みが終わってないうちにtraceしようとしてるとしか思えないのだけど。
192 :
176 :2005/08/05(金) 15:03:53 ID:bzm8N6CT
>>186 失礼しました。言葉足らずですいません。 出力はUndifinedのままで状況は変わらないという意味でした。
ファイルもaaa.txtでしたね。うっかり書き間違えました。
もう一度整理すると、スクリプトは、
//ここから
read_aaa()
trace("function外1:" + bbb.ccc);
trace("function外2:" + _root.ccc);
//目的:aaa.txtを読み込み、変数"ccc"をグローバル変数として"test"という文字列を代入
function read_aaa(){
bbb = new LoadVars();
//aaa.txtの内容は"ccc=test"
bbb.onLoad = function(success){
if(success){
_root.ccc = this.ccc;
trace("function内:" + this.ccc);
}
}
bbb.load("aaa.txt");
}
//ここまで
これを実行すると出力は、
function外1:undefined
function外2:undefined
function内:test
となります。
function外でtestと出力する方法を教えててください。
よろしくお願いいたします。
193 :
176 :2005/08/05(金) 15:25:03 ID:bzm8N6CT
>>190 実験していただいてありがとうございます。
こちらでは
>>192 のような出力のままなのですが、
他にtraceできない原因は考えられないでしょうか?
>>191 よろしかったら具体的なタイミングを教えていただければ幸いです。
補足ですが、ファイルの読み込みは成功しているようです。
>>186 の読み込み失敗時の処理を付け足してもメッセージは表示されませんでした。
>>193 onLoadで読み込み完了が確認されたタイミング。
ファイルは瞬時には読めません。
195 :
176 :2005/08/05(金) 16:00:34 ID:bzm8N6CT
>>194 bbb.onLoad = function(success)のsuccessをtraceして"true"なら、
読み込みは完了しているんですよね?
その後に_root.cccにthis.cccを入れる処理をすれば、
function外でもcccがtrace出来ると思っていたのですが、
考え違いをしてるのでしょうか?
LoadVarsのファイル読み込み処理は 非 同 期 なので、
コードの実行順は記述順と一致しません。
**********************************
1A.read_aaa();
(1B.bbb.onLoad = function()...)
2.trace("function外1:" + bbb.ccc);
3.trace("function外2:" + _root.ccc);
***********************************
1A.read_aaa
--読み込み開始----
--まだ読み込まれてない----
2.function外1:undefined
3.function外2:undefined
---読み込み完了-----
1B.function内:test
つまり、読み込まれてないのにtrace()しても空振りなわけです。
だから最初(
>>178 )にtrace()のタイミングといったの。
ご理解いただけましたか?
>>195 考えは合ってるけど
>>196 氏の言うとおりです。
あのコードの通りだとしたら考え違いですね。
198 :
176 :2005/08/05(金) 17:00:32 ID:bzm8N6CT
分かりやすい説明で理解できました。 大きなヒントをありがとうございます。 これから解決法を見つけて後日報告いたします。
199 :
さよ :2005/08/05(金) 17:58:18 ID:aPlYwglX
184 シーン1の最初のフレームではなくて、ムービクリップAの最初のフレームにもどっているようです。 シーンにとばすのをあきらめ、タイムライン上に飛ばすように変更しました。 ムービクリップの オブジェクトASに以下の様に記述しても 反応しませんでした。 on (press) { _root.gotoAndPlay(7); } 環境は、Flash4環境です。 Flash5以上でないとダメみたいです。 4の場合は、なにか代替する方法はあるのでしょうか?
>環境は、Flash4環境です。 真っ先にそれを書きましょうね。 思いっきり無駄なレスだらけになったよ。
>>168 、
>>175 BGMを流しっぱなしで、シーン移動ってのがなんかめんどうじゃなかったっけ?
やったことないから知らんけど
>>201 私もシーン分けを使ったことがありませんが、
シーンはBGMの変わり目で区切るらしいです。
>>199 衝撃的な発表を今更するなw
Flash4でそのスクリプトは使えませんね。
on (press){
gotoAndPlay(7);
}
と記述して。Flash4でムービークリップに対して
on()は使えません。
おそらく参考書か何かを見ながら作ってるんだろうけど
まずはヘルプを読んでスクリプトは確認して。
4までと5以降はかなり文法が違います。
(一応別言語なのでw)
変な質問ですが、 if(mc._visible==true){ mc._visible=false; }else{ mc._visible=true; } というのと mc_visible^=1; は、後者の方が速いのでしょうか?
>>204 何千回か実行するベンチマークテストのようなもので実験すると良いと思います。
どのくらいのちがいがあるかというとこまで分かりますから。
mc._visible = (mc._visible) ? false : true;
これも実験して報告してくれるとうれしいです。
mc_visible^=1; の方が早いと思うよ って言うのは簡単だけど、実験すれば良いのにしないというのは愚かなことだと思ったので。
>>205 mc._visible = (mc._visible) ? false : true;
この書式 気持ちが悪い。
意地でもif文にするオレはだめすくりぷたー。
208 :
Now_loading...774KB :2005/08/06(土) 09:54:31 ID:PA3tH5uK
>>207 使いどころ多いよ。
this.gotoAndStop( flag ? 1 : 2 )
って風に()内でifしたり
a += ( a > 0 ? 1 : -1) * ( Math.abs(a) > 5 ? 1.1 : 1.5)
みたいにifを計算内に含めるし。
209 :
Now_loading...774KB :2005/08/06(土) 14:42:19 ID:Z3evgGmc
Flash Remotingの実験をしようとしているのですが、初っぱなからつまづいています。
まず、クラスの importからできません。
import mx.remoting.Service; // Service クラスをインポート
この1行だけにしてみましたが、
'mx.remoting.Service' がロードされませんでした。
と言われてしまいます。
環境はFlashMX 2004 Professional + WindowsXP sp1。
こちらからFlash Remoting コンポーネント、ActionScript 2.0 対応版の
両方もインストールしてあります。なにが足りないのでしょうか?
ttp://www.macromedia.com/jp/software/flashremoting/downloads/components/
210 :
209 :2005/08/06(土) 15:21:26 ID:Z3evgGmc
>>209 肝心の「共通ソースコード」をインストールしていませんでした。
お騒がせしました。
211 :
Now_loading...774KB :2005/08/06(土) 18:44:07 ID:od80+K2s
コンボBoxの値の取得(FlashMX2004)
fnameというテキストフィールドに入れた名前が、赤ボタンを押すごとに、
コンボBoxの選択項目として追加されていくASを書いています。
http://oekaki.s56.xrea.com/x/uploader/src/oe2287.swf f1,f2、・・・ と入力し、コンボBoxでの選択を確認するため、Box上の
Select欄(変数:fname1)に選んだものが出るよう書いたつもりですが、
「undefined」しか出ません。
<ボタン>
on (press) {
combobox1.addItemAt(n, fname, fname); //n番目の選択欄にfnameとして入る
n++;
}
on (release) {
fname = "";
}
<コンボBox>
on(change) {
_root.fname1 = combobox1.selectedIndex;
trace(combobox1.selectedIndex); //traceでもundefinedになる
trace(this);
}
この場合、コンボBoxの選択とSelectの表示を一致させるには
どうすればいいでしょうか?
>>221 パスが間違ってる。
>trace(combobox1.selectedIndex);
を trace(this.selectedIndex);
にかえる。
213 :
212 :2005/08/06(土) 21:31:53 ID:zp1UYVZ4
214 :
211 :2005/08/06(土) 22:26:05 ID:xJwBYMvg
>>212 ありがとうございます。
combobox1.selectedIndex → this.selectedIndexでundefinedは出なくなり
ましたが、Boxで選択すると、例えば(fname)f1→0 , f2→1f3→2 と、
_root.fname1 = this.selectedIndex の返す値が0から開始する形になります。
本当は、fnameの文字列f1, f2,f3 を返したいのですが、更にどのように変更
すればいいでしょうか?
自己解決しました。 _root.fname1 = this.selectedIndex → _root.fname1 = this.getValue() でOKです。
216 :
211 :2005/08/07(日) 08:14:56 ID:BE5tQCmA
コンボBoxの値の維持(FlashMX2004)
テキストフィールドfnameに入れた名前が、保存ボタンを押すごとに、
コンボBoxの選択項目及びsolファイル(年齢データ)の名前として追加
され、swfを再起動しても項目が維持されるようなASを書いています。
単なる追加だけなら
http://oekaki.s56.xrea.com/x/uploader/src/oe2339.swf の通り出来るのですが、次の段階、つまり再起動&項目の維持が
できません(空になります)。 上のswfのASを抜粋すると、
<保存ボタン>
on (press) {
mySO = SharedObject.getLocal(fname, "/");
(略)
mySO.flush(); //設定した項目をローカルに保存する
combobox1.addItemAt(n, fname, fname);
n++;
}
<コンボBox>
on (change) {
_root.fname1 = this.getValue(); //fname1は欄Selectの変数
_root.fname = this.getValue();
}
ポイントは、起動時にディレクトリ "/"からsolファイルの名前を参照する
ことだと思いますが、どうでしょうか?
>>216 数値がきちんと保存されてないと思うけど、それはいいとして。
再起動&項目の維持っていうのは、一度コンテンツを閉じて
再度読み込んだ時の話ですか?
あと保存ボタンの一行目の
mySO = SharedObject.getLocal(fname, "/");
もなんで毎度読み込んでるのかよくわからないのだけど。
しかもこれってデータ一つにつき、一つSOつくってるの?
fnameがOSの命名規則に違反してたらそれでNGだと思うけど。
>>217 「再起動&項目の維持っていうのは、一度コンテンツを閉じて ・・・・・」
そうです。なので、swfの再起動=再び開く、ということです。
「mySO = SharedObject.getLocal(fname, "/"); もなんで毎度・・・・」
これは、本”逆引き大全550”のNo.306をしのまま引用したもので、理由
を聞かれても答えられない状態です。
「しかもこれってデータ一つにつき、一つSOつくってるの?」
全体で1回こっきりでいいのですか?
>>218 もうちっと理解してから・・・。
ま、いいや。
何がしたいのかがよくわかってないのだけど
さということは再起同時にコンボボックスに
以前fnameに登録した項目・・・例えばname01、name02、name03
などがセレクトできるようにリストとして表示されて欲しいと言うこと?
>>219 「以前fnameに登録した項目・・・例えばname01、name02、name03 」
そうです。強いて言えば、前に作製したsolファイルのリスト。
>>220 それなら「無理です」
ファイルのリストは取得できませんから。
なので一つのsolに登録するようにしましょう。
配列に入れていくようにすればいいでしょう。
>>221 ありがとうございます。
「配列に入れていくようにすればいいでしょう。 」
やってみます。
スクリプトの編集ボックス内では、システムで設定されたカーソルの点滅速度が 反映されないのがデフォなんでしょうか。 点滅速度が遅くてイライラしてしまいます。当方MX使用です。
外部xmlを読み込んで遊んでるんですが、 テキストノードの" () "半角かっこに挟まれた部分のみを消去して表示することは可能でしょうか。 具体的には、 "今日は(すばらしく)良い天気ですね。" という文章が外部テキスト内にあり、 "今日はいい天気ですね。"とダイナミックテキストに表示させたいのです。 現在、普通に全文表示させるところまでは組んであります。 使われることが無さそうな処理だと思いますが、 よろしくお願いいたします。
>>224 XMLから取得後、
@文字列の最初から "(" までを取得
A")"から文字列の最後までを取得
@+Aで可能。
226 :
Now_loading...774KB :2005/08/07(日) 22:01:38 ID:gPdEKhh8
>>224 225さんが出した通り、テキストからindexOfを使って始めの"("と終わりの")"位置を見るて、
0から最初の"("まで、")"のひとつ先から最後までのテキストの形に書き換える
それを"("と")"が無くなるまでループで行う。
全角、半角をまとめて行う為、最初に"(",")"は全角か半角に統一しておく。
って処理でOK。
str="今日は(すばらしく)良い天気ですね。" for(var i=0;i < str.length;i++){ if(str.substr(i) =="("){ while(i < str.length){ i++; if(str.substr(i) ==")"){ } } } } 途中で飽きた
単純に word = "テキスト:(全角の括弧)&(半角の括弧)から括弧内テキストを削除" function removeBracket (str){ str = str.split("(").join("(").split(")").join(")") while(str.indexOf("(")!=-1 && str.indexOf(")")!=-1) str = str.substr(0,str.indexOf("("))+str.substr(str.indexOf(")")+1) return str } trace("1. "+word) word = removeBracket(word) trace("2. "+word) とか。
わ、皆さんありがとうございます。 ひとつひとつ試してみます。
)や(が単独であったらどうすんだべ
スレの流れをあまり見ないで書いちゃうけど、 括弧が常に存在するわけではないということも考えないといけないからね。
>>230 228で出した例だと()が同時に存在して初めて消すから、単独なら消されないかな。
>>231 なるほど。
そうすると
while(str.indexOf("(")!=-1 && str.indexOf(")")!=-1)
↓
while(str.indexOf("(")!=-1 && str.indexOf(")")!=-1 && str.indexOf("(") < str.indexOf(")"))
って感じかねぇ。
>>228 すみません。半角かっこに挟まれた部分のみ削除するには、
どのようにスクリプトを組みなおせばよいのでしょうか。
っ // str = str.split("(").join("(").split(")").join(")")
>>234 ゲェー、なんじゃこりゃー。
こんな簡単に出来てしまうとは。
traceして観察しまくったのに、殆ど仕組みが分かりません。
っ?
夏厨
すみません。熱中するあまり日付が変わったのに気づきませんでした。 もと ID:npLmZpXLです。 ほかの文字列に挟まれたコトバも消えるか実験してて、 <チラシの裏></チラシの裏>で組みなおしたらwhileで永久ループしたらしく、 30分ほどの作業が水泡に帰す憂き目にあいました。
>>239 ああ、いじるんだったら
while(str.indexOf("(")!=-1 && str.indexOf(")")!=-1)
str = str.substr(0,str.indexOf("("))+str.substr(str.indexOf(")")+1)
↓
while(str.indexOf("(")!=-1 && str.indexOf(")")!=-1){
str = str.substr(0,str.indexOf("("))+str.substr(str.indexOf(")")+1)
}
に変えたほうがいいかも。
{}が無いと、直後または次の一行のみ実行されるから、
ヘタにいじって上限一致するけど書き換わらない、って状態になった時無限に入るから。
とりあえず indexOf("ココ") の「ココ」の部分変えれば何でもいけんじゃないかな。
複数指定したいならこの部分のワードを配列にして、
for..inで回せばOKかな。
>>240 そこは気づいて直せました。アドバイス感謝です。
いじってたら、なんとなくぼんやりと分かってきました。
始め質問させていただいた時の処理も完全にクリアできました。
str = str.split("(").join("(").split(")").join(")")
ですがこの一文が理解に苦しみます。
配列を使って何かやってる雰囲気は感じ取れるのですが、
直後にtrace(str);しても効かないため、悩んでます。
str.split("(") str.split("(").join("(") str.split("(").join("(").split(")")… とそれぞれtraceしてみれ
243 :
Now_loading...774KB :2005/08/08(月) 07:14:40 ID:JHpKSTB5
正直に言いますと、ASでの配列の使い方が分かりません。 そこでどなたか、実例として、小学校の九九の計算ASを紹介して下さい。
>>243 ASでのというか配列ってわかります?
グーグルで検索してみて。
245 :
243 :2005/08/08(月) 07:40:40 ID:JHpKSTB5
>>244 いやー、そういう突っ込みはくるかとw CやJavaの配列の使い方は、
理解しているのですが、ASの配列だけわかりません(本を3冊読んで
ますが分かりません)。
ASでの配列の使い方って、例えば
kuku = new Array();
kuku[0] =1;
kuku[1] =2; //あるいは、 kuku[i] =i++; とか?
これでいいんですか?
>>245 そのレベルならヘルプに配列のサンプルが載っていますから、見てくださいね。
kuku = new Array(1,2);
248 :
Now_loading...774KB :2005/08/08(月) 07:59:16 ID:bJmTuRpL
>>245 配列なんてどの言語でも基本は同じだと思うけど、何が判らないの?
例えも意味がわからないし…。
配列に追加していく、って事なら
array.push()、array.unshift()、後は貴方が書いてるように
array[0] 、 array[1]と直接ナンバー指定していれてっても良いし。
とりあえず「array クラス」でヘルプを検索すると良いよ。
ちなみに九九だけなら
for(var ln=1 ; ln <=9 ; ln++)
for(var rn=1 ; rn <=9 ; rn++)
trace(ln+" * "+rn+" = "+ln*rn)
で良いんじゃない?
CやJavaと何が違うのかと・・・
251 :
243 :2005/08/08(月) 09:02:15 ID:yPizTctc
最終目標は、SharedObjectのsolファイルに配列データをボタンを押す毎に 書き足しながらコンボBoxの項目も増やし、swfを一旦閉じて再度swfを開いた 時にsolファイルに記録させた配列データを再びコンボBoxに流し込む、 というものです。 「array クラス」でヘルプ見ました。しかし、このヘルプでもそうですが、kuku[n] のように変数で要素を指定する例が少なく、大抵あらかじめ指定する形 kuku=["1", "2", ....] となっていて、右辺を細工させた kuku = new Array(); kuku[a] = i*2; kuku[b] = i*2-1; kuku[a][b]=kuku[a]*kuku[b]; という形も可能かどうか分からない状態です。なので配列の一番単純な例として 九九のAS例を聞きました。 ところで上のa,bの例は可能でしょうか?
聞く前にやってみればいいじゃないか
多元配列って直接代入した場合 newいらなかったっけ?
254 :
243 :2005/08/08(月) 09:20:06 ID:yPizTctc
>>252 そうですが、ASの配列の扱いの根本(特にkuku[n] のように、変数で要素を
指定する場合)が分かっていないもので聞いてみました。
とりあえず、自分でなんとかやってみいます。
>>243 うすうす予感はしてたが昨日のsolのやつか。
もーちょっと一人で頑張れないのか?w
256 :
243 :2005/08/08(月) 09:33:49 ID:yPizTctc
>>255 ビンゴです。
暫く山に篭らず自分でやってみます。
257 :
Now_loading...774KB :2005/08/08(月) 12:54:36 ID:5DlMX+Ff
loadMovieで外部ファイルを読み込んだMovieClipを複製する方法ってありませんか? 外部のJpegファイルを大量に複製して使いたいのですがうまく行きません。 duplicateMovieClipが使えればこんなに悩まなくてすんだのですが・・・
無い。
>>257 おれもそれで悩んで、結局ダメだった。
MovieClip1の中にMovieClip2を作って、そこ(MovieClip2)に読込み
MovieClip1を複製する方法でやっている。
作ってロードしてるだけだけど、こんな風にもできるよ for(var i=0;i<10;i++){ var t_pape=this.createEmptyMovieClip("pape"+i, i); t_pape.loadMovie("pape.jpg"); t_pape._x+=30*i; t_pape._y+=30*i; } stop();
261 :
Now_loading...774KB :2005/08/08(月) 15:53:58 ID:NzzqaM0v
質問です。 a_mc、b_mc、c_mc…z_mcとムービークリップのインスタンスを26個を作り、 さらにテキスト入力のインスタンスとボタンインスタンスをひとつ作ります。 テキスト入力に特定のインスタンス名を入力し、ボタンを押すと入力されたインスタンスに 処理を行う(たとえば、アルファ値を半分にする)というようなプログラムの場合、ボタンのASはどういう風に書けばいいのでしょうか? つまり、テキストにa_mcと書いてボタンを押すとa_mcに対して処理が行われて、 b_mcと書いてボタンを押したらb_mcに対して処理が行われる…ということです。 分かりにくかったらすみませんが、どなたかご回答お願いします。
>>261 テキストをobjectと言う変数とすると、
on(release){
_root[object]._alpha/=2;
}
でok
263 :
Now_loading...774KB :2005/08/08(月) 16:16:29 ID:NzzqaM0v
264 :
257 :2005/08/09(火) 02:12:29 ID:8Rre6+6i
>>258-260 やっぱり無理ですか。
いま260さんの方法でやってるんですが読み込む画像が
全部で500枚くらいあるんで激重です(;´Д`)
>>264 それはそもそも何に使うのかしらないが
かなり無理があるコンテンツではないか・・・
(自己レス&現状) ・・・配列の使い方は大体分かりました solファイルのコンボBox化リストを作成し、配列を使ったsolファイルの 選択→開くは出来るようになりましたが、ファイルの追加ができず困っ てます。 とりあえず自分でやってみますが、分からなくなったらまた聞きに来ます。
>>266 なんか間違った方向に進んでる気がするが・・・。
結局データ(fname)ごとにsolファイル分けてるの?
>>264 265に同感。
どういうものを目指してるのかわからんが、
理論上可能だからというだけで設計しないほうがいいぞ。
>>267 単にsolファイルに配列を持たせればいいだけのような気がするんだが…
SharedObject.data.fnames_arrayとか。
>>267 今やってるのはテストの奴で、実際はsolファイル毎にかなり大きな文書
データ(最大10MBくらい)を入れるつもりです。
なので、fnameとデータ(上の例では年齢:Age)という配列形式で1つの
solファイルに集約すると、配列の容量でパンクすると思い、データ名毎に
分けています。
>>269 solに10MBとはまた豪快なコンテンツで・・・。
サーバー絡むならPHP等と連携させて管理する方が良さそうな。
>>271 ・・・お前はホントにCやJavaの配列を知ってるのか・・・
だいたい記憶領域を10MBに設定してる香具師なんている? ほとんどデフォルトか10Kだと思うんだけど。。。
>>272 (ASではないですが、念のため)Javaではこんな感じで使っています。
double[] a1 = new double[100];
double[] b1 = new double[100];
StringTokenizer st2 = new StringTokenizer(line2, ",");
a1[m] = Double.parseDouble(st2.nextToken()); //StringTokenizerで分割&配列へ挿入
b1[m] = Double.parseDouble(st2.nextToken());
>>273 だいたい記憶領域を10MBに
まあ、滅多にいないでしょうねw
>>271 スタンドアローンならsolに10MBのデータなんて必要ないじゃん
仕様が明確でないから、どういう手法が良いよとかアドバイスできないよ
>>273 警告ダイアログが出て、設定するようにメッセージが出るはず。
複数のsolファイルがその大きさになった時の警告の出方は知らないけどw
>>274 不思議な進化を・・・
278 :
Now_loading...774KB :2005/08/09(火) 08:39:34 ID:5rSQNCWh
文字列の分解&格納の質問 ソフト:FlashMX2004 です。 テキストフィールド(txt)に例えば、data1,data2,data3 と入力し、 ボタンを押して配列myList[i]に格納するASを書いています。 myList= new Array(); on (press) { str = new String(txt); for(i=0; i<=2; i++){ myList[i] = str.split(","); trace(myList[i]); } } これで実行すると、 data1,data2,data3 data1,data2,data3 data1,data2,data3 分割されず、3つ出て来ます。どう修正すべきでしょうか?
279 :
278 :2005/08/09(火) 08:44:28 ID:5rSQNCWh
あー、すいません。理想の出力は、myList[i]が3段になって data1 data2 data3 です。
myList = str.split(",");
281 :
278 :2005/08/09(火) 09:12:03 ID:5rSQNCWh
>>280 Thxです。
ASとは関係ありませんが、ちなみに今日は、黒柳徹子とインザーギの誕生日
だそうです。
別にfor文で回さなくても
>>280 氏が書いてあるようにすれば
一発で配列に格納されます。
283 :
Now_loading...774KB :2005/08/09(火) 16:25:33 ID:6CII+kV2
すいません質問させてください。
FCSに置いてあるアプリケーションにアクセスするのを
アクセス制限できるんでしょうか??
例えば
http:// ○○○.com/game.html にアクセスしてる人がすでに
1人いる場合2人目はアクセス出来ないようにしたいのですが、
これってASで制限出来るんですか??
すいませんがご教授御願いいたします。
不可能
285 :
Now_loading...774KB :2005/08/09(火) 17:14:20 ID:zGW0Tw2t
《TAT》
>>283 接続中のクライアント数をapplication.clients.lengthでチェックすればいいでしょう。
接続拒否はapplication.rejectConnection()でできます。
287 :
Now_loading...774KB :2005/08/09(火) 17:59:58 ID:6CII+kV2
>>286 わざわざ有難う御座います。
一度やってみます。
またどうなったか報告させて
頂きますので!!
288 :
Now_loading...774KB :2005/08/09(火) 18:28:17 ID:6CII+kV2
>>286 すいません
初心者なもんでお聞きしたいのですが??
例えばアプリケーション「game]に接続している人数を確認
する場合、text1にその人数を表示さすには、どうしたら
良いですか??宜しくお願いします。
text1 = application.clients.length;
初心者ですがは免罪符にならない
291 :
Now_loading...774KB :2005/08/09(火) 22:06:25 ID:6CII+kV2
>>289 その前後は特になにかASの記述はあるんですか??
>>288 その前に確認だけどFCSの開発するのはいいけど
通常のASの知識はどの程度あるのですか?
FCSとのやり取りに関してどこまでは自分で書けるのですか?
今の質問を真に受けるとそれを全部教えないといけない気がして
遠大なお話になるのだけど。これらのスクリプトについてヘルプは確認した?
>>288 FCSの正規ライセンスはお持ちですか??
294 :
Now_loading...774KB :2005/08/10(水) 00:33:22 ID:g0UYuFEy
>>292 >>293 はっきり言って知識はありません。
何か1つでも完成させて、それを参考にこれから色々勉強して行く
つもりなんですが・・・
FCSへの接続に関してはアクセスさせる事ぐらいしかできません。
サーバーも一応ホスティングサービスをうけてるのですが・・・
時間をかけてでもいいんで、少しずつ勉強して行きたいのですが、
なんとか皆さんのご協力で成長できたらと思ってます。
私の質問に何か問題があるようでしたら質問も控えさせて頂きますので
色々とご迷惑おかけして本当にすいませんでした。
あとソフトも購入してライセンスも取得しました。
>>294 例えばアクセスまで出来るなら、そこからわかる範囲で自分で書いてみて
その上で質問して欲しいなと。
どのファンクションを使うかは書いたんだから、それを辞書なりで調べてみて
まずは見よう見まねで書いてみたら何か見えてくるはずだし。
そうしないとどこから説明したらいいのか考えたら、きりがないので。
>>283 の様にある程度絞られていれば答えられるけど。
というわけで、迷惑とか気にしなくていいので
まず自分で質問範囲を絞って。
296 :
Now_loading...774KB :2005/08/10(水) 00:44:19 ID:jMiveYqQ
テキストフィールド操作の質問 ソフト:FlashMX2004 です。 テキストフィールド(txt)の内容が変更されたか、否かの監視を行う ASを書いてます。内容がそのままなら目印nはそのままで、変更 されたらn+1(1だけ足す)とします。 str = new String(txt); //元の文字列をオブジェクト化 this.onEnterFrame = function() { if (txt == str) { n = n+0; trace("same name"); } else { trace("Other name"); n=n+1; break; } break; }; これでやると、nが延々と足されてしまします。どう改善すべきでしょうか?
>>296 とりあえずelse句の中で、strに現在のtxtを代入しる
298 :
Now_loading...774KB :2005/08/10(水) 01:16:22 ID:g0UYuFEy
>>295 遅い時間なのに
嬉しいお返事有難う御座います。
今日は遅いので明日朝からやってみます。
本当に有難う御座いました。
>>296 変更の監視ならonEnterFrame使わないで
キーリスナー使ってキーボードが押されたとき
比較したほうがよさげ。
300 :
296 :2005/08/10(水) 02:31:05 ID:0tSBQhCe
>>299 やってみます。
>>297 とりあえずelse句の中で、strに現在のtxtを代入しる
代入の仕方がよく分からないのですが、最初の文字列を a として、
n = 0;
txt="a";
this.onEnterFrame = function() {
str = new String(txt);
if (txt == str) {
n = n+0;
trace("same name");
trace(n);
} else {
n = n+1;
str=txt; //現在のtxtを代入?
trace("Other name");
trace(n);
break;
}
break;
};
これだと、 same name,0 が連続して出てます。
301 :
296 :2005/08/10(水) 03:19:03 ID:aU0ErvSi
>>299 キーリスナーではないのですが、「逆引き大全550」のNo.203に「テキストフィールド
の変化を通知する」というのがあり、これを改造して
n = 0;
myL = new Object();
myL.onChanged = function() {
n = n++;
trace(n); //変化の様子を見る
};
waku.addListener(myL); //wakuはテキストフィールドのインスタンス名
としました。変化は感じているようですが、nがゼロのままです。
どうしたものでしょう?
※ String()方式ではなく、こっちの方が簡単そうなので、このリスナー
方式で今後は進みます。
>>301 よくそれでエラーが出ないな。
n = 0;
waku.onChanged = function() {
n++;
trace(n); //変化の様子を見る
};
これで動くはずだが。
303 :
296 :2005/08/10(水) 04:24:18 ID:aU0ErvSi
>>302 ダメです。
反応はしますが、nが変化しません。
>>303 じゃ、そっちのムービーの構造が間違ってるとしか思えないけど。
このスクリプトどこに書いてるの?
305 :
296 :2005/08/10(水) 04:31:18 ID:aU0ErvSi
フレーム内です
どこのフレームよ。 毎度毎度情報小出しにするのやめてくれ。もう答えないよ。
307 :
296 :2005/08/10(水) 04:41:41 ID:aU0ErvSi
>>306 すみません。
Flashのボキャブラリが貧しいので、別の表現としては、「フレームアクションの
フレーム」とか、「メインのタイムラインのフレーム」という言い回ししか思いつき
ません。
どうしましょう。。。。
Flash MXのスクリーンショットをUpしてもいいですか?
>>307 Flashの簿キャブラリが貧しくても、伝えようとする努力は出来るでしょ。
いくら、大変です、うまくいきませんと叫んだって、あなたがどこで転けてるかは
魔法使いでもないのでわかりません。
少なくとも、Flashのオブジェクトの位置関係(スクリプトも含む)を意識して
作業しましょう。いくら本をたくさん買ってきて、つぎはぎをしてもそれがわかってないと
コンテンツは完成しませんよ。
で、今回はメインのタイムフレームですか。だとしたら動作するはず。
trace結果までは表示できてるのですよね?
それで考えられるとしたら「n=0」が再帰的に呼び出されているか、
(もっともそれでもtrace結果はn=1になるはずだけど)
書いている場所がメインのタイムラインじゃないかでしょう。
とりあえず、このヒントでわからなければオーサリング画面を
スクリーンショットとって見せて。
309 :
296 :2005/08/10(水) 09:10:55 ID:De4MVd1c
n++;
>>309 教えたとおりに書いてないじゃん。
n = n++;
をn++;に変更。
312 :
296 :2005/08/10(水) 10:58:38 ID:vKE0hBWp
あ〜恥ずかしい。。。。 n = n++; なんて。。。。 大変ご迷惑おかけしました。 暫くの間、このスレには立ち寄らないようにします。
ヽ(・ω・)/ ズコー \(.\ ノ
誘導されたのでこちらへ。 画面左端にある回転砲台を操作して弾を発射するゲームを作っているのですが、 スペースキーを押すと砲台に当たるMC(Houdai)がMC(Tama)を向いている方向に16の速さで撃つように onClipEvent(load){ tno=0; } onClipEvent(enterFrame){ ・・・・(砲台の操作)・・・・ if(Key.isDown(Key.SPACE)){ attachMovie("Tama","tama"+tno,tno); eval("tama"+tno)._x=_x; eval("tama"+tno)._y=_y; } eval("tama"+tno).dx=Math.cos(_rotation*Math.PI/180)*16; eval("tama"+tno).dy=Math.sin(_rotation*Math.PI/180)*16; eval("tama"+tno)._x+=eval("tama"+tno).dx; eval("tama"+tno)._y+=eval("tama"+tno).dy; if(this._x<0||this._x>Stage.Width||this._y<0||this._y>Stage.Length||_root._currentframe==2){ this.removeMovieClip(); } } というASをHoudaiに入力したんですが、これを実行した所スペースキーを押しても砲台の向いている向きの左のあたりに 動かない弾(砲台を回転させると弾もそれにつられて動く)が表示されるだけで上手く動作しません。 どこに問題があるのでしょうか。指南お願いします。
>>314 砲台MCの子として弾MCを作るつもりなら、
弾の始点は(0, 0)、飛ばすのは、_xだけを
操作するようになるんじゃないのかな?相対座標なので。
ただ、それだと発射後に砲台を回転させると
発射後の弾道も一緒に曲がってしまうことになり、
おそらく望むカタチではないのだと思うので、
もう一つ上の階層に弾MCをattachするようにするのが良いような。
あと、eval("tama"+tno)使うよりは、
this["tama" + tno]と書いた方がCOOL。
>>314 よくエラーでなかったね。
コメント行はいいとして、
if文のところ
>Stage.Width
wは小文字。
>Stage.Length
これはなんでしょう。
とりあえずこの3点を直したらtama動きましたよ。
317 :
314 :2005/08/11(木) 02:40:38 ID:08AeH1OF
>>314 eval使いすぎ。
var t_tama=attachMovie("Tama","tama"+tno,tno);
t_tama._x=_x;
......
と書けることも参考までにどぞ。
attachMovieで作り出した番号付きインスタンスに、 ASからアクセスする方法ってありませんか、と聞きに来たんですが…、 this["objName" + i] objName = attachMovie("class", "instance" + i, i); リアルタイムに答えが書かれてましたね…。 あと100レス来るのが遅れてたら「ログ嫁!」とか罵倒されてるところだった('A`)
320 :
Now_loading...774KB :2005/08/11(木) 15:03:16 ID:yr7WzqrK
ライブラリに登録してあるJpegファイルを動的にロードする方法ってないですか? 今は画像一つ一つにMovieClipを作ってattachMovieで読み込んでるんですが 画像の枚数が何千枚もあるんで手動でこんなことやってたらきりがありません。 loadMovieで外部から読み込むみたいにライブラリから読めるといいんですが。
>>320 attachMovieでいいじゃん
まあ、こんなヴァカな方法はやめたほうがいいと思うよ。
>>320 動的に読むのなら最初から外部ファイルにしておけばいいような気がするが
>>320 動的にロードって意味がよくわからんな。
flaファイルのライブラリに読み込むんじゃなくて、外部ファイルにしといて、
swfに読み込みたいってことか?
だったら
>>322 の方法でいいような。
構成を知らんから、そもそもなぜattachMovieにしてるのかもよくわからんのだが。
しかし何千枚って…
共有じゃないライブラリで良いなら 単に1つのMCのフレーム毎に 違う画像を読み込んだのを用意しといて gotoAndStopで表示変えれば良いやね。
325 :
320 :2005/08/11(木) 16:34:07 ID:yr7WzqrK
>>321 自分でもそう思います(;´Д`)
>>322-323 swf内にjpegファイルを埋め込んで一度に必要なファイルを
ダウンロードさせたいんですよ。
>>324 キタ━━━━━(゚∀゚)━━━━━ !!!!!
おかげさまで何とかなるかもしれません。
ありがとうございました。
>>325 それなら動的とは言わないw
つか、何千枚もあったら一枚のサイズ知らないけど
メモリーが持たない気がする。
327 :
Now_loading...774KB :2005/08/11(木) 23:43:06 ID:X93oyQZH
質問です。a_mcというムービークリップに onClipEvent(load) と書いたときは動作するのに フレームにa_mc.onLoad = function()は動作しないのですが これは仕様なんですか?回避策あるんでしょうか? おねがいします
>324 何千枚もおててで放り込むの? ライブラリに読み込んだ複数の画像のリンゲージを、 画像ファイル名と同じ名前に1発で設定する方法ってないですか? 今回の例のように何千枚と言わず、2〜30枚設定するときでも、 現状1つずつ設定してまして、けっこうメンドくさいんですが…。
>>327 a_mcクリップの中のa_mcを指定してるから。
>>327 a_mcのフレームにかいてるならthis.onLoad = function()
332 :
327 :2005/08/12(金) 00:11:02 ID:yOUxk5pQ
>329-330 すみません、説明不足でした。 _rootにa_mcを配置してあるんです。 で、a_mcには何も書かず、_rootのフレームアクションに a_mc.onLoad = function() { trace("ok"); } と書いてあるんですが、traceの画面もでません。a_mcに onClipEvent(load) { trace("ok"); } と書けばtrace画面でokと出力されるんです。 onLoadとloadは違うのでしょうか。
>>328 一連のファイルのフレームへの読み込むのは
ファイル名を連番にしておいてシーケンスとして読み込めば
一発で出来るわな。
どうしても個々にリンケージを設定したい場合は
基本的に手動でやるしかないだろうけど。
それを回避するのが、
>>324 の一つのMCで
フレームで分ける方法なんだと思うが。
>>331 さっそくググってきました('A`)
何ヵ所か見たんですが「FlashMXをバッチで操作する」感じなんですかね。
“使いこなせれば”便利そうです…。
ともかくもうちょっと調べてみます。サンクス。
てか、onLoadじゃなくonEnterFrameでやってみ
338 :
Now_loading...774KB :2005/08/12(金) 00:48:49 ID:zYF1yyWx
複数の箇所の文字列を変換する方法(Player6以上で) ソフトはFlashMX2004 テキスト(strABC.txt)の中身が、txt1を変数として、 txt1=abcdefg abcdefg ABCDEFG ABCDEFG 0123456789 0123456789 であったとき、この任意の複数の文字列を、同時に他の文字列に 変換する方法を知りたく思います(Player6以上)。 馬場ぎんがさんの「ActionScriptポケットリファレンス p196」によれば、 textのインスタンス名.replaceSel("変換"); で可能とのことですが、これではswf実行画面で1箇所を指定して その1箇所しか変えられず、同時に複数の箇所を変換できません。 (例えば、2つのabc →xxx など) Player7以上ならば、replaceText()で可能ですが、下位バージョン での実行を可能にしたいので、出来るだけ使いたくありません。 アドバイスを願います。
>>336 onEnterFrameでは動作するんです。
>>337 「イベントハンドラを設定するには、インスタンス(タイムライン)が
存在しなければならず、すでに存在するということはロードが
済んでいると考えられるからです。」
という部分があるんですが_rootの1フレーム目にa_mc.onLoadと
書いても、a_mcがその時点でロードが済んでおらず、onLoadが
呼び出されない、という意味でしょうか。
onClipEvent(load)の場合はa_mcはロード済だから動くと。
難しそうなのでonClipEvent(load)でやります。ありがとうございました。
340 :
Now_loading...774KB :2005/08/12(金) 00:58:51 ID:qdXMRgOk
ずっと人大杉なんですが 解決方法ありませんか?
341 :
Now_loading...774KB :2005/08/12(金) 01:20:09 ID:zYF1yyWx
>>340 夏休みが終わるまで無理かも。
大学によっては、9月の中旬まで夏休みだし。
2chビューアーの使用をお勧めします。
342 :
341 :2005/08/12(金) 01:20:59 ID:zYF1yyWx
すみません。ageてしましいました。
343 :
Now_loading...774KB :2005/08/12(金) 01:25:45 ID:qdXMRgOk
>>341 ありがとうございます。
それって有料なんですか?
>>338 つまりPlayer6で実行したいってこと?
//ABCをXXに置換
var arr = new Array();
arr = txt1.split("ABC");
trace(arr.join("XX"));
//一行で済ませるならこっち
trace(txt1.split("ABC").join("XX"))
>>343 ageるのも2chビューアーも無料です。
>>344 ありがとうございます。
いま調べたらusd550って書いてあったのですが
346 :
338 :2005/08/12(金) 01:38:10 ID:zYF1yyWx
>>344 なるほど、splitですか。
やってみます。
>>343 ソフトウエア板にビューアーの比較があった。。。。 ←ココも人大杉だったw
347 :
338 :2005/08/12(金) 02:33:49 ID:vhXYTmuU
>>344 有難うございます。出来ました。
文字変換の応用で、2つの改行を1つに減らすASを書いています。
344さんのアドバイスから、
rep = new Array(); //フレームアクション
on (press) { //ボタンに記述
rep = txt1.split("\n"+"\n");
txt1 = rep.join("\n");
trace(txt1);
}
としましたが、変化がありません。また("\n"+"\n")→("\n\n")と
しましたが、ダメでした。
どう改善すべきでしょうか?
>>347 場当たり的に解決するのが大好きな俺が適当にアドバイスするよ
rep = new Array(); //フレームアクション
on (press) { //ボタンに記述
rep = txt1.split("\n");
for(i=0;i<rep.length;i++){
tmpTxt+=rep[i];
if(0==i%2){
tmpTxt+="\n";
}
}
trace(tmpTxt);
}
自分で試してみて解ったことを修正 rep = new Array(); //フレームアクション tmpTxt="";//これやらないと最初に「undefined」が入っちゃう(イヤン) on (press) { //ボタンに記述 rep = txt1.split("\n"); for(i=0;i<rep.length;i++){ tmpTxt+=rep[i]; if(1==i%2){//0だと0の時に0になるから最初のrep[0]の後に改行が入っちゃって(以下略 tmpTxt+="\n"; } } trace(tmpTxt); }
>>349 有難うございます、というかご苦労様ですw
>>349 ASを組んで実行しました。tmpTxt+="\n"; だとうまくいきませんが、
tmpTxt+=""; でOKでした。
最近良く見かけるけど流石フラ板だな いつもに増して新参が多い 専ブラ入れた方が見やすいし、人大杉なんてことはないし、鯖に負荷もかけづらい。
xml連携についての質問です。よろしくお願いします。 <member name="john" age="25" eye="brown"></member> この場合はxml.firstChild.attributes.age;で"25"が返ってくると思うのですが、 <member> <name>john</name> <age>25</age> <eye>brown</eye> </member> こういうxmlの場合、25を導き出そうと思ったら、 xml.firstChild.childNodes[1].firstChild.nodeValue; と書くしかないのでしょうか? もし後々xmlファイルの構造に手を加えた場合(ageの上に新しいノードを付け加えたり) またasコードを書き直さなければならず、困ってしまうと思います。 何かスマートな方法はあるのでしょうか。よろしくお願いします。
>>353 childNodes[1]って決め打ちするから困るのでは?
手を加える可能性がある部分は、変数で管理するなど工夫しないと。
あとはnodeNameでいろいろやるとか。
>>353 mx.xpath.XPathAPI使えば
356 :
Now_loading...774KB :2005/08/12(金) 23:14:45 ID:sM0kXycf
文中の選択位置の取得 ソフトはFlashMX2004 テキストフィールド(インスタンス名:txtIns、変数:txt1)中の文字列を 選択したときの開始位置と終止位置の取得を試みています。 txt1=abcdefg abcdefg ABCDEFG ABCDEFG 0123456789 0123456789 ここでASを on (press) { //ボタンアクション Selection.setFocus("txt1"); mark_begin = Selection.getBeginIndex(); mark_end= Selection.getEndIndex(); trace(mark_begin); trace(mark_end); } として、仮にABCを選択すると、trace出力が(0,52)というように、txt1 全部が選択されます。 どう改善すべきでしょうか?
>>347 trace(txt1.split("\r\r").join("\r"));
>>356 >Selection.setFocus("txt1");
この瞬間にtxt1の内容が全部選択されてる状態になるッぽい。
on (rollOver)にしてみるとか。
358 :
357 :2005/08/13(土) 03:20:23 ID:IqF1V8qN
359 :
本物357 :2005/08/13(土) 04:35:39 ID:cRHXHXI+
>>358 できなかった?
詳しいことは知らないけど\rも改行コード
間違えてた。
358は357さんへの返事。
>>357 確かにon (rollOver)でtraceできますが、on (rollOver, release)では
ダメでした(-1,-1になった)。そこで
on (rollOver) {
mark_begin = Selection.getBeginIndex();
mark_end = Selection.getEndIndex();
}
on(release){
trace(mark_begin);
trace(mark_end);
}
と2つに分けたらOKでした。
有難うございます。
362 :
347&356 :2005/08/13(土) 06:51:42 ID:GbjT2ChW
>>359 trace(txt1.split("\r\r").join("\r"));
traceには出力されますが、1行減っただけです。
またテキストフィールド内は全く変化しませんでした。
今のところ、349さんの方法でやっています。
(他の質問)
他のflaファイルよりコンボBoxをコピーし、その設定(値など)を変えて
プレビューしようとしたところ、次のエラーメッセージが出ます。
**エラー** シーン = シーン 1, レイヤー = レイヤー 1, フレーム = 1 :行 23:無効な
マウスイベントが指定されました。
on (change) {
on (change)を書いているのはコンボBoxのスクリプトで、23行では無く
1行目です(23行も書いた部分はありません)。しかもプレビューでは、
コンボBoxのプルダウンの矢印が消えています。
考えられる対処法は何でしょうか?
363 :
Now_loading...774KB :2005/08/13(土) 17:58:10 ID:ra3thNxx
loadingのAS
364 :
Now_loading...774KB :2005/08/13(土) 18:01:11 ID:ra3thNxx
loading用のASがイマイチ調べても分からないのです。教えて下さい。
>>364 こんな感じ。
var per_num:Number = 0;
_root.onEnterFrame = function() {
this.per_num = this.getBytesLoaded()/this.getBytesTotal()*100; //読み込み率
if (this.per_num>=100) { //読み込み完了時。
this.onEnterFrame = null;
this.gotoAndPlay(2);
}
};
366 :
364 :2005/08/13(土) 19:11:58 ID:jAHOgFq/
ありがとうございます。 もうちょっとがんばってみます。
(コンボBoxのエラー表示) 自己解決しました。 というより、本のCDにあるFlaデータを流用し、1から作り直しました。
質問させて下さい。 MX2004で、ボタンにfor文のアクションを設定しました。 on (release) { for (i=0; i<10; ++i) { } trace(i); } この状態でボタンを押すと、結果は10です。 しかし、 on (release) { for (i=0; i<10; ++i) { a = i; } trace(a); } 間に変数aを混ぜると、結果は9でした。 何故変数が増えただけで結果が違うのか教えてください。
2番目のfor分の中でiをtraceしてみれば? ちなみにfor(i=0;i<10;i++){....}が定型。
370 :
368 :2005/08/14(日) 11:33:56 ID:3uQZUeaj
>>369 即レスありがとうございます。
on (release) {
for (i=0; i<10; i++) {
}
a = i;
trace(i);
}
こうすると結果は10でした。
for文のなかでaに代入したのがマズかったようです。
ご教授ありがとうございました。
for文の処理の厳密な順番忘れちゃったよ…。 for(i=0; i<1; i++){ 処理。 } のとき、流れは、 1. iに0をぶち込む 2. i<1かな? → i==0なので処理続行 3. 「処理。」 4. i++。i==1に。 5. i<1かな? → i==1なので処理抜ける 6. 終わり。 これで合ってるよね…? で、++iの場合、iをインクリメントする場所が前倒しされたりするの? j = ++i; と j = i++; の違いみたいに。
++iにするとポスト処理だからaに最後入る値は9になってただけだよ。
バカ言ってるだけだろ
375 :
Now_loading...774KB :2005/08/14(日) 17:42:55 ID:lmpBV7SY
Q)インスタンス名のルールについて 本やGoogleで調べますと、インスタンス名として認識できる文字は 「半角英数字で、先頭は数字でない。また記号は、_と$。」 と書い てあります。しかし、Selectionクラスで、あるインスタンス名を持つ TextFieldを認識させようとすると Selection.setFocus("txt1_ins"); ←OK Selection.setFocus("txtIns"); ←不可 です。下の方は上の規則に反していないのにも関わらず、ダメな のは何故でしょうか? 大文字が入っていますが、例えば swIns.メソッド はOKです。 物凄く基本的な質問ですが、よろしくお願いします。
AS2.0?
377 :
375 :2005/08/14(日) 18:23:32 ID:lmpBV7SY
すいませーん。ソフトは、FlashMX2004_ver7.2 です。
>>376 特にASのバージョンを指定せず、そのまま使っています。
(ということは、AS1.0ですかね?)
379 :
375 :2005/08/14(日) 22:42:48 ID:s+fBC5Dp
>>378 ありがとうございます。
AS2.0でのインスタンス名の規則を知るため、GoogleとMXのヘルプで
調べましたが、該当するサイト(項目)がありませんでした。
どなたかインスタンス名のルールを記載したサイト等をご紹介ください。
381 :
Now_loading...774KB :2005/08/15(月) 00:31:16 ID:YDFWCn2F
インスタンスのローカル座標を配列で取得するASを書いています (FlashMX2004使用) id = 0; //クリックカウント用 xAdr = new Array(); //座標の配列 yAdr = new Array(); this.onEnterFrame = function() { divs = 0; XY.onPress = function() { //インスタンスXYを押すとき point = {x:_root._xmouse, y:_root._ymouse}; _root.XY.globalToLocal(point); xAdr[divs][id] = point.x; //ローカル座標が配列に入る yAdr[divs][id] = -point.y; trace("x= "+xAdr[divs][id]); id++; } }; }; これだと、trace("x= "+xAdr[divs][id]); でxが何も得られません(空白です)。 原因は何でしょうか? ちなみに、point.xの値は得られます。
>>379 ダメなのは本当に識別子のせいなのか?
とりあえず、MX2004pro、AS2.0で作ってみたが問題ない。
どうダメなのか書いてみれば解決するかもよ。
383 :
379 :2005/08/15(月) 00:46:05 ID:B3Es1u94
>>382 「ダメなのは本当に識別子のせいなのか?」
・・・・ そうですね。名前を変えただけでうまくいきました。
「どうダメなのか書いてみれば解決するかもよ。 」
・・・ 不可だったファイルは消してしまいました。
先生! 変数に代入した関数名を、関数として使うことは出来るのでしょうか?
385 :
Now_loading...774KB :2005/08/15(月) 03:32:33 ID:abcGi00T
attachMovieで複製したインスタンスを一気に消す方法 (FlashMX2004) 下の様に、MCのXY内にballAを複製し、 newMark = "ballA"+id; _root.XY.attachMovie("ballA", newMark, id, prop); 次のfor文で全て消したいのですが、消えません。 for (i=0; i<id; i++) { temp = "ballA"+id; _root.XY[temp].removeMovieClip(); } インスタンスのディレクトリ指定に問題があるのでしょうか?
387 :
384 :2005/08/15(月) 04:49:31 ID:tSiRJl4Q
失礼、自己解決。 オマケに説明不足。 外部ファイルからテキストとして引っ張ってきたファンクション名を使うっていう事だったんですけども。 hoge = "abcd"; hoge = eval(hoge); hoge(); にて解決しました事をお伝え。
>>385 for (i=0; i<id; i++) {
temp = "ballA"+i;
_root.XY[temp].removeMovieClip();
}
こうでは?
//シーン1の1フレーム目 var m:MyClass =new MyClass(this); //外部ファイル MyClass.as class MyClass{ private var x:Number = 0; public function MyClass(mc:MovieClip){ x = 100; mc.onEnterFrame =Move; trace(x); } private function Move():Void{ trace(x);//xがundefinedになる } } onEnterFrameなどのイベントハンドラにクラスメソッドを渡すと Moveメソッド自体は呼んでくれるのですが、メンバが未定義になってしまいます。 同様にLoadVarsインスタンスを自作クラス内メソッドで作製してテキスト読み込みをしても LoadVars.onLoad時にLoadVarsインスタンスがnullになってしまいます。 クラス内ではイベントハンドラに何か制限があるのでしょうか?
>>387 this[hoge]();
これで十分だけどね。
>>385 XYにそのattachしたMCしかないのならば
for (i in _root.XY){
_root.XY[i].removeMovieClip();
}
391 :
Now_loading...774KB :2005/08/15(月) 06:00:35 ID:KzCtqdFf
ボタンを押す毎にテキストフィールド内(複数行、変数txt)で改行される ASはどんな感じになりますでしょうか? 当方では試しに on(press){ rnd = Math.random()*10; txt = rnd+"\n"; } としましたが、1番上の行が変わるだけでした。
392 :
385 :2005/08/15(月) 06:18:01 ID:dyecdS25
>>388 あーそうだ。idでなく、iだった。
>>390 for (i in _root.XY) ですか。なるほど。
今回は390さん方式を採用し、OKでした。
391です。平たく言うと、テキストフィールドの表示がtraceによる出力のように (1行づつに)したいと思っています。
txt = rnd+"<BR>";
+=
ねーよwwwwwww
今、気付いたのですが、ASは2次元配列が不可なのですか?
>>394 ,395
txt += rnd+"\n"; でOKでした。
読み込んだ画像をクリックして、拡大ドラックでき、ボタンをクリックすると縮小させたいのですが…、縮小ボタンが作れません。 var loadListener:Object = new Object(); で読み込んだボタンに縮小させることは可能でしょうか? 環境はwindows Flash2004MX ちなみに、スクリプトはプログラマーに書いてもらいましたのでさっぱりです。 結構長いし(−−;一回で入りきらなかったです。 神様、先生、悪魔なんでもいいです。誰か分かる人いたら少しでもいいので教えてください(;_;)
そのプログラマに聞けば
はい、次の方どうぞー
ここはとても優しいインターネットですね。
>>400 ASがサッパリなのに聞いてわかるのでしょうか?
とりあえず縮小の仕方。
例えば、_rootにあるs_mcというインスタンス名のMCを
ボタンを押すたびに90%ずつ縮小したいのなら、
on (press) {
_root.s_mc._xscale = _root.s_mc._xscale*0.9;
_root.s_mc._yscale = _root.s_mc._yscale*0.9;
//まとめて書くならこっち
//_root.s_mc._xscale = _root.s_mc._yscale *= 0.9;
}
拡大ができているのならその逆をやればできると思うのですが、
何か自分でやってみましたか?
405 :
Now_loading...774KB :2005/08/17(水) 02:40:07 ID:DgNpvNBk
特定の桁の数字の格納(FlashMX2004) 有る数字の上2桁を、ボタンを押して格納するASについて質問です。 on (press) { //ボタンアクション for (snP=0; snP<snL; snP++) { //snPは数字の文字列の番号。snLはその長さ snN[snP] = sn.charAt(snP); //1文字づつ格納 } for (snP=0; snP<=snL; snP++) { if (snN[snP]>=1) { //1以上であれば(1-9であれば) sn1 = snN[snP]; sn2 = snN[snP+1]; //有効な上2桁を格納 trace("sn1="+snN[snP]); trace("sn2="+snN[snP+1]); break; //3桁以降は無視 } } } で、数字を -0.54321 とすると、sn1= -,sn2=0 になります。目標としては、 上2桁で sn1=5,sn2=4 としたいところですが、うまくいきません。 どうしたらいいでしょうか?
406 :
405 :2005/08/17(水) 05:59:43 ID:26lWYg+c
自己解決しました。不格好ですが if (snN[snP]>=1) を if (snN[snP]!=0 && snN[snP]!="." && snN[snP]!="-") としました。 (新しい質問) 文字列と計算の関係 文字列から得た数値を計算した場合について質問です。 snAHe = snHead+snA; //文字列の合成 snHeadは「-0.」 snAは「60」 つまり-0.60 snBHe = snHead+snB; //文字列の合成 snHeadは「-0.」 snBは「48」 つまり-0.48 snRateN = Math.abs(snA-snB); //60-48=12 trace(" snRatN="+snRateN); snRate = Math.abs(snAHe-snBHe)/snRateN; //本来は0.12/12=0.01になるべき trace(" snRate="+snRate); としたところ、出力で snAHe=-0.60 snBHe=-0.48 snRatN=12 snRate=0.0099999999999999 ← と、本来は0.01になるところで矢印のようになりました。 どう改善すればよろしいでしょうか?
str="-"; if(str<"1" || str>"9"){ trace("err retry"); }else{ trace("okey") }
parseFloat
409 :
405 :2005/08/17(水) 07:05:25 ID:7gHaE9d6
>>407 どうも。「1以上であれば(1-9であれば)」は if (snN[snP] >= "1")
でOKでした。
しかし一方の、文字列から得た数値を計算した場合は、parseFloat を使って
snAHe = snHead+snA;
snBHe = snHead+snB;
snAHe1 = parseFloat(snAHe); //実数化
snBHe1 = parseFloat(snBHe);
snRateN = Math.abs(snA-snB);
snRateN1 = parseFloat(snRateN); //実数化
snRate = Math.abs(snAHe1-snBHe1)/snRateN1;
snRate1 = parseFloat(snRate); //実数化
trace(" snRate1="+snRate1);
としましたが、
snRate1=0.00999999999999999
のままです。ただし、snAHe=-0.60 → snAHe1=-0.6 になったので、
途中までは確かに実数化されているとは思うのですが・・・・
近似計算されちゃってるのかもね。 小数部以下を10のN倍して整数部のみにして演算。その後元に戻す。 これならいけると思うよ。
411 :
405 :2005/08/17(水) 07:23:22 ID:7gHaE9d6
412 :
405 :2005/08/17(水) 09:24:53 ID:rUNjR2EK
と、書きましたが add = 0.00000000000000001 として 0.00999999999999999 に加えました。 こっちの方が簡単で、他の場合もうまくいきました。
そんなの許されるなら 何だって良いんじゃないか・・・
ここで答えてくれる人たちって、相当な知識があるんだな。 俺もここで手を差し伸べる側になれるようがんばろう。
416 :
Now_loading...774KB :2005/08/19(金) 10:12:17 ID:Y82eQihw
質問です。 ボタンを作って、そこに動的なラベル (使う所によってラベルを変更できるもの) をつけようと思い、 ボタンの中でレイヤーを追加して、 テキストツールでダイナミックテキストを追加して、 そのインスタンス名を labelButton としました。 (ラベルはとりあえず、 "hogehoge" にしておきました。) そこで、_root レベル(?)にボタンをはりつけました。 (インスタンス名は button1 ) _root.button1 で、ボタンの参照になっているようで、 _root.button1.labelButton = "変更したいラベル"; とすれば、変更できると思ったんですが、 これではできませんでした。 どのようにすれば良いのでしょうか、 また、もっと良い方法があれば教えてください。お願いします。
>>416 _root.button1.labelButton.txt = "変更したいラベル";
418 :
間違った :2005/08/19(金) 10:18:22 ID:q8/3BocS
>>416 _root.button1.labelButton.text
419 :
416 :2005/08/19(金) 10:31:55 ID:Y82eQihw
見てないけどボタンオブジェクト置いてるんじゃないの? いったん、MCでくるまなきゃ。
421 :
416 :2005/08/19(金) 11:49:31 ID:Y82eQihw
ダイナミックテキストまで到達できなかったので、 createTextField で代用することにしました。ありがとうございました。
>>421 >>420 が正解。
ボタンのなかみはASで制御できないよ。
動的に制御したいなら、ムービークリップにしなくちゃ。
他の方法に頼る前に、今の失敗の原因を理解してくれ。
お前らって「動的」って言葉好きだよな
分からなかったら、とりあえず「動的」って付けとけばいいんだよ。
425 :
416 :2005/08/19(金) 14:03:09 ID:Y82eQihw
>>422 >ボタンのなかみはASで制御できないよ。
おお、なるほど・・・そうだったんですね。
ありがとうございました。
426 :
416 :2005/08/19(金) 21:58:33 ID:1PE3lUTa
すいません間違えました。 動的にありがとうございました。
誰が童貞だって!!!ウルセーバカ!!
429 :
Now_loading...774KB :2005/08/20(土) 20:16:40 ID:rw4H9czP
わかる方、教えてください。 外部のxmlファイルに記述してある画像ファイルを、AS obj_xml.load("*****.xml"); で読み込むようにしているのですが、FLASH上で読み込まれている その画像ファイルをクリックすると、FLASHを置いてあるhtmlの中の インフレームのファイルを切り替えられるようにしたいのです。 そういうASってありますか?
430 :
補足説明 :2005/08/20(土) 20:20:27 ID:rw4H9czP
*****.xmlには、1.jpeg、2.jpeg・・・のように複数の画像ファイルが記述して あります。
>>430 インラインフレームの中の画像かなんかを切り替えたいの?
getURLでできそうな予感。
>>431 getURLを、どこにどう入れたらいいのかわからないのです・・・
>>432 やりたいことは
>>431 であってるの?
Flashに画像を読み込むとこは関係あるの?
あなたのやりたいことが良くわかりません。
っ fscommand + JavaScript
getURLの第二引数にインラインフレームのname入れたら良いと思う
436 :
Now_loading...774KB :2005/08/21(日) 13:31:47 ID:q9IufF77
こんにちは。ぜひともご教授お願いいたします。 いくつかあるBGMをランダム再生で、無限に続く(ランダムが)アクションスクリプトを教えてほしいです。(ライブラリにある音楽ファイルをランダムで再生する) 僕はアクションスクリプトのことがぜんぜんわからなくて困っていますorz ていうかわからないなら勉強しろって話なんですけど、すいません。ヒントだけでもいいので、教えてください。すいませんよろしくお願いします。 使っているソフトはflash mxです。osはwindows xpです。
>>436 var my_sound = new Sound();
my_sound.attachSound("sound" + rand_num); //rand_numはランダム数
my_sound.start();
リンケージ識別子にsound1,sound2・・・ってつける
439 :
Now_loading...774KB :2005/08/21(日) 14:11:24 ID:aRaF7sDa
>>437 ありがとうございますですー!!
サイトの紹介どうもです。いつも見てる本とかよりぜんぜんわかりやすくていいサイトですね。ネット上にこんなわかりやすところがあるとは思いませんでした。。。。がんばって勉強してみます。
>>438 ありがとうございますですー!!まさか答えをのっけてくれる人がいるとは思いませんでしたw
ではでは、早速これを使って作りますね!!
まさかこんな質問を受け付けてくれるとは思いませんでした。437さん、438さん、どうもありがとうございました!!
質問させて頂きます。 画質についてなのですが、_root._quality等の ボタンで設定するのではなく、 movieが読み込まれた直後からmidiumに設定する方法はないでしょうか。
1フレーム目に _quality="midium"
>>404 かなり遅れましたがありがとうございます。
そのような方式で導入したら成功しました。助かりました!
443 :
Now_loading...774KB :2005/08/21(日) 19:33:33 ID:V3+Pd442
質問です。 var myMC:MovieClip = _root.createEmptyMovieClip("test", _root.getNextHighestDepth()); var myMCL:MovieClipLoader = new MovieClipLoader(); myMCL.loadClip("○○.jpg", myMC); var loadListener:Object = new Object(); で生成したムービークリップ(さらに外部読み込みで画像を読み込んで)に中心点を真中にすることって出来るんでしょうか?
444>> ど、どうやるんですか先生教えてください。お願いします!
>>443 中心点って言うのは主にトゥイーン等で使うもので、
ASでは関係なかったはず。(ASでは基準点を使う)
MCを入れ子にして親から子の座標を幅と高さの半分ずつずらすのが一般的じゃないかな。
447 :
436 :2005/08/22(月) 00:23:33 ID:IYwcwSzh
何度もすいませんですorz 先ほど質問させていただいた436です。 438さんの通りにやってみたのですが、どうもうまくいきません。そのあと一人で試行錯誤を繰り返したんですけどだめでした。 識別子もリンケージプロパティでsound1・・・というふうにひとつずつつけていきました。アクションスクリプトに書き出しっていうのにもチェックを入れました。 なのになぜかうまくいきませんorz 何度もすみませんがどうかご教授お願いいたします。 以下試したこと。 とりあえず"sound"の部分が間違っているのかと思い"sound1,sound2"という風に入力してみました。 +rand_numのnumの部分に数字を入れるのかと思い試してみました。 my_sound.start();の()の部分に何か入れるのかと思って入れてみました。例(0,1) my_soundというのが間違っているのかと思いファイル名のbgm_0(ファイル名の共通の部分)を入力してみました。 それぞれの組み合わせを確かめました。 結果だめでしたorz どうしたらいいんでしょうか。ご教授お願いいたします。 ちなみに音楽のファイル名はbgm_001・・・。リンケージプロパティの識別子はsound1,sound2・・・です。
どうせrand_numを定義してないんだろ
449 :
Now_loading...774KB :2005/08/22(月) 00:41:19 ID:IYwcwSzh
>>448 !!
多分それですorz rand_numの定義してきますです。
448さんどうもありがとうございました&すみませんでしたorz
>>449 rand_numの_numは 接尾辞 です。
接尾辞をつけるとAS書くときコードヒントがでたり、
他の人が見ても変数の型がわかり便利です。
例)
var rand_num:Number;
rand_num = Math.floor(Math.random()*10); // 0〜9のランダム数取得
my_soundは変数なので間違えません。
452 :
Now_loading...774KB :2005/08/22(月) 20:20:17 ID:a8SKYmEi
教えて下さい。 フラ職人さんの400km-hのホームページのダイアリーの スクロールバーってどーやってやるんですか?ASのscrollでやるんですか?
はいそうです
454 :
Now_loading...774KB :2005/08/22(月) 21:16:51 ID:h1NV6h4d
教えて下さい……(MX、XP使用) 風船のヒモが電柱に触れるとひっかかった状態の 絵になっているフレームへ飛ばしたいのです。 風船(hb)MCのヒモの部分にBhitareaというMCを入れ、 電柱の画像の上にMhitareaというMCを作りました。 でMhitareaに onClipEvent (load) { if(_root.Mhitarea.hitTest(_root.hb.Bhitarea)) { gotoAndStop(5); } } というASを書きました。 5フレーム目にはStop()のASを書いています。 しかし、動作してくれません…… _| ̄|○、;'.・ どこが悪いのでしょうか? よろしくお願いいたします。
enterframeに
AS2.0でのClass記述方法で質問します。 変数として関数を引き渡す記述についてです。 指定の動作をさせるmotion.asというカスタムクラスを作りました。 動作トリガーはfunction trigger()です。 このClassはリンケージプロパティのAS2.0クラス欄を使ってMCに関連づけています。 そして、ルートタイムラインに記述したスクリプトでそのMCをattachMovie()して、複数個のインスタンスを生成、動作させています。 今の状態ですとインスタンスは全部同時に動き出しますが、これを指定時間置きに次々に動き出すようにするために、時限装置Classを作成、適用しました。 ●時限装置Class class timingDevice { var $intervalID:Number; //interval識別子 var $clip:MovieClip; //対象MC //コンストラクタ function timingDevice( MC:MovieClip , TIMER:Number ) { $clip = MC; $intervalID = setInterval( this , "timeOut" , TIMER ); }; //時限後の動作 private function timeOut() { clearInterval( $intervalID ); (1) $clip.trigger(); }; } ●ルートタイムラインでの時限装置Class登録記述。 var classObj:timingDevice; //時限装置Class 対象インスタンス[ "classObj" ] = new timingDevice( 対象インスタンス , 待ち時間 );
(続き) 所定の目的はこれで果たしているんですが、timingDeviceに汎用性を持たせたいと考えています。 その際に問題になるのはclass timingDeviceの(1)の部分です。 motion.asとは違うclassをMCに適用し、そのClassの動作トリガーがtrigger()でなかった場合、このclass timingDeviceは使えません。 よって動作トリガーもtimingDeviceのコンストラクタで、外部変数として取り込むようにしたいのですが、その場合、どういう記述をすればよいのでしょう。 とりあえず以下のような記述に変更してみました。 ●時限装置Classの追加部分 class timingDevice { var $function:String; function timingDevice( MC:MovieClip , FUNCTOIN:String , TIMER:Number ) { …… $function = FUNCTION; 追加部分 …… …… } ●ルートタイムラインの記述変更部分 対象インスタンス[ "classObj" ] = new timingDevice( 対象インスタンス , "trigger" , 待ち時間 ); 肝心のclass timingDeviceのtimeOut()関数で$functionをどのように記述すればよいのか分かりません。 $clip.$function;、$clip[ $function ];、$clip[ $function+"()" ];などはやはりというか当然というかダメでした。
458 :
Now_loading...774KB :2005/08/22(月) 22:03:27 ID:h1NV6h4d
>>455 様ありがとうございます。
load を enterFrameに変更してみましたが
やっぱり、移動しません……orz
風船(hb)をASで風に吹かれてるように動かしているんですが、
それが問題? そんなことはないですよね……
ちなみに以下のASです。(設置したhbではなくライブラリ内のhbに記述)
init();
function init() {
this._alpha = 100;
}
this.onEnterFrame = function() {
this._y -= (1-Math.random());//縦揺れ下降
this._y += (1-Math.random()*1);//縦揺れ上昇
this._x -= 0.8;//流れ(右から左)
if (this._x<-10) {
this._x = 214;
this._y = Math.floor(Math.random()*49)+1;//風船の出現場所
}
};
>>458 そのASは関係ないと思いますが、
ライブラリ内のムービークリップに記述ってなに?
問題のASですがMCにインスタンス名はつけてます?
trace(_root.Mhitarea);
trace(_root.hb.Bhitarea);
で確認してみてください。
460 :
Now_loading...774KB :2005/08/22(月) 22:55:03 ID:Wn//O9+G
MX使用ですが タイムラインで設定したサウンドの音量を ASから設定することは可能ですか?
>>457 $clip[ $function]();
で実行されるんじゃない?
セットボリュームメソッド
>>462-463 あ・・・サウンドオブジェクトの使い方勘違いしてましたorz
有難うございます
465 :
Now_loading...774KB :2005/08/23(火) 00:27:42 ID:0paO3rqz
>>453 押す長さによってスクロールする値を調整するにはどうすればいいんですか?
400km-hのサイトのは押す長さが長いほど多くスクロールして、
逆に押す長さが少ないほど少ししかスクロールしません。
>>465 よく知らんけど、ボタンなり押した時に移動幅をセットして離したときにクリア。
あとは、enterFrameでスクロールさせるようにすれば良いだろ。
467 :
454 :2005/08/23(火) 01:54:18 ID:DmxzC7Ip
>>459 様
ありがとうございます!
traceしたところBhitareaがundifinedとなりました。
これが原因のようです。
なので、自分で理解するために一から衝突判定のMC(Bhitarea)を作り
風船のMC(hb)の中に配置し、
hb内に入れたBhitareaにBhitarea02というインスタンス名を付けました。
その後にtraceで確認してもundifinedとなります。。。
もう一度よーく見てみるとフレームに配置したhbにインスタンス名を
付けていないことに気づき、そこにhb02と名前を付けるとtraceでBhitarea02を確認できました。
電柱側の衝突判定MCにもMhitarea02とインスタンス名を付け、
traceすると表示され、これで完璧!とMhitarea02に以下のASを書きました。
onClipEvent (enterFrame) {
if(_root.Mhitarea02.hitTest(_root.hb2.Bhitarea02)) {
gotoAndStop(5);
}
}
しかしフレーム5に飛ばないorz
くぅぅ どこが間違っていますか?
if(_root.Mhitarea02.hitTest(_root.hb02.Bhitarea02)) { ↑
469 :
Now_loading...774KB :2005/08/23(火) 06:02:17 ID:qUyjlXA/
2次元配列への値の代入(ソフトはFlashMX2004ですう) フレームアクションで dataIdx1 = new Array(); として、ボタン内に dataIdx1[data_gyou][data_retu] = dataP1; と定義したとき、例えば[3][3]でdataP1を100とするならば trace("dataP1="+dataP1); ←(ボタン内で) trace("dataIdx1="+dataIdx1[data_gyou][data_retu]); ←(ボタン内で) は、(100,100)になるはずですが、これだと(100,undefined) と表示されます。 原因は何でしょうか? ちなみに、一次元配列でのこのような代入をしても問題は ありません。
var my_array:Array = new Array(); for(var i=0;i<10;i++){ my_array[i]=new Array(); for(var j=0;j<10;j++){ my_array[i][j]=i+j*100; } } trace(my_array); trace(my_array[1][1]);
471 :
469 :2005/08/23(火) 07:20:04 ID:8gwGIfnC
>>470 Thxです。つまり、厳密に型指定をしろ、ということですか?
あと、trace(my_array); → trace(my_array[1]); では?
472 :
469 :2005/08/23(火) 07:41:19 ID:PFVqoZrf
(スミマセン確かめてから返事をすべきでした)
>>470 var dataIdx1:Array = new Array(); ←varをつけないと文法エラーになります
では、
trace("dataP1="+dataP1);
trace("dataIdx1="+dataIdx1[data_gyou][data_retu]);
まだ(100,undefined) です。
他の方法はありませんか?
ASに2次元配列は存在しない。 配列内に配列を入れるだけだ。
>>469 dataIdx1[なんか1] = new Array();
dataIdx1[なんか2] = new Array();
という作業はどこかでやってるの?
475 :
454 :2005/08/23(火) 12:41:51 ID:DmxzC7Ip
>>468 様
ご指摘ありがとうございます。
眠い状態で書いたので、文章ミスでした。
実際はインスタンス名をhb2としています。
traceで確認できたので……でも、反応しない……orz
476 :
469 :2005/08/23(火) 14:47:17 ID:0qL/++If
>>473 ASに2次元配列は存在しない。
397 381&393 sage 2005/08/15(月) 10:53:09 ID:ixZSp84l
今、気付いたのですが、ASは2次元配列が不可なのですか?
398 Now_loading...774KB sage 2005/08/15(月) 12:10:48 ID:3oxzmDGx
>>397 可能
ウソを教えられた。。。。
>>474 やっぱ2段に分けないとダメなのですか?
なんですぐ嘘とか教えてもらっていうかなあ・・・。 とりあえず何も言わずに下のコードを実行してからどうぞ。 dataIdx1 = new Array(); dataIdx1[3] = new Array(); dataP1=100; dataIdx1[3][3] = dataP1; trace("dataP1="+dataP1); trace("dataIdx1="+dataIdx1[3][3]);
後に言った人は全て真実で先に言った人は常に嘘になるのか
479 :
470 :2005/08/23(火) 15:03:23 ID:7UZEirPN
ソース見て解らなかった? ASでの配列の実装なんだけどな。 他の言語とか学んだことありますか?
>>476 そういうクラスがあるわけじゃないが、配列に配列を入れれば多次元配列を実現することはできるってことだろ。
ウソとか軽々しく言うなよ。
>>479 AS2での実装サンプルとしては適切だと思ったけど。
そもそも質問者が2.0で書いてるようには見えないが。
それにしてもあそこまでソース書いてれば大丈夫だと思うんだけどね。
482 :
469 :2005/08/23(火) 15:49:01 ID:/DwWhDD4
483 :
470 :2005/08/23(火) 15:56:12 ID:7UZEirPN
>>482 ソースが解らなかったら、そういってくれ。
そうすればみんなも解説するレベルがわかるから。
470さんの方法で再チェックしたところ、配列の変数に間違い があり、これを正して成功しました。(お騒がせしました) ASの2次元配列って、配列の入れ子なんですね。
やっぱりAS1.0の本か何かを見ながらAS2.0モードでスクリプト書いてる気がする。
ヽ(・ω・)/ ズコー \(.\ ノ
488 :
Now_loading...774KB :2005/08/23(火) 18:59:49 ID:sEJUMgq2
なんかあれだ はたからみてると、理解してないのをひた隠しにしてるようにしかみえなくてワラタ そもそも最小構成でテストとかしてないっぽいし
490 :
456-7 :2005/08/23(火) 20:10:01 ID:c/4u3GIT
>>461 さんありがとうございました。動きました。
MovieClip[ String ]();という記述方法があるとは。
また一つ知恵がつきました。ありがとうございました。
最近Flashを触り始めたんですが インスタンスのシンボルの入れ替えをActionScriptでランダムに 出来るようにしたいのですが、そういうことは不可能なんでしょうか
>>491 できる。
ヘルプのMovieClip.attachMovieをよく見るよろし。
493 :
Now_loading...774KB :2005/08/24(水) 01:48:11 ID:DJr1U00P
>>492 ありがとうございます。
FlashLiteで使用するので出来るか分かりませんが
一応探して試してみます
すみません質問です。 ムービークリックのプロパティで 深度を調べることってできないんでしょうか? _depthみたいなのがあったような気がしたんですけど・・・
メソッドだな。getDepth
>>495 こんな時間に即レスありがとうございます。
そうか、getか。・・・ずっと悩んでましたw
497 :
Now_loading...774KB :2005/08/24(水) 15:41:03 ID:BKc20Lrn
使用ソフト:FlashMX MCの何フレーム目を表示しているかを取得して 変数に入れたいのですがどうしたらよいでしょうか。 すべてのフレームに変数++ではちょっときついですし、 prevFrameで戻ると数値があわなくなってしまいます。 いい方法を教えて下さい。
currentframe
499 :
Now_loading...774KB :2005/08/24(水) 15:59:25 ID:BKc20Lrn
>>498 素早いレス感謝です。
ありがとうございました。
例えばビリヤードの玉のような、同じような物同士の衝突判定は、 やっぱインスタンス総当たりしか方法はないんですかね。 10個くらいならともかく100個、200個と増えてくると パフォーマンスにも響いてきそうなんですが。
501 :
Now_loading...774KB :2005/08/24(水) 22:20:40 ID:yPlgZ5eG
http://www.javac.jp/flash/flashlab/graph/ ↑このサイトで勉強させてもらってます。
しかしこのサイト、どうもイベントリスナの概念が混乱します。
上のサイトでは、以下のようなコードが頻出します。
listener = new Object();
EventDispatcher.initialize(listener);
listener.hoge = function (){
trace("hoge");
};
listener.addEventListener("hoge", this);
ここで listener と宣言されているオブジェクトはリスナではなく
ObservableというかSubjectというか、状態が変化する側であり
イベントリスナにあたるのは上の例では this ではないでしょうか?
>>501 なんかぐちゃぐちゃになってるけど
thisはリスナーオブジェクト、listenerはEventDispatcherクラスだから
リスナーそのものではなく、Dispatchするためのもの。
だからそういう意味ではその通りだけど、わかりやすいようにlistnerとしてるんでしょ。
多いのはloってすることが多いと思うけど。
>>502 変数名を listener とすると分かりやすいですかね?
Teacher クラスのインスタンスを student にするくらい分かりづらいと思いました。
2004MX使っています。 メソッドを変数付きで参照することは可能ですか? 例えば method123(Object); で参照可能なメソッドを method+"変数(=123)"(Object);のように変数を組み合わせて参照したいんです。 a=123; method+a(Object); でやってみましたがダメでした・・・
505 :
Now_loading...774KB :2005/08/25(木) 00:39:58 ID:5XWIcNGs
↓よくわからんけど、こういうこと? function method123(o) { trace(o); } a = 123; param = "hoge"; this["method"+a].call(this, param); //出力:hoge
506 :
505 :2005/08/25(木) 00:41:25 ID:5XWIcNGs
↓これでもいい this["method"+a](param);
>>505 出来ました!
説明が分かりにくかったにもかかわらずありがとうございました。
>>503 今朝になって改めて
>>501 のソース、とんでもないなと思って
そのサイト見に行ったんだけど、勘違いしてない?
俺もぼーっと回答しちゃったけど。
>listener.addEventListener("hoge", this);
この行が勘違いでしょ。
targetMc.addEventListener("hoge",this);
みたいなサンプルになってる。
で、このサンプルで誤解したのはおそらく、
targetMC.onPressでlistnerを設定するようにしているからでしょ。
FLASHMXを使っていて質問です。 this.onMouseDown = this.aaa; function aaa(){ trace("hoge"); } のように、フレーム内にマウスのクリックに対応する 関数を作った場合には反応するんですが this.onKeyDown = this.aaa; function aaa(){ trace("hoge"); } のように、キーに反応するように変更した場合 起動しなくなるんですが、どこが間違っているんでしょうか?
>>509 MX2004のヘルプから引用
onKeyDown イベントハンドラを実行するには、ムービークリップに
フォーカスがあることが必要です。 次の ActionScript を追加して入力
フォーカスを設定します。
this.tabEnabled = true;
this.focusEnabled = true;
Selection.setFocus(this);
これやれば動く。
ただ、_rootではうまくいかないな。詳しい人フォロー頼む。
どういうことやりたいのかわからんが、onKeyDownを使うのはあんまり
向いてないんじゃないか?
ヘルプの「Key.onKeyDown」の項目にそのまんまコピペして使える例文が出てるよ。
512 :
509 :2005/08/25(木) 18:51:36 ID:E2mPw4pY
>>510 やろうとしていたのは、キー入力に反応するタイピングゲームのようなものです。
普段は各ムービークリップ内などに、スクリプトを書いていたんですが
バラバラになって見難いと思い、今回フレーム上で全部の動作を
操作しようかなとチャレンジしてました。
>>511 ありがとうございます。
そのページを参考に
this.onKeyDown = this.aaa;
Key.addListener(this);
function aaa(){
trace("agege");
}
としたら、反応しました。
Key.addListener(this);
が、カギみたいですがよく理解できてません・・・・
>>512 Key.addListener()以外にも、○○.addListener()があるから
いくつか見れば、分かるかもよ。
クラスで検索して、Key クラス、とか○○ クラス、ってのが出てくるから、
その中を見る。するとその中に他の○○.addListener()があって、
簡単な説明がのってるよ。
糞サイトは潰しとけ
糞は黙っとけ
>>452 にも似たような奴がいるけど、
>>501 なんて「thisじゃないですか?」なんて自分で最初から答えが
分かっているのに質問してるワザとらしさ。
URL貼って宣伝するためだけのダミーの書き込み。
しかも、そのあとは、一生懸命に自己レスですか?
バレバレなんだから、そんな恥ずかしいことは止めた方が良いですよ。
やたらレスにサイト名を入れるとか、ムダにURLを貼るとかネ。
糞サイトの管理者さん。
変数名が分かりづらいからおかしいとか
519 :
Now_loading...774KB :2005/08/26(金) 03:54:34 ID:vNSGmtBL
ソフトはFlashMX2004です ダブルクオーテーション「 " 」を文字列として扱う場合にはどう書けば いいでしょうか? 例えば、txt.charAt(""")と書くと、その後のASの文字が 全部青色になります。
例えば、例えのような、そんな場面あるんですか?
521 :
Now_loading...774KB :2005/08/26(金) 04:53:56 ID:TlsfCNa7
メソッドのオーバーライドについて(FlashMX2004) メソッドをオーバーライドすることにより、連続で異なる変数(パラメーター) での結果を得ようとしています。下は、pのidが0〜3まで変化することにより kazu 0,kazu 1,・・・・ を出力しようとしたものですが、全てundefindになり ます。 on (press) { //ボタンアクション p0.kazu = "kazu 0"; p1.kazu = "kazu 1"; p2.kazu = "kazu 2"; p3.kazu = "kazu 3"; function kazuSelect() { } for (id=0; id<4; id++) { //idによる繰り返し this["p"+id] = new kazuSelect(); kazuSelect.prototype.kazu = this["p"+id].kazu; trace(kazuSelect.prototype.kazu); } trace("------"); //ただの区切りです。 } どう改善すべきでしょうか?
522 :
519 :2005/08/26(金) 05:39:18 ID:aIXrCzSa
(スミマセン。メソッドを間違えたので再質問します)
ダブルクオーテーション「 " 」を文字列として扱う場合にはどう書けば
いいでしょうか? 例えば、txt.indexOf(""") と書くと、その後のASの
文字が 全部青色になります。
※charAt() じゃなく、indexOf()でした
>>520 元の質問(519)のような例は無いですよね。
trace("\""); trace('"');
>>522 indexOf("\"");
で行けると思ったが無理だったので、
indexOf('"');
か
indexOf(unescape("%22"));
526 :
519 :2005/08/26(金) 07:49:07 ID:z9C/w7Be
>>523 , 525
ありがとうございます。
投稿後、文字コードを使う方法を思いつき、FlashPlayer6以上の使用
を前提に、馬場ぎんがさんの本で「"」のUnicodeを調べたところ「0022」
でした。
ところが、0022でエラーだったのでcharCodeAt()で調べると 34 でした。
indexOf('"'); か indexOf(unescape("%22")); を使いたいと思いますが、
(後学のため)charCodeAt()で34のものが何故「%22」になるのでしょうか?
>>526 文字コードでは34にしましょう。
URLエンコードすると、%22にしましょう。
って誰かが決めたからそうなってる。
全然別ものだからあまり不思議ではないんじゃない?
528 :
521 :2005/08/26(金) 08:31:32 ID:+aBWp9WX
>>524 これは、大まかには
class kazuClass{
function kazuSelect() {
trace(kazuSelect.prototype.kazu);
}
}
といったクラスを作って、for文内で関数kazuSelect()を
呼び出すという流れでいいでしょうか?
>>526 indexOf(""")
↑ごめん、これでできる。「\」円記号だとだめだったけど、
「」バックスラッシュで。キーボードででないから、文字パレットで
入れなきゃダメみたい。
0022は16進数で、10進数に直すと34。
531 :
Now_loading...774KB :2005/08/26(金) 13:06:02 ID:Au+t1VFp
こんどはせっせとID変えて
>>517 のログ流しか。
1人で何やってるんでしょね。このヴぁかは。
MC(子)のなかにあるボタンを押すと親階層にある別のMC(子)のなかのラベルに飛ぶという風にしたいのですが。 actionscriptの記述がいまいちわかりません。 どうか教えてやってください。
ターゲットパスを挿入ボタンでパス確認してgotoAndStop(ラベル名)でいいんじゃね?
534 :
スルスル :2005/08/26(金) 14:03:58 ID:goNk1Vp1
この2ちゃんねるの入り口のボタンを押すとスルスル横線が 出るあのやり方を、どなたか教えていただけませんか?
何故2chのtopでbombの宣伝をするのだろう
537 :
532 :2005/08/26(金) 15:32:40 ID:mPq9E677
>>533 それはそうなんですがroot上にはさらにラベルがあって
飛びたい
MCは同じラベル内にはないのでまずはroot上でラベル移動した上で
さらにそこに置いてあるMCの中のラベルに飛ぶ…
という風にしたいんです
すいませんやり方がちょっとわかりません
じゃあワンテンポずらして移動させればいいんじゃね? _root.gotoAndStop(_rootで移動したいラベル名) var m = _root.createEmptyMovieClip("agentMC",0721) m.onEnterFrame=function(){_root.フレーム移動したいMC.gotoAndStop(MC内のラベル名);removeMovieClip(this);} それかどっかにフラグ用の変数作って、移動先のMCのonLoadで判定して移動とか。 あとはいろいろ試してみて。
539 :
Now_loading...774KB :2005/08/27(土) 20:35:50 ID:vFC4JQ6k
文字列の置換(特定の文字列の消去) FlashMX2004使用 おおもとのテキストから txt_sub = txt1.substring(p1, p2); で抜き出したtxt_subが下のようになったとき Alpha -- -18.61934 -18.61775 -9.90678 -1.03157 -1.00392 Alpha -- -0.43660 -0.42485 -0.42485 -0.40002 -0.27514 Alpha -- -0.27514 Beta -- 0.02065 0.02065 0.08522 0.49889 0.61597 Beta -- 0.61597 0.80850 0.98583 1.31915 1.31915 この中から、「Alpha --」を1文字のスペースに変えるため、 フレームアクションで rep=new Array(); として rep = txt_sub.split("Alpha --"); txt_sub = rep.join(" "); trace("Del / txt1_sub= "+txt_sub); と書きましたが、出力は -0.27514 Beta -- 0.02065 0.02065 0.08522 0.49889 0.61597 Beta -- 0.61597 0.80850 0.98583 1.31915 1.31915 1文字のスペースに変わらず、「Alpha --」で囲まれた部分が 消えてしまいました。 どうすればいいでしょうか?
540 :
539 :2005/08/27(土) 20:38:16 ID:vFC4JQ6k
スミマセン。 上はボタンアクションで、正しくは on(press){ rep = txt_sub.split("Alpha --"); txt_sub = rep.join(" "); trace("Del / txt1_sub= "+txt_sub); } です。
>>540 × rep = txt_sub.split("Alpha --");
〇 rep = txt_sub.split(" --");
542 :
539 :2005/08/28(日) 09:58:42 ID:Kz+0nmu3
>>541 ありがとうございます。しかし、この方法ではうまくいかず、
別の同様のボタンアクションで最初の539を書いたところ、
うまくいきました。
原因は分かりませんが、どうやらその前の処理に問題
があるようです。
こんにちは。 手持ちの資料では進めなくなってしまったので質問させていただきます。 this.onMouseMove = function (){ mouseX =Math.round (_root._xmouse); ○○○._x = mouseX; }; とアクションフレームに記述し、 マウスに反応して、「○○○」というMCが左右にのみスライドするように作りました。 左右にスライドするまでは問題ないのですが、スライドする幅を指定するにはどうしたらいいのでしょうか? このままだと、画面の端から端まで着いて来てしまうので、困っています。 ・マウスの座標を受け取ってもA地点までしか進まない と言うものになると思うのですが、ASの知識が乏しくうまく行きません。 どうか、ご助力願います。
>>543 this.onMouseMove = function (){
mouseX = Math.round (_root._xmouse);
if(mouseX<0) mouseX = 0;
else if(mouseX>100) mouseX = 100;
○○○._x = mouseX;
};
これで0から100までに制限できる
545 :
543 :2005/08/28(日) 16:09:22 ID:PEyR6kxV
>>544 こんなに早く回答をもらえると思っていませんでした。
ありがとうございます。
早速、実践して見ます。
546 :
Now_loading...774KB :2005/08/28(日) 21:38:10 ID:yP7gZOPW
キー操作によりMCを動かすASの質問です(FlashMX2004) 名前がballのMCを↓↑キーで動かし、「*」キーと同時に押せば 3倍の速さで動かそうとしていますが、速くなりません。 (下は上方向のAS) onClipEvent (keyDown) { OSI = ""; //メッセージの変数 if (Key.isDown(Key.UP)) { OSI = "UP"; _root.ball._y -= 2; } else if (Key.isDown(Key.UP) && Key.getCode() == 106) { //「*」は106 OSI = "UP*3"; _root.ball._y -= 6; } _root.msg = OSI; } どこを変えればいいでしょうか?
547 :
546 :2005/08/28(日) 21:55:45 ID:2EXqN+ru
上は、 else if (Key.isDown(Key.UP) == true && Key.getCode(106) == true) { としてもダメでした。
Key.isDown(Key.UP)のifでelseの場合に Key.isDown(Key.UP) && ・・・ が成立するワケない辺り
>>546 どうしてgetCode()使うの?
onClipEvent (keyDown) {
OSI = "";
if (Key.isDown(Key.UP)) {
if (Key.isDown(106)) {
OSI = "UP*3";
_root.ball._y -= 6;
} else {
OSI = "UP";
_root.ball._y -= 2;
}
}
_root.msg = OSI;
}
550 :
546 :2005/08/28(日) 23:44:33 ID:Vbpa3n+g
>>543 直接は関係無いが、
myMovieClip.startDrag([lock, [left, top, right, bottom]])
というメソッドもチェックしておくと後学の役にたつかもしれん
552 :
Now_loading...774KB :2005/08/29(月) 03:31:02 ID:KuMXB7O3
MCによるTextFieldのアクティブ化(FlashMX2004を使用) TextField(インスタンス:txt1_ins,変数:txt1)と、MC(インスタンス名:mark) があったときに、hitTest()でMCがTextFieldに当たったとき、TextFieldが アクティブ化され、ここへの入力が可能になるようにするにはどのような方法 が考えられるでしょうか? つまり、markをマウスのポインタ代わりに用いて、本来のポインタは別に存在し、 この一連の動きには全く関与しないようにしています。 私の方では、addListenerを使ったアクティブ化を試みましたが反応がありませ んでした。(下はそのAS。フレームアクションに記述。) txtL = new Object(); //リスナーオブジェクトの定義 if (mark.hitTest(txt1_ins) == true) { trace("Hit"); } txt1_ins.addListener(txtL); if (mark.hitTest(txt1_ins) == false) { trace("no Hit"); txt1_ins.removeListener(txtL); delete txtL; } }; アドバイスを願います。
>>552 MCとテキストフィールドがhitしたときに処理を行えば良いのでは?
555 :
Now_loading...774KB :2005/08/29(月) 18:51:16 ID:FaKMiOJ0
初歩的な質問ですいません。 シーン&MCの移動で苦戦してます。 MC内から他のシーンへの移動は _root.gotoAndPlay("Scene3"); で出来たのですが、 MC内から他のシーン内のMCの途中にあるラベルへの移動で アウションの指定方法に苦戦してます。 カッコ内にシーンとラベル指定してみたり(エラー出ました)とか 色々試してるのですが、判りません。 色んなサイトを見ましたが、指定方法が想像できません。 どなたか回答宜しくお願いします。
>>555 シーンを分けずに作りましょう。
または、MCでシーンを代用しましょう。
Flashの基本中の基本:「AS使うならシーンを分けるな」
557 :
552 :2005/08/29(月) 22:21:20 ID:0aovYlQ9
>>553 ありがとうございます。setFocuで成功しました。
558 :
Now_loading...774KB :2005/08/30(火) 00:51:11 ID:Zbi1EIiV
class hogeClass { var name:String; function hogeClass(){ this.name = "AAAA"; } } クラスを複数格納する配列ってArray()でようのですか
楽しい○○系のフラッシュでよく使われてる、文を読み上げてくれるソフトがほしいです…
すいません誤爆_| ̄|○
561 :
505 :2005/08/30(火) 02:51:33 ID:hlKylvVl
>>558 >クラスを複数格納する配列ってArray()でようのですか
クラスを複数格納する?
そんなことできるの?
変数とかインスタンスじゃなくて?
質問の意味はよくわかりませんが、
答えは多分new Array()で合ってるような気がします。
ムービークリップが1フレームごとに1.05倍づつ等加速運動する関数kasokumoveを作りたいのですが、動かしたいムービークリップに onClipEvent(load){ function kasokumove(){ dx = 1; dx *= 1.05; _x += dx; }} onClipEvent(enterFrame) kasokumove(); と記述しても毎フレームdxが1になる様で 速さ1.05の等速運動しかしません。 onClipEvent(load){ dx=1; function kasokumove(dx){ dx *= 1.05; _x += dx; }} onClipEvent(enterFrame)kasokumove(dx); 等と変えてみましたが無意味でした。何か良い方法は無いでしょうか? なお使用ソフトはMXです。
onClipEvent(load){ dx = 1; function kasokumove(){ dx *= 1.05; _x += dx; } } onClipEvent(enterFrame){ kasokumove(); }
564 :
558 :2005/08/30(火) 08:20:01 ID:Zbi1EIiV
すいません、クラスではなくインスタンスです。 class hogeClass { var name:String; function hogeClass(){ this.name = "AAAA"; } } var myclass:hogeClass = new hogeClass(); インスタンスの参照を変数にいれる場合は上記のように型を指定して入れるじゃないですか。 (AS2.0だと) 上記のクラスのインスタンスを配列に入れる場合は下記でよいのですか? var myclassArrey:Array = new Array(); myclassArrey[0] = new hogeClass(); myclassArrey[1] = new hogeClass(); 質問 myclassArrey[0] = new hogeClass(); この時点でArrey型にhogeClassのインスタンスの参照を代入してるけど・・ var myclass:hogeClass = new hogeClass(); 変数の時のように同じ型に代入しなくてもよろしいのでしょうか?
>>564 何で型指定しないと変数に入れられないの?
myclass=new hogeClass();
はエラーになるのかな。
566 :
555 :2005/08/30(火) 11:47:38 ID:ZWJonUSB
>556 MCはシーン上にないと使えないとどっかで聞いたので、 移動が必要な分シーンも必要なのかと思ったのですが…。 シーンが1つだと重ねて配置する訳にもいかないので。 シーン上にMCがなくても移動できますか? _root.gotoAndPlay("Scene3_icyou"); でラベル指定しても移動してくれません。
>>566 シーンを使わなければ全てシーン1の上に乗るのだが。。。
>>566 シーンは1つで、レイヤーを使えば問題ないのでは?
ちなみに、gotoAndPlay()はルートタイムラインでのみ使用可能。
MC.gotoAndPlay()とは違うよ。
ヘルプのActionScripリファレンスガイドを読んで見ればいいよ。
>>566 >MCはシーン上にないと使えないとどっかで聞いたので、
MCはライブラリ内に作っておくだけで
はなくそのMCを配置しろってことでしょ。
570 :
555 :2005/08/30(火) 13:09:25 ID:ZWJonUSB
1つのシーンにレイヤーを分けて、空白キーフレームで配置場所も分けて 全部のMCを配置しましたが、始めのボタン移動すらいかなくなりました。 on (release) { _parent.GR.gotoAndPlay("GR_01"); } (GRはインスタンス名、GR_01はMC内のラベル名) 他所のサイトや掲示板を見ても、移動はこれか_parentが_rootに なったりとか位しかなかったのですが、全然違いますか?
ソースが書かれているMCの親階層にある、GRというインスタンス名を持つ MCをGR_01というラベルから開始する。 これで合ってますか?
572 :
555 :2005/08/30(火) 13:35:10 ID:ZWJonUSB
シーン上にあるGRというインスタンス名のMCのGR_01というラベルへの移動です。 こういったラベル移動を5回繰り返したいのです。
573 :
555 :2005/08/30(火) 13:38:15 ID:ZWJonUSB
あ、ラベル内からの移動が多いのですが、 シーン上からとはまた表示が違ってきますか?
>>572 メインのタイムラインの移動と混同してますね。
メインのタイムラインなら_rootとか_parentで指定すればいいと思うよ。
_parent.gotoAndPlay("GR_01");
とか。
575 :
555 :2005/08/30(火) 14:03:15 ID:ZWJonUSB
on (release) { _parent.gotoAndPlay("GR_01"); } でやってみましたが、飛びませんでした。 MCの配置か何かが間違ってるのでしょうか?
どうしてわからないのかな flaうpしてよ
577 :
555 :2005/08/30(火) 16:51:23 ID:ZWJonUSB
on (release) { gotoAndPlay("GR_01"); } でシーンからMCに飛べました。 でもMC内から他のMCに飛べないでいます。 混乱します。
>>577 っていうかシーン分けして製作とか一番やってはいけない最悪パターンの典型。
個々の問題をここで解決してもまた繰り返すだけ。最初から作り直せ。
別にシーン分けること自体は罪ではないが・・・
581 :
555 :2005/08/30(火) 17:47:13 ID:ZWJonUSB
両方とも何度も見たことあるサイトです…。 シーンを沢山使うよりも、MCだけの移動がいいと上に書いてあったので、 シーンを全部消してシーン1つに他MC数個という形に変えたのですが。 なんだか余計に混乱してハマってしまったようです。
まず根本的に、Flashの基本的な構造を理解するのが先っぽいなー そのへんをパスを交えつつ理解してないで色々やろうとすると混乱する一方かと _root.MC.myFunction(); this._parent.MC.myFunction(); とか意味わかる?
>>581 まず、メインタイムライン以外からシーンへの移動はできないよ。
MCだけの移動がいいというより、MCが絡んでくると
シーンへの移動はそもそもできないことが多い。
だから、シーンへ移動するという考えは捨てる。
上記のサイトを何度も見て、かつ読んでいれば、わかっていると思うのだが
系統立てて理解できてるかい?
MCから移動できるのはラベルだけ。
だから、移動したいフレームにラベルをつける。
そのラベルをシーンのように考える。
移動したい先が配置したMCのなかのラベルなら、MCまでのターゲットパスを
正しく書いて、gotoAndPlay("ラベル")をすればいいだけだ。
ターゲットパスがわからなかったら、あらためて上記のサイトや本で勉強する。
584 :
Now_loading...774KB :2005/08/30(火) 19:39:38 ID:Y/i4mq7Y
すいません。初歩的なミスだと思うのですが、始めたばかりなのでそのミスに気づけないようですorz hoge.swf?name=taroならフレームラベルtaro hoge.swf?name=jiroならフレームラベルjiro hoge.swf?name=taroとjiro以外はフレームラベルnotに飛ばしたいのですが、よくわかりませんorz 一応、自分が試したのは 1フレーム目に if (name == undefined) { gotoAndPlay("not"); } else if (name == taro) { gotoAndPlay("taro"); } else if (name == jiro) { gotoAndPlay("jiro"); } else { gotoAndPlay("not"); } です。 誰か教えてくださいorz
とりあえず name == "taro" な。
586 :
Now_loading...774KB :2005/08/30(火) 19:49:48 ID:Y/i4mq7Y
>>585 おお、ちゃんと作動しました!
ありがとうございました。
本当に初歩的なミスだ..
勉強してきますorz
質問させていただきます。 ボタンがroolOverした時にボタンの座標を、MCに与え。 そのMCがボタンの位置まで移動すると言うアクションに詰まっています。 現在、 on (rollOver) { _root.○○._x =50; } で、ボタンの座標をMC「○○」に与えて一瞬で移動させていますが、 ゆっくりと「移動している事」を見せるためにはどうしたらいいでしょうか? (今回はXのみの移動のためY方向は省いてあり、ボタンが子に当たります) トゥーインでは、複数(多い場合)のボタン間の移動が指定できないため ActionScriptで考えています。 マウス自身に合わせてMCを動かすことはできますが、 ボタンをポイントした時に、表現が曖昧ですが「きっちり重ねる」事ができません。 併用した場合、ボタンが隣同士に並んでいると一瞬の移動のみが発動してしまいます。 説明が長すぎましたが、一言だと 「マウスについて動くMCを、ボタン上にきっちり止める」になります。 わかり難いかもしれませんが、よろしくお願いします。
589 :
Now_loading...774KB :2005/08/31(水) 13:30:36 ID:EVwKNt3u
すみません、質問いたします。 サムネイル画像を横一列に並べたmovieclipを ワープコマンダー風に移動(スクロール)させたいんです。 左右ボタンを押すと一定距離movieclipを移動(イージングあり) 以下のスクリプトだと、移動距離を割り当てた 複数ボタンになるのですが、 私は、左右の一対のボタン編成でやりたいのです。 検索でも過去ログでもうまく引っかからないので… お願い致します。 ----------movieclip---- onClipEvent (enterFrame) { this._x = (this._x+a)/2; } --------------- -----botton----- on (press) { _root.all.a = -630; //←各ボタンに移動数値を入れる } ---------------- (これだと、複数ボタン必要になります。)
>>587 on(rollOver){
_root.hoge._x+=(this._x-_root.hoge._x)/10;//最後の数字が大きいほど、ゆるやかに移動。
}
>>588 >>590 素早い解答、ありがとうございます。
しかし、自分の理解力、応用力が足りないのか、両方とも理想とした動きをしてくれませんでした。
>>590 の方では「これなら」と思う感触はあるのですが、単独ではピクピクっと一定方向にしか動かず。
自分で手を加えると、ボタン上で止まってくれないので、
もう少し、考えて見ます。
現在ウェブ制作する上でASを可能な限りフレームにまとめる勉強しています。 juwelry.onEnterFrame = function () { _x += ((_root.juwelry - _x) / 5); } ring.onRollOver = function () { juwelry = 200; } とし、BT-ringにマウスをのせるとMC-juwelyが移動するという仕組みを実現したいのですが動作しません。 MC-juwelryに onClipEvent (enterFrame) { _x += ((_root.juwelry - _x) / 5); } と書けば動きはするのですが、フレームでの完全制御は不可能でしょうか? 同様にフレームアクションからMCの_alpha操作もできません。
それ以前にjuwelryと言う名前が被ってる。 どっちもオブジェクトなんだからMCのjuwelyというものを 操作するための変数名を同じにしちゃダメ。
>>592 識別子が紛らわしいけど、どれがどれなの?
juwelry(jewelry?)ってのは変数?インスタンス?
> 同様にフレームアクションからMCの_alpha操作もできません。
できるよ。
やり方が間違ってるんだろうけど、それを書かないとどう間違ってるのかは
わからん。
説明不足ですいません。 変数ではなくインスタンス名ですね。 ちょいと各所回って模索してきます。
説明不足じゃなくて、理解不足かな。 juwelry = 200; って書いてる時点で、インスタンス名としてだけじゃなくて 変数名としても使ってるでしょと。
(;´Д`)あぁぁぁ、、、おっしゃる通りです。。。 ご丁寧にありがとうございました。
598 :
Now_loading...774KB :2005/08/31(水) 16:51:00 ID:mpj4n08F
MX2004proつかってます。 外部ASファイルにクラスを作成しているのですが ちょっと困っています。 例えばASファイル[TestClass.AS]に[ClassVar="0.01"]というプロパティを持たせて FLAファイルから以下のように記述します。 myClass = new TestClass(); trace(myClass.ClassVar);//結果表示[0.01] しばらくは順調だったのですが、作業を繰り返すうちになぜか突然 最新のASファイルが反映されなくなってしまいました。 具体的には、ASファイルにはClassVar="0.05"として保存しても、どこかに 前回のASファイルで保存した"0.04"が残っているらしく、FLAで実行 したら表示は[0.04]となってしまいます。ASファイルを上書きしたり いろいろ試してみたのですが・・・。この時点で[0.04]という記述の ASファイルはすでに存在しません。TestClass.AS自体を削除したら trace結果にundefinedが帰ってきたので、ファイル自体は見に行ってる ようなのですが・・・。 作業中に、特に設定もいじっていないので、理由も分からず困っています。 どうやったら最新のASファイルを読みにいくか、原因などご存知のお方は レスをよろしくお願いします。
>>598 ASファイルのタイムスタンプが更新されているか確認。
600 :
598 :2005/08/31(水) 17:28:15 ID:mpj4n08F
レスありがとうございます。 調べたところ、 更新 2005年8月31日、17:17:12 となっていました。とりあえず更新はされているようです。
DataGridが死ぬほど遅いので投げ飛ばしていいですか
作り直したらいいと思うよ、自分で
月末で納期前なのか、どうも微妙な レベルの質問が沢山ですな。ハハハ。
>>589 それなら単純に↓これで良いやね。
on (press) {
_root.all.a -= 630; //左にスクロールボタン
}
605 :
Now_loading...774KB :2005/09/01(木) 13:21:54 ID:wKoW0Ekf
ムービークリップを作成して、さらにそこへテキストフィールドを作成したのですが、 そのテキストフィールドへどうやってアクセスすればいいのかわかりません。 以下のスクリプトの最後の3行で色んな方法を試みましたが、いずれも undefined でした・・・ var m_mc:MovieClip = new MovieClip(); var movieId:String = new String("hoge"); var txtId:String = new String(movieId + "_txt"); m_mc = this.createEmptyMovieClip(movieId, this.getNextHighestDepth()); m_mc.createTextField(txtId, 0, 0, 300, 400, 200); m_mc.txtId.text = "fugafuga1"; // ダメ → "m_mc.txtId" is undefined eval(m_mc.txtId).text = "fugafuga2"; // ダメ → "eval(m_mc.txtId)" is undefined eval(movieId).eval(txtId).text = "fugafuga3"; // ダメ → "eval(movieId).eval(txtId)" is undefined
606 :
598 :2005/09/01(木) 13:38:21 ID:GqR02K2n
解決しました^^ クラスファイルもキャッシュしてるんですね。特殊な状況化で 最新クラスファイルを読まない状態になる場合があるそうです。 ASOファイルを探して削除することで解決できました。 公式にキャッシュクリアのExもあるそうなので、問題なさそうです。 ありがとうございました。
607 :
Now_loading...774KB :2005/09/01(木) 13:46:13 ID:A7m7XWey
説明しにくいんだけども、よくある表現で ボタンロールオーバー → ゆっくり色が変わる ロールアウト → ゆっくり色が戻る この"ゆっくり戻る"のはどうやってるんでしょう? デフォのボタン編集ではコマぶった切りでいきなり色が戻るようにしか出来ない・・ 初級レベルの事なのだとは思うけど未だにわからない
ムービークリップでボタン作る
>>607 ボタンはムービークリップに状況を伝えるだけの役割だと思えばいい。
動きは別に作ればいい。
>>605 trace( m_mc[txtId] )は試してみましたか?
>607 色の変化をフレームトゥイーンで作っていいのなら、これが一番簡単じゃない? var lastFrame = btn_mc._totalframes; btn_mc.onRollOver = function() { btn_mc.onEnterFrame = function() { if (this._currentframe == lastFrame) { delete this.onEnterFrame; } else { this.nextFrame(); } }; }; btn_mc.onRollOut = btn_mc.onDragOut=function () { btn_mc.onEnterFrame = function() { if (this._currentframe == 1) { delete this.onEnterFrame; } else { this.prevFrame(); } }; }; btn_mcのMC作って、フレームで色の変化(形の変化、なんでもいいが・・・)のトゥイーン作ってフレーム上にstop()かけといて、 MCと同じタイムラインに上のスクリプトコピペしてみ。試してないけど、多分動くはず。説明がわかりにくいのはご愛嬌。 仕事に戻るっぺ。
612 :
605 :2005/09/01(木) 15:39:01 ID:wKoW0Ekf
>>612 言語によって実装方法が異なるから。ASでの実装はJAVAに準じてるけど
全くそのままではないでしょ。
馬鹿ばっかだな
馬鹿に教えるためのスレ でもFlashの基本をわかってないなら帰れ
馬鹿が質問するのは構わんが、教えてる方が馬鹿なのが問題なんだが。 それがわからない人とじゃ話にならんね。帰るとするよ。
ケンカは(・A・)イクナイ!
煽り返すなら同レベルだと思いますよ
620 :
Now_loading...774KB :2005/09/02(金) 12:04:18 ID:2PPuPrPx
on (press) { MC._alpha -= 1; } 上記ASだと1clickで_alphaが1減るのですが 1clickしただけで_alphaが流れる様に透明になっていく動作を実現するには どうすればいいのでしょうか?ご教授お願い致します。 onClipEvent (enterFrame) {} は使用せず、BTをclickすると指定のMCを徐々に 透明にする動作を実現したいです。
>onClipEvent (enterFrame) {} は使用せず って、何のプライドなの?さっぱりわからん。 いやならsetIntervalでもつかえば?
>>620 ならMCの2フレ以降に_alpha変更させるアニメでもつくって
クリックで2フレに飛ばしたら?
つか、クリックとonClipEvent (enterFrame) {}の併用も不可なのか?
onEnterFrameもダメなのか?
かつASのみで_alpha変更させたいの?
そうしなくちゃいけない理由とか説明したら、解決策もみえるかもよ。
プライドとか理由を説明しろとか、すげえ先生たちだな。
>>623 なんでそういうかが分からないなら発言しなくていいよ。
>>624 そうだね。じゃあ。
onEnterFrameを使用してフレームレートで繰り返し処理を行うのは
常道だけど、それ以外に
>>622 の提示してくれたたsetIntervalを使う方法もある。
onEnterFrameはフレームレートに左右されてしまうという弱点もあるので、
使わないでというやり方を模索するのは別に悪くないと思う。
でどうですか?
>>626 >>625 のようにフレームレートに左右されたくないという理由ならわかる。
その場合ならsetInterval()が解決してくれるし、フレームアニメーションじゃ
意味ないよね。
もし他の問題とコンフリクトしているなら、それを解決することで
onEnterFrameを使ってもよくなるのかもしれないし、それを解決しないと
どんな方法でもうまくいかないって可能性もあるかもしれない。
質問者が誤解をしてる場合もあるし、回答者も誤解してるかもしれない。
何か条件があるならその理由を最初に言っておくほうが、回答するほうも
より適切な回答をしやすいと思うってことを言いたかっただけ。
>>625 張り切ったところスマンが
>>621 書いたの俺だ。
ID変わっててスマンかったな。
で、なんでああ書くかというと少なくとも
>>620 は
enterFrameで処理する方法が分かってるかのような書き方なのに
あえてききます、というスタンスに見える。なのになぜそうしたいのかの
意思表示が何もないから、どこを目指したいのか想像するしかない。
普通、そのレベルのスクリプトが書けるなら、他の方法も思いつきそうなものだし。
まあ
>>627 氏が言ってくれてるとおりです。
要するに回答者に制限を設けておきながら理由が書いてないのはおかしいだろと思ったのさ。
629 :
620 :2005/09/02(金) 15:08:08 ID:cdcD7Rra
出先から戻ってID変わりました。 何だか誤解を生むような書き方で申し訳ない。 うまく説明できないんだけど、BTをクリックしたら指定のMCのアルファが100→0に変化していくアニメーション onClipEvent (enterFrame) {}ってのはMCに書くアクションですよね。「クリックしたら」って条件付けが分からないのです。 onClipEvent (enterFrame) {}だとBTクリックしたしてないに拘わらずアルファが変化していってしまうので。 全くマヌケな内容で申し訳ない。 ちなみにフレームアクションのonEnterFrame、on()アクションあたりは何とか勉強して少し理解した程度で 皆さんが当たり前のように言っているsetInterval()なんてのは初めて聞いたわけであります。
630 :
620 :2005/09/02(金) 15:15:14 ID:cdcD7Rra
@enterFrameは使わず云々と自身が言っていた点ですが、このイベントハンドラで「BTをクリックしたら指定したMCのアルファをアニメーションさせる」という動作は実現できないものと思い込んでのものです。 間近に解決策があるのに拘わらず別の方法を求めているわけでは決して無いので、その点だけ訂正します。
>>629 そういうことならこのスレを読み返したら出てくるはずだけど
クリックした時点でonClipEvent(enterFrame)の定義をしたらいいんだよ。
で、アルファが0なった時点でそのファンクションを削除するようにしたらいい。
まったく同じ例が2週間以内くらいに上がってるはずだから探してごらん。
632 :
620 :2005/09/02(金) 16:04:32 ID:cdcD7Rra
>>クリックした時点でonClipEvent(enterFrame)の定義 そんなことできるんですかFlashは(;´Д`) 全く分からないけどとりあえずログ探してみます(`・ω・´) そんな事できるんですか(;´Д`)便利だなぁ・・・
移動するとかアルファが変わるとかならmx.effects.Tween使うと簡単でenterframe使うより綺麗かも
634 :
633 :2005/09/02(金) 16:22:45 ID:XkPadYvC
ヘルプには説明無いのでググってね
mx.effects.Tweenはいいよね。MXに一部を移植して使ってるけど。
>>620 on(press){//ボタンが押されたら
MC.onEnterFrame=function(){//onClipEvent(enterFrame)を設定
this._alpha--;//alphaを減らす
if(this._alpha==0){//もしalphaがゼロなら
delete this.onEnterFrame;//onClipEvent(enterFrame)を削除
}
}
638 :
Now_loading...774KB :2005/09/02(金) 17:21:47 ID:F08hpeug
640 :
Now_loading...774KB :2005/09/02(金) 17:29:04 ID:F08hpeug
>639 ActionScriptの話。。。
ActionScriptして動かす
642 :
Now_loading...774KB :2005/09/02(金) 20:18:27 ID:giTRuM99
久々覗いたら荒れ気味?
>>638 この動きなら
function onEnterFrame(){_y += (目的の座標-_y) / 10}
で出来んじゃない?
目的座標になったらonEnterFrameを解除とか、
目的座標の字毒取得とかはヘルプで
delete
if else
MovieClip クラス
とか調べて頑張れ。
このスレはちょくちょく荒れるよな まぁ教えて君スレの宿命でもある訳だからしゃあないけどな
644 :
Now_loading...774KB :2005/09/02(金) 22:50:05 ID:F08hpeug
>638 何とか近いものができたかな。。。 イージングが効かないけど、まあ、良しとするかな。。。 FLASH ActionScriptバイブル ほぼ10行道場などなどでがんばった。コピベ専門。 しかし、こういったScript系(cgiやJAVAやActionScriptとか)思い通りに書ける人ってすごいな〜〜〜。尊敬する。どうやって覚えたんだろ・・・。 ありがと。 その他、詳しく教えてくれる人がいたら、ヨロシク。 教えて君で御免!
645 :
Now_loading...774KB :2005/09/02(金) 23:36:52 ID:bm4ieRF+
ScrollPaneのスクロールバーの幅を変えるには、どうすれば良いですか?
WINXP MX2004 指定した座標をActionScriptで左クリックさせる事はできるのでしょうか? 板違いでしたらすみません、、、ご教示お願い致します。
>>644 Flashって他の言語だけの世界と違って、動きが視覚的にわかりやすかったりして
おもちゃ感覚で楽しめるからプログラムを勉強するのが苦痛にならない気がする、個人的にはね。
だから、まず自分で目標を造っていろいろ弄るのが覚える早道だと思う。
あとは本なり他人が作ったファイルを解析するなりして、テクニックを身につけていけば
結構早く覚えられるよ。
>>647 >>644 ははなから覚える気はさらさら無いと思うよ。
文面から受け取れるのは、
「適当に誉めてうまく使えば色々サンプル出してくれんだろ」
ってとこだろね。
> コピベ専門。
> その他、詳しく教えてくれる人がいたら、ヨロシク。
> 教えて君で御免!
このあたりとかさ。
ちょっと呆れたよ。
XMLを読み込む時に、DTDをチェックして妥当なファイルかどうかチェックする事は出来ますか?
>>649 読み込む前には無理だけど、
読み込んだ後、先頭ノード見て判断するんじゃダメなん?
>>651 いや特に苦手でもないよ。
上の例は余りにも幼稚なおだて方が鼻についたからさ。
質問です。 <?xml version="1.0" encoding="UTF-8"?> <contents> <subcontents> <a>a01</a> <b>a02</b> <c>a03</c> </subcontents> <subcontents> <a>b01</a> <b>b02</b> <c>b03</c> </subcontents> </contents> というようなXMLファイルがあって、 次のようなコードをフレームアクションに書きましたが、 nodeValueで値がとれません。 ちなみにnodeNameだとちゃんと、a,b,cと表示されるのですが… なにか、これが原因だろうというのが分かる方がいれば、 ヒントをいただきたいです。
っ firstChild.nodeValue
656 :
654 :2005/09/03(土) 15:49:56 ID:6LACqjgC
改行が多いと怒られました。 書いたスクリプトは以下のような感じです。 xml = new XML(); xml.load("contents.xml"); xml.onLoad = parse; xml.ignoreWhite = true; function parse():Void { if (this.loaded) { var nodeList:Array = this.firstChild.childNodes; for (var i = 0; i<nodeList.length; i++) { a = this.firstChild.firstChild.firstChild; b = a.nextSibling; c = b.nextSibling; trace(a.nodeValue); trace(b.nodeValue); trace(c.nodeValue); } } }
>>653 > しかし、こういったScript系(cgiやJAVAやActionScriptとか)思い通りに書ける人ってすごいな〜〜〜。尊敬する。どうやって覚えたんだろ・・・。
>
> ありがと。
>
> その他、詳しく教えてくれる人がいたら、ヨロシク。
> 教えて君で御免!
で「コピベ専門。」と。
>>642 に書いてあるのそのままやってみりゃ良いだけだろって思ったから、
この上何を望んでんだと思ったら「ああ、つまり、コピペで使えるコードだけくれよって事ね」
とね。
つか、そんなに盛り上がる話題でもないし、いい加減この話題終わりで良いんじゃないの?
>>656 trace(a.firstChild.nodeValue);
trace(b.firstChild.nodeValue);
trace(c.firstChild.nodeValue);
で値取れない?
>>658 できました!
すばやい解答ありがとうございます。
一瞬、ノードの深さに関して混乱しましたが、
書き込んでる間になんとなく分かってきました。
a = this.firstChild.firstChild.firstChild;
これで、aに<a>a01</a>が入って、
この中の『最初の子ノードである』<a></a>の値をtraceしているわけなんですね。
『』の部分の理解が抜けてました。
ありがとうございます。
ライブラリに登録したイメージの設定を 一括変換する拡張コマンドかなんかを昔どこかで見たと思うんですが、 どなたか知ってますか?
662 :
Now_loading...774KB :2005/09/04(日) 17:46:38 ID:Ds473PPR
ムービークリップのタイムライン制御を ステージ上に置いたボタンで行う事は可能っすか? ステージ上に置いたボタンを押すと MC内で今までフレーム1〜10までループ再生してたのをフレーム11に飛ばして再生 と言うのをやりたいんですが
>>662 on(release){
_root.○○_MC.gotoAndPlay(11);
}
>>661 FlashMX2004のヒストリからコマンド作成
>>662 on (press) {
MC._gotoAndPlay (11);
}
on (press) { MC.gotoAndPlay (11); }
今いるフレームから5マス進める と言うボタンはどう作れば良いのだ
>>669 MovieClip._currentframe
今いるフレームはこれでわかる。
>>669 on(press){
this.gotoAndPlay(this._currentframe+5)
}
>>670 そっから+してけばいいのか
ありがとう
>>671 見逃していたすまねぇ('A`)
記述もしてくれてありがとう
TextAreaコンポーネントに埋め込みフォントを使用する事は出来ますか? ヘルプを見る限り、それらしいAPIが見つからないのだが。
675 :
Now_loading...774KB :2005/09/05(月) 10:26:12 ID:GV5lKJnO
>647 コピペというか解析までは出来るようになったけど、そこから先が難しい。 他のプログラムに比べれば、動的、視覚的、オモチャ感覚、おしゃれ感覚はあるから、覚えたいけど、function、ifとか関数とか,arrayとか、さっぱり・・・。 goto、loadMovie、play、stop、getURL(JavaScript)ばっかりで、あとはMCとかシーンをうまく利用してアイデアとパクリの勝負でお仕事しています。。。。
自分はまだ初心者でFLASH MXを使っていますが、参考書は5のものです(゜Д゜;;;) ActionScriptの基本からやり方が違うnで まったくわからないので、基礎おしえてくださいorz
>>674 空のダイナミックテキストを配置して埋め込んでおけば、
アクセスは出来たと思う。実装できるかは知らんけど。
>>677 レスありがとうございます。
TextFieldとScrollBarを組み合わせた方が、確実そうですね。
>>676 ASの本ぐらい買えよ。教科書無くて授業で質問するのは無理だろ。
680 :
Now_loading...774KB :2005/09/05(月) 15:54:53 ID:mK4uj/g6
こんにちは。ちと質問なんですけどタイムライン上に ムービークリップaaを置いていてそのaaの中に ムービークリップbbを入れ子で配置しています。 aaからbbのtrace(2112)を検出したいんですけど なぜかbbのfunctionが反応しません・・・ 初心者質問で申し訳ないんですけどアドバイスよろしくお願いします。 ちなみにソースは aa: onClipEvent(load){ this.bb.go();} bb: onClipEvent(load){ function go(){ trace(2112); } } です。
定義してすぐは無理ですよ
682 :
680 :2005/09/05(月) 16:21:43 ID:mK4uj/g6
>>681 回答ありがとうございます。
定義してすぐは無理なんですね・・
こういった場合のaaの対処法はどうすればいいですかね?
#initClipに書くとか、フレームをずらすとか
>>682 aaが1フレーム進んでから呼び出すとか
aa:
onClipEvent(load){
onEnterFrame = function(){
this.bb.go();
delete onEnterFrame;
};
}
>>676 やる気があるなら、チュートリアルとヘルプでなんとでもなる
回り道だけどなー
>>680 どうしてもというなら
aa
onClipEvent(load){
this.bb.go(){
trace(2112);
};
this.bb.go();
}
とか
あんまり意味無いきもするが
this.bb.go = function(){ だった
687 :
680 :2005/09/06(火) 00:06:39 ID:mK4uj/g6
MovieClipを継承したクラスで、RollOver等のイベントを消す方法はありますか? 委譲している場合は、delete _mc.onRollOverでいけたのですが、 継承した場合は、delete this.onRollOverとしてもイベントが消えません。
自己レスです。 MovieClip.enabledでいけました。
690 :
Now_loading...774KB :2005/09/06(火) 15:49:04 ID:zZLnKclP
flashでゲームを作ったんですが、そのスコアを仮にtest.cgi に送るにはどうすればいいですか? データの受け渡しはcgi-lib.plを使用しています。
マルチポストはよくないな
は?
ここはコードを記述するとき インデントしないのが常識なんですが?
が? ・・・・どうしたの?
>>696 スレ上ではtabのインデントが使えないから詰めて書いてるだけ
そんくらい解らない?バカじゃないの
>>696 HTMLくらい勉強しろ
行頭に半角スペースまたはタブ文字があると消される
二重に半角スペースまたはタブ文字があると一つとして扱われる
どこかのスレで 「読みにくいからインデントくらいしろよ」 と言われて 「インデントしないのが常識なんですが? (そのくらい常識だよ)」 って言い返した誤爆のようにも見えるから「が」というのが気になった。
プギャー 釣られてるしwwww
obj1 = {a:10,b:5} obj2 = obj1 上のようにobj1を定義し、 その内容を初期値としてそっくりそのままobj2にコピーしたいのですが、 この場合どうすればいいのでしょうか? ちなみに(当たり前だと思いますが…)上のままobj2.aを変更すると、 obj1.aも変化してしまいます。 obj1 = {a:10,b:5} obj2 = obj1 obj2.a = 2 trace(obj1.a+" , "+obj2.a) //トレース結果 //2 , 2 ※本当は 10 , 2 となって欲しい…
>>703 これ、おれも分かんなくて、今やっと分かった。
for..inを使う。for..inって一回も使った事なかったけど、ここで使うのか。
>>703 おれはこんな感じの関数を使って対応している。
・・・なんかもっと簡単にできる方法ありそうだけどね
_global.myCopy = function( data_obj ){
var res_obj = new Object();
for( var m_name in data_obj ){
res_obj[m_name] = data_obj[m_name];
}
return res_obj;
}
obj1 = {a:10,b:5}
obj2 = _global.myCopy( obj1 );
obj2.a = 2;
trace(obj1.a+" , "+obj2.a);
706 :
Now_loading...774KB :2005/09/07(水) 22:49:14 ID:Ccb2bgVD
JavaScript から swf の任意のメソッドを呼び出すのはどうすればいいですか? 以下のようにしてみましたが、期待した動作(ブラウザを閉じるとクリップボードに"unko"という文字列がコピーされる)になりません。 【HTML】 <html><head><title>unko</title></head> <body onbeforeunload="document.fuga.TERMINATED();"><!-- ←ここでActionScriptのメソッド呼んでるつもり --> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="240" id="fuga" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="fuga.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /></object></body></html> 【SWF】(ルートの1フレーム目に以下のActionScriptを記述しています) function TERMINATED() { System.setClipboard("unko"); }; 行儀悪くてすみませんが、HTML は IE 専用ですm(__)m どうすれば期待通り動作するようになるでしょうか?
>>704 >>705 なるほど…for...inで中身のみを写せば大丈夫なんですね。
ありがとうございます!
\ / / __ _/_ \ / \/ | ./ ヽ \ / / | / / \ (___ レ \_ / / \ __ __ ___ _____ _____ ___ ___ ___ | | / / | // | /__ __/ [][] _| |_| |__ _| |_ | |. / / / / / / ̄ ̄|. l / / | _ | |_ レ'~ ̄| | | / / / / / /. / / | |___  ̄| | / / / /| | | | / / / / /  ̄ ̄ / \__| | |  ̄ /_ / | |_ | |. / / / / / / ̄ ̄ ̄ |_| |__| \/ |. / / / / / | /. / | ./ / ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>703 参照を渡してるだけだからそりゃそうなるだろ。
同じ場所を違う呼び方で呼んでるだけだから、そうなるのは当たり前。
710 :
Now_loading...774KB :2005/09/08(木) 11:35:02 ID:QrNZMO0U
FLVをストリーミング配信するには FCSを使うほうが速いんですか? お願いします。
速いっつーかHTMLトンネリングしないならFCS使った方がパフォーマンスはいい
712 :
706 :2005/09/08(木) 12:07:36 ID:VqPmfeAL
すみませんがどなたか良いアイデアないでしょうか? 要は終了時にイベント拾いたいだけなんですけど、 MovieClip.onUnload って、MovieClip.unloadMovie() された時しか呼ばれないんです。 つまりユーザがブラウザを閉じたりする場合は呼ばれないんです。 なのでブラウザが閉じられるイベントをJavaScriptで拾って、Flashに投げられればいいかなと思ったんですが・・・
713 :
710 :2005/09/08(木) 12:50:42 ID:QrNZMO0U
>>711 ありがとうございます。
そのパフォーマンスの差ですが、FCSを導入するコストに見合うほどの差はあるんでしょうか?
>>713 知らんよ。どうやったら、そのコンテンツの価値も分からずにコストを計算できるのか教えて欲しいわ。
ワロタ
FLVのストリーミングの技術仕様を、Javaとか.Netに開放してほしい。
ムービークリップにloadMovieで画像を読み込んだ後、 アルファを段々上げていって徐々に表示していくのを作ったのですが、 その読み込まれたムービークリップを 表示する前にステージの中心に移動させるにはどうすればいいですか? pic._alpha = 0; pic.loadMovie("1.jpg"); this.onEnterFrame = function() { pic._alpha += 5; if(pic._alpha >= 100){ delete this.onEnterFrame; } } ここまではなんとかなったのですが… どなたかお願いします
>>717 空のmcを作成して、以下のスクリプトをコピペ
//ファイルのパス指定
var picPath:String = "1.jpg";
var targetMC:MovieClip = _root.createEmptyMovieClip("targetMC", 1);
var mcl:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadInit = function(mc:MovieClip) {
mc._x = (Stage.width - mc._width) /2;
mc._y = (Stage.height - mc._height) /2;
mc._alpha = 0;
mc.onEnterFrame = function() {
if (mc._alpha >= 100) {
delete mc.onEnterFrame;
} else {
mc._alpha += 5;
}
}
}
mcl.addListener(mclListener);
mcl.loadClip(picPath, targetMC);
>>696 だが、
全角スペースでインデントしたら見やすくなるかもねってことです。
ム板ではそうやってますしね。
んなことより、コピペしてさっさと動く方がいい
calender_mcをクリックすると1月から12月が表示されてその月をクリックするとtraceの内容が返されるということを試しているのですが calender_mcをクリックした段階でtraceの内容が返されてしまいます。どうすればよいのでしょうか? MX2004です。 var obj_array:Array = new Array(); calender_mc.onRelease = act_me; function act_me():Void { for (var i = 1; i<=12; i++) { var month_str:String = "month"+i; _root.attachMovie("txtbox_mc", month_str, i); obj_array[i] = eval(month_str); obj_array[i]._x = 120; obj_array[i]._y = 70+i*20; obj_array[i].txt = i+"月"; obj_array[i].onRelease = date_me(); } } function date_me() { trace("onRelease called"); }
date_me;
>>722 ありがとうございました。
直りました。
ボタンをクリックするとオブジェクトの_y幅が1ずつ減少し25pixになったら止まるという動作の実現に悩んでいます。 「ボタンをクリックしたら」の部分を抜かせば onClipEvent (enterFrame) { _yscale -= 1; } だと思うのですが、「25pix」で止めるのと「ボタンをクリック」したらの部分がわかりません。 どうかお力添えお願いします
on(press)とif文の使い方を調べればすぐかな
>>725 一応ある程度はできるつもりです。
on(press)とonClipEvent(enterFrame)って併用できませんよね?
過去ログに参考になる事例がないか探して見ます。
なんで併用できないと思ったの? フレームアクションのbutton.onPressじゃないとでも?
全然、物凄い勢いで解答するスレになってないぞ! ボタンのインスタンス名がbutton 縮めるムービークリップ名がmcとする。 button.onPress = function(){ mc.onEnterFrame = mcOnEnterFrame; } function mcOnEnterFrame():Void { //ここでスピード調整 var speed:Number = 10; if(mc._width - speed <= 25) { mc._width = 25; delete mc.onEnterFrame; } else { mc._width -= speed } }
on (press)の中にonClipEvent (enterFrame)を書くと、onハンドラ内にネストできませんってエラーがでますよね。 そんでもってこんな感じの考えてみました。 on (press) { mc.onEnterFrame = function () { mc._width -= 1; if (mc._width > 25) { mc._width = 25; } } } エラりはしないんですけど動作しないorzヒントください
書いてる途中に神が。。。 オブジェクトアクションばっか使ってる私には全く未知のフレームアクションorz これからも精進します、ありがとうございました。
path合ってないと思われ
732 :
717 :2005/09/09(金) 20:56:03 ID:1qymEZ5H
>>718 試したのですが、どうしてもうまくいきませんでした。
インスタンス名がmcのムービークリップを配置すればいいだけですよね?
>>732 ああ、ゴメン。
「空のファイル」の打ち間違い。
レスした瞬間間違いに気付いたけど、まあ分かるかなと思ってスルーしてた。
空のファイルの1フレーム目のアクションに、それをコピペ。
ムービークリップは何もいらない。
734 :
717 :2005/09/09(金) 23:01:14 ID:1qymEZ5H
>>733 うまく動きました。ありがとうございます。
それで要求が多くて申し訳ないんですが、
この動作をアニメーション後に使うことってできますか?
サイズの縮小の際、下げ幅を等間隔ではなく躍動感を持った動きにするにはどういう計算式が必要だろうか。 目標値まで遠い時は早く、近づくにつれてゆっくりになる動作をさせたい。
736 :
Now_loading...774KB :2005/09/10(土) 07:02:38 ID:ZvzOVe0i
移動に関して「目標値まで遠い時は早く、近づくにつれてゆっくりになる動作」は分かるんですよね。 onClipEvent(enterFrame) { _x += ((_root.*** - _x) / *); } これ応用すればできるはずなのに馬鹿は俺、助言お願いします。
スクリプトの意味がわかってるならそのままじゃん。_width _height スケールとかに置き換えればいい
740 :
Now_loading...774KB :2005/09/10(土) 12:23:27 ID:gnf5gY0q
ムービー作ってて、思ったより容量が増えてしまったため、 フレーム1にNowLoadingのスクリプトを追加したのですが、 どうも、NowLoadingより先に他のMCがダウンロードされているようで、 だいたい80%を超えたあたりで、NowLoadingのMCが表示されます。 他のMCより先に、NowLoadingMCを明示的にロードする方法ってありますか?
他のMCをフレーム2以降に配置する
やったやった。 他のMCロード位置をフレーム10以降にしてるんですけど、 だめみたいです。 ↑ていうのはダウン速度のシミュレートでやった結果です。 試しにウェブに上げて、ダウンロードしてみたんですが、 回線が調子良すぎてテストにならない。。。
できてないか画像の使いすぎ
うーん…。もうちょいいじってみます。アドバイスあり。
746 :
740 :2005/09/10(土) 14:38:08 ID:gnf5gY0q
暇なんで、エロエロためしてみたら、やっぱり、 表示されるのとされないのがある。 途中でムラムラきて、抜いちゃったけど。テヘ あ〜なにやってんだろ。
>>743 リンゲージ書き出しを行ってるインスタンスは?
デフォだと「最初のフレームに書き出し」が入ってるよ。
後、コンポーネントは基本的に最初のフレームに読まれる。
>>746 なにやってんた
741のアドレスクリックしてるところを母さんに見られてしまったよ
749 :
名無しさん@そうだ選挙に行こう :2005/09/10(土) 19:44:23 ID:G8d/P8Sk
@root ┗AMC (ある操作がおこればBを1フレーム進める。) ┗BMC (20フレーム目に達したらrootを1フレーム進める) ┗画 Aには動きをつけているためループさせたいのですが、 gotoAndPlayでAを1フレーム目に戻すと Aの操作ごとに1フレームずつ動いていたBのフレーム位置まで戻ってしまいます。 (AもBも1フレーム目に戻ってしまう状態) これを、Bのフレーム位置はそのままにAをループさせたい場合 どのような処理を行うと良いでしょうか?
3を、ちゃんと2の終わりまで続くフレームに配置し取っておく。
>>750 なるほど・・・Actionscript以前の問題だったようで・・
恥ずかしい限りです。
その通りに直したら解決しました。本当に有難うございます!
得点が1000の倍数を超えると残機が1増える、って感じの処理をさせたいのですが、 for(i=0;i<100;i++){ if(_root.score==1000*i)_root.zanki++; } ってすると990から1010になった時とかは増えませんし、 仮に1000で止まったとしても次に点が増えるまでずっと残機が増えることになります。 何かいい処理は無いでしょうか、
var score:Number = 0; var zanki:Number = 0; var kijun:Number = 1000; for (var i = 0 ; i < 10000; i += 99) { var before:Number = Math.floor(score / kijun); var after:Number = Math.floor( (score + i) / kijun); zanki += after - before; score += i; trace("score = " + score); trace("zanki = " + zanki); }
>>752 スコアを加算する時に、スコアと別に1000カウントする変数を作って、
同様に加算する。1000になったら残機を増やし、カウントを0に戻すなんてのはどうかね。
差分の修正に注意だけど、forループはいらんよ。
>>747 あー!「リンゲージ書き出ししてるインスタンス」あった。音声ファイルだ。
ただ、「最初のフレームに書き出し」を切ったら、
NowLoadingに関しては意図した動きをするようになったんですが、
後で、上の音声ファイルが再生できなくなってしまいました。
>>755 やったことないから、未確認だけど、
そのインスタンスを書き出したいフレームに設置する。
10フレームに書き出したいのなら、10フレーム目にインスタンスを置く
>>747 >>756 あーちゃんとできました。
スクリプトのsoundで鳴らすつもりだったので、
フレームにドラッグ&ドロップしてませんでした。
「最初のフレームに書き出し」を解除してから、
ヘッド(って言うんだっけ?)の行かないフレームを用意してそこにDnDしといたら、
ちゃんとswfに音声ファイルが組み込まれて、soundで再生もできました。
勉強になりました。サンクス。
>>752 これでどう?スコアが一気に1000以上増える状況は考慮してません。
strg = 1000;
onEnterFrame = function(){
var tmp = strg - score;
if(tmp <= 0){
zanki++;
strg += 1000;
}
};
759 :
752 :2005/09/11(日) 00:27:16 ID:jAr7X/gy
いろんなやり方があるんですね。 それぞれ試してみます。ありがとうございました。
>>752 oneUpScore = 1000
if(oneUpScore && _root.score>oneUpScore){
_root.zanki++
delete oneUpScore
}
とか。単純だけど。
>>752 あ、倍数か。だったら
oneUpScore = 1000
if(oneUpScore && _root.score>oneUpScore){
var tmp = Math.ceil((_root.score-oneUpScore)/1000)
_root.zanki += tmp
oneUpScore = (tmp+1)*1000
}
とかかな。
762 :
Now_loading...774KB :2005/09/12(月) 12:23:04 ID:CGF4SMn6
SWF の URL は MovieClip._url で取れますが、 SWF が貼られている HTML の URL はどうやって取ればいいですか?
>>762 flashにurl求める機能あったかなぁ
javasciprt使ってlocation.href flashにわたすとか
764 :
Now_loading...774KB :2005/09/12(月) 12:51:23 ID:gLb0et+2
window_mcが生成されてその中にjuly_mcが更に生成されるのですがjuly_mcは縦にかなり長いのでwindow_mcからはみ出します。 それでwindow_mcにスクロールバーをつけたのですがjuly_mcのwindow_mcからはみ出した部分が見えてしまいます。 はみだした部分を見えなくするにはどうすればいいのでしょうか? function window_me():Void { _root.attachMovie("window_mc", window, 200); _root[window]._x = 170; _root[window]._y = 100; _root[window].attachMovie("july_mc", july, 10); _root[window][july]._x = 10; _root[window][july]._y = 10; }
765 :
762 :2005/09/12(月) 12:52:29 ID:CGF4SMn6
>>763 色々探しましたがそうするしかないみたいですね。
ありがとうございました。
>>764 マスクつけちゃうのが手っ取り早いんじゃね?
767 :
762 :2005/09/12(月) 16:13:45 ID:CGF4SMn6
たびたびすみません、質問です。 Flash 側でダイナミックテキストを作成してそれの変数名を aaa とし、 JavaScript から aaa へ渡すとうまくいったのですが、 Flash 側のルートのタイムラインで aaa という変数を宣言すると JavaScript から値がわたりません。 どうすればいいですか?
>>767 あとSetVariableでの値の受け渡しは同期しなかったような気がするので
_level0.aaaをwatchして更新チェックしたほうがいいかも
770 :
Now_loading...774KB :2005/09/12(月) 18:25:56 ID:5G3aubHZ
771 :
Now_loading...774KB :2005/09/12(月) 21:58:18 ID:MxdVhE+E
XML読み込み後のノード取得についてですが、 <xml> <node>ここに文章<br />ここで改行</node> </xml> のようにテキストノードがあった場合、firstChild.firstChildで値をとると 「ここに文章」までが取得出来て<br />以降が取得出来ません。 これは何か別の方法があるのでしょうか?
っ <br />
>>772 やってみたんですが、ダメみたいです。
なんかFlashではどうやら<br>以外はダメなようですね。
(<br />や<br>等はタグとして認識されませんでした)
で、XMLノードだと子ノードに<br>が含まれるとそこまでしか取得してくれないようで、
その先のテキストを取得してくれません。
<![CDATA[ ここに文章<br />ここで改行 ]]>
>>774 > その先のテキストを取得してくれません。
そんなの当たり前。
XMLにおける<タグ></タグ>の意味を理解する必要があるのが1点。
それと、textHtml周りの確認が1点。
この2点を見直した方がいいね。
みなさんありがとうございます。
色々試した結果、何とか解決しました。
xml = new XML("<xml><node>これが文章<br />これが改行</node></xml>")
txt.htmlText =xml.firstChild.firstChild.firstChild
これでテストしてずーっと失敗していたのですが、
ひとつ上の txt.htmlText =xml.firstChild.firstChild にして
<node>これが文章<br>これが改行</node>
というノードをhtmlTextとして渡す事で<node></node>が効果無効のタグとして処理され、
意図した通りに表示する事が出来ました。
※childNodesで全て拾う方法も出来ました。
>>776 そうですね、XMLについては仕様を一読した程度の知識ですので、
色々と勉強不足でした。
上記の場合、txt.htmlText =xml.firstChild.firstChild.firstChild
としていた事で、childNode[0]=これが文章 childNode[1]=<br /> childNode[2]=これが改行
となっていたようです。初歩的な質問でお手を煩わせてしまい、申し訳ありません…。
>>778 すみません、見逃していました。
その形も今試したところ、<br />をタグとして認識してくれませんでした。
多分回避方法があると思うんですが、
FlashのtextHtmlでは<br />やCDATA内のタグを
タグではなく文字列として処理してしまうみたいです。
でもわざわざありがとうございます。
>>779 下のスクリプトで、問題なく動くよ。
やはり、xmlの内容にタグを使いたい場合は、CDATAにするべき。
xml = new XML("<xml><node><![CDATA[ ここに文章<br>ここで改行 ]]></node></xml>");
txt.htmlText =xml.firstChild.firstChild.firstChild.nodeValue;
780の補足。 777は偶然動いているだけで、htmlのタグが複雑になると破綻すると思う。 テストしてないけど、 "<font color='#FFCCCC' >ここに文章<br />ここで改行</font>" こんな感じで、fontタグが付くだけで、もう上手く動かなくなると思われる。
>>703 FLASHってアドレスが取れるのか?
教えてくれてありがとう。
783 :
775 :2005/09/13(火) 11:09:27 ID:8OgdttIX
>>780 その通りです、フォローどうも。
しいて言えばxmlは予約語なので避けた方が。
これはもっとも質問者の問題ですが。
http://ponk.jp/flash_basic/index.php?page=1 ここにあるペンギンのシューティングを縦シューティングで作ってみようと思ってます。
弾発射のスクリプトを書く所で
onClipEvent(enterFrame) {
if (_visible) {
_y -= 16;
if (_y > Stage.height) _visible = false;
}
}
と、X座標とY座標を入れ替えてみたんですが、うまくいきません。
弾が1回だけ上方向に飛んでいって、2回目を撃つことができないのですが、何か解決方法はありますでしょうか?
>>784 まずおかしいと思ったらtrace入れて数値の変化を確かめようね。
そうしたら
_y > Stage.height
という条件を満たす事がないことに気づくはず。
ムービークリップがマウスカーソルに遠い時は早く、近いとゆっくりと近付いてくスクリプトは分かるのですが 一定の速度でマウスカーソルに近付くようにするにはどのように書けばいいのでしょうか?
>>788 難しい方が解ってるのに簡単な方がなぜわからんのだ?
788 :
784 :2005/09/13(火) 16:53:09 ID:zZa4QGlj
なるほど、数値がマイナスになってるからY座標が高さより大きくなることはないですね。 _y < 0にしてみたら何とか弾を何発も発射できるようになりました。 どうもありがとうございました。
789 :
786 :2005/09/13(火) 17:22:34 ID:1u2U8vGf
いや、一定の速度で動かすほうが難しいと思うぞ
>>786 の前者は
_x += (_parent._xmouse-_x)/5;
_y += (_parent._ymouse-_y)/5;
これだけだけど、後者の方は三角比使わなければいけない
rot = Math.atan2(_y-_parent._ymouse, _x-_parent._xmouse);
_x -= Math.cos(rot);
_y -= Math.sin(rot);
791 :
786 :2005/09/13(火) 18:04:37 ID:1u2U8vGf
>>790 三角比ですか・・
出来たと思ってやってたのはifでカーソルの位置とMCの位置を場合分けして
if (this._x <= _root._xmouse+10 && this._x >= _root._xmouse-10) {
this._x += 0;
} else if (this._x > _root._xmouse) {
this._x -= 5;
} else if (this._x < _root._xmouse) {
this._x += 5;
}
if (this._y <= _root._ymouse+10 && this._y >= _root._ymouse-10) {
this._y += 0;
} else if (this._y > _root._ymouse) {
this._y -= 5;
} else if (this._y < _root._ymouse) {
this._y += 5;
}
とかonClipEvent(enterFrame)の中でやってまして
これだと斜めは45度しか移動しないし、斜め移動のスピードがやたら早いんですが
出来た気になってました
ちょっと三角比を勉強してきます
どうもありがとうございました
>>429 ガイドってのがよくわからんが、普通にX軸移動なら、enterFrameでできるでしょ?
this._x=100;
this.onEnterFrame=function(){
this._x-=5;
if(a._x<0){
this.onEnterFrame=null;
}
}
な、感じで。
あ、if(this._x<0)ね。ルートに記述する場合はaで。
>>790-791 移動方向の単位ベクトル求めて一定速度を掛ければOKで
三角関数なんて使う必要はないやね。
onClipEvent(EnterFrame) {
norm = Math.sqrt(_xmouse * _xmouse + _ymouse * _ymouse);
if (norm > 0) {
_x += 5 * _xmouse / norm;
_y += 5 * _ymouse / norm;
}
}
795 :
786 :2005/09/13(火) 19:15:53 ID:1u2U8vGf
>>794 あーすごい 完璧に動きました
ありがとうございます
>>779 780さんが答えを出してくれているから、これは蛇足なんだけど、
<br />という表記は
HTMLの表記じゃなくてxHtmlの表記方法だよ。
そこんところ理解しているの?
798 :
792 :2005/09/13(火) 19:37:00 ID:AGiewDiB
792,793はスレ間違いスマン。スルーで。
799 :
Now_loading...774KB :2005/09/13(火) 22:02:47 ID:029/s5d7
MCをonすると音が鳴る・・それだけでいいのですが教えてください。 無知なもので・・
>>799 あなたの環境が不明なので仮にWinXPのFlashMX2004とする
どこにスクリプトを書くのか不明なので仮にクリップアクションとする
onというイベントハンドラは無い。仮にonRollOverとする
サウンドオブジェクトの変数名が不明なので仮にobjとする
サウンドのリンケージ識別子が不明なので仮に"bgm"とする
onClipEvent(load){
obj=new Sound(this);
obj.attachSound("bgm");
}
on(rollOver){
obj.start();
}
//800get
>//800get ワロタ
いいセンスだ
803 :
Now_loading...774KB :2005/09/14(水) 11:31:14 ID:daPFquUX
あったーらしいー あーさが きたっ
何これ?
805 :
:2005/09/14(水) 15:27:13 ID:oisBA+Yg
WindowsXP SP2 FlashMX 2004 Proの者です。 長文失礼さしてください。 UIコンポーネントのスクロールペインへ外部swfを読み込んでギャラリーページみたいなものを作ってるんですが ScrollPaneの動作でどうもうまくいかないところがあるので質問させてください。 以下のように左側にメニューボタンが並んでいて、クリックするとスクロールペインへ外部swfを読み込むようにしています。 [メニュー1] ┌───┐ [メニュー2] │ │ ←スクロールペイン (インスタンス名: ScrollPane ) [メニュー3] │ │ [メニュー4] └───┘ 読み込みは左メニューボタンへ on (release) { ScrollPane.contentPath = "外部.swf"; } という風にしています、これで読み込みはできているんですが 左メニューのボタンを上から順にすばやく押したり、キャシュがない状態で何ページも見て回ったりしていると ・表示に極端に時間がかかることがある (100kぐらいのswfなのに10秒以上) ・スクロールペインの内容がペインよりも大きくてはみだしているのに、 スクロールバーが非アクティブでスクロールができない。 ・表示されている内容とスクロールバーの位置が一致しない。 どうもスクロールペインに新しい内容がロードされたときに、その高さと幅が取得できておらず たとえば、前に表示されていたページが縦にくそ長いページだったりした場合、次のページにうつってもスクロールバーの縦幅が縮まったままになる ローカルでテストした場合はこの症状は起きませんでした、レンタルサーバーとかにアップして見た場合に出るようです。 どなたか知恵をお貸しください。
>>805 ロード完了前に他のをロードしてるのかもね。ヘルプを参考にして、
ロードバイト数とを取得して見ればどうかな。
ScrollPane.contentPath = "外部.swf" の後に、 ScrollPane.refreshPane() は実行した?
>>806-807 ありがとう!
ScrollPane.refreshPane();
は、スクロールペインインスタンスへ
on (complete) {
ScrollPane.refreshPane();
}
と、何も考えずに書いたら無限ループして固まってしまったので、それっきり試していませんでした・・・
どう書けばいいかな?
バイト数のモニタリング、ちょっといまからつけてきまっす。
また来ます
先生!質問です。 getNextHighestDepth();がundefinedを返すのですが整数以外を返すことはあるのですか? またマイナス深度のMCを参照した場合戻す値は0になるのですか? 使っているのはMX2004のマック版です。
>>809 整数以外を返すことはないよ。
負の値を返すこともないってヘルプに書いてる。
どやったらundefined返ってきた??
無いMCからの深度を計ろうとしてるんじゃない? _root.getNextHighestDepth(); で使ってみれ
関係無いんだけどさ、 getNextHighestDepthってよく使う割に文字列長くて入れるの鬱陶しくない? _global.MovieClip.prototype.gnhd = getNextHighestDepth ってして使ってるけど、こういうの止めたほうがよさげ?
>>812 他の人と共同作業しないなら、別に問題ないんじゃない。
俺は、getNextHighestDepthってバグの関係で使ってないなあ。
>>813 コンポーネント関連の奴?
あれって狂うのrootだけだからあんま気にしてなかった。
>>814 ああ、あれrootだけなんだ。
mx2004が出た当初に一回そこではまっちゃって、それ以来使ってない。
//質問です。 onClipEvent(enterFrame){ //を使ってmcがマウスに近づく this._x += (_xmouse-this._x)/n; } //ってので /*この計算の場合イージングアウト、すばやく近づき、ゆっくり止まるんだが、 ゆっくり近づき始め、すばやく止まるような、イーズインにしたいんですが? 何か簡単な計算式にできますか?*/
少しは考えなさい
818 :
Now_loading...774KB :2005/09/16(金) 11:28:48 ID:9LZlJuZn
基本的なことでいまいちよく解ってないんですけど 30fpsのFlashで interval = setInterval(timer, 1000); を使用した場合、ほぼ正確に1秒ごとになるのでしょうか。 fpsとintervalの関係が解らない 関係ないのかもしれないけど
>>818 表示ラグは仕方ないけど、ほぼ正確だと思います。
820 :
Now_loading...774KB :2005/09/16(金) 11:35:50 ID:9LZlJuZn
>>819 ありがとうございます。
とりあえず安心しました。
>>816 すばやく 止まる
っていうのが激しく矛盾してるわけだが。
だいたい、素早くなるような動きにすると、近づくMCを避けた際にMCがポインタの周りをぐるぐる回る事になるんだけど。いいの?
で、ぐるぐる回るようなのを避けると不自然な動きになるけど↓
onClipEvent(load){
kasoku = 0;
kasokuDelta=0.2;//この数字がでかいほど加速が鋭い。小さいと緩やか。
}
onClipEvent(enterFrame) {
if (this.hitTest(_root._xmouse, _root._ymouse, true) == false) {
tmp = Math.atan2(this._ymouse, this._xmouse);
this._x += Math.cos(tmp)*kasoku;
this._y += Math.sin(tmp)*kasoku;
kasoku+=kasokuDelta;
}else{
kasoku=0;
}
}
>>822 サンクスコ すばやく止まるじゃないですね。近づく程すばやくなる。です
試してみます。
できなかったら呪う。
円運動する直線に残像を付けたいんですけど、残像を付けるスクリプトがわかりません。 どなたか教えてください('A`)
>>823 >できなかったら呪う。
ハァ?死ね
>>824 その直線はMC?それとも描画メソッド?
MCって事にして話を進めると
//その直線の名前を"line_mc"と仮定して書くね。
//このASはフレームアクションに記載してちょうだいね。
//自分で試してないです。動かなくてものろわないでね。
nN="znz"+count;
tN=line_mc.duplicateMovieClip(nN,count);
tN._rotation=line_mc;
tN._x=line_mc;
tN._y=line_mc;
tN.onEnterFrame=function(){
this._alpha-=2;//この数字は適当にかえていいよ
if(this._alpha<=0){
this.removeMovieClip();
}
}
あ、間違い ↓をコピペで動く(か動かないかわかんないけど)と思う。 count=0; _root.onEnterFrame=function(){ nN="znz"+count; tN=line_mc.duplicateMovieClip(nN,count+1); count++; tN._rotation=line_mc; tN._x=line_mc; tN._y=line_mc; tN.onEnterFrame=function(){ this._alpha-=2;//この数字は適当にかえていいよ if(this._alpha<=0){ this.removeMovieClip(); } } }
827 :
824 :2005/09/16(金) 17:59:59 ID:jKqAVXt1
>>825-826 すいません、どこに記述するかもわかりません……
雰囲気としては、昔の映画が始まる前のカウントダウンっぽいものを作りたいです。
使おうと思っているスクリプトはこんな感じのです(某サイトからのコピペ)
clear();
frame++;
cx=160; cy=160;//
cr=60;//
speed_ctr=5; //
deg=math.PI/180; //
ncx=cx+cr*math.cos(frame*speed_ctr*deg); //
ncy=cy+cr*math.sin(frame*speed_ctr*deg); //
r=100; //
speed_line=10; //
lineStyle(5,0x000000,100);
moveTo(ncx+r*math.cos(frame*speed_line*deg),
ncy+r*math.sin(frame*speed_line*deg));
lineTo(ncx+r*math.cos((frame*speed_line+180)*deg),
ncy+r*math.sin((frame*speed_line+180)*deg));
endFill();//
昔の映画が始まる前のカウントダウンっぽいものを作りたい という発注をしてくれればつくりますよ。 予算はおいくら?
831 :
827 :2005/09/16(金) 19:44:51 ID:jKqAVXt1
>>828-830 うーん、まだまだ自分にはASは早かったようです。
本屋逝ってきます。みなさんありがとうございました。
>>827 あのさ
>//このASはフレームアクションに記載してちょうだいね。
この一文がよめんのかお前
>>832 コピペするのが目的なんだから読んでるわけないじゃん
834 :
Now_loading...774KB :2005/09/16(金) 22:01:01 ID:m3P1gz3Q
「FLVファイルを外部から読み込んでFlashで ストリーミング再生」というものを作っています。 で、再生、停止ボタンや一時停止ボタン、ボリュームノブまで 完成して終了!といきたかったのですが、 「now loadingも付けてほしい」と言われて苦戦しています。 もちろん普通の?Flashムービーでのnow loadingや 外部のswfを読み込んでのnow loadingは作ったこと があるのですが、NetStreamオブジェクト関係の ものは今回が初めてで上手くいきません。 ちなみにFCSは使っていません。どなたか教えてください!と 都合の良いことは言いませんので、これと同じ例、もしく はかなり近いもののやり方が載っている書籍等が ありましたら是非教えてください。よろしくお願いし ます。
NetStream.bytesLoaded NetStream.bytesTotal この2つを使用して、以下の感じでできるんじゃない。 if ( bytesLoaded < bytesTotal ) { //loadingムービー表示 } else { //loadingムービー非表示 }
ロードが終わるまで now loadingするなら ストリーミングの意味がないんじゃない? やるなら、バッファしてる時間だけ表示するとか。
ああ、ストリーミングか。 だったら、if (bufferLength < bufferTime) という感じにやるしかないかな。 再生途中のバッファ切れでは表示させないように、条件をもっと工夫しないといけないけど。 この2年くらい、loadingムービーってつけなくなったなあ。 回線が速くなったのと、now loadingがあるとストレスを感じさせるので、 多少重くてもloadingムービーなしで、しらっと再生させちゃう。
おすすめのASエディタはありますか? みなさん何をお使いですかね。
SE|PY
this.onPress = function(){ this.gotoAndPlay("move"); } this.stop(); エラーが出ます 何故でしょうか?
841 :
Now_loading...774KB :2005/09/18(日) 10:39:52 ID:IQfpPU2i
すみませんが、beginFill、lineToで直線ってできないんですか?
いきなりthisだらけのスクリプトを書かれても何をやりたいのか分からないけど、 多分、onPress内のpathの違いかな。 _parent.gotoAndPlay("move") で、望みの動作になる?
843 :
Now_loading...774KB :2005/09/18(日) 10:47:46 ID:IQfpPU2i
841ですが、おかしな質問をしてしまいました。 もいっかいちゃんとへるぽ読んでみます
lineStyleが足りてませんでした。 おはずかしい。
>>840 エラー ってことなら、オブジェクトアクションとして書いてしまっているとか?
>>845 ああ、そっちか。
文法的にはあっているので、コンパイルは通るはずだと思ってしまった。
function onPress(){
gotoAndPlay("move");
};
としたら直りました
>>845 >>846 ありがとうございます
理由はよく分かりません
>>847 まあ、そういう場当たり的な解決もいいが、
根本的に色々オカシイから、
一回勉強しなおしたほうがいいかもしれんよ
849 :
838 :2005/09/18(日) 15:02:47 ID:OUCeQc4m
>>838 早速SE|PYをダウンロードして入れてみました。
確かによさそうですねこれ。教えていただきありがとうございます。
で、文法チェックしようとしたら「mtasc」が必要だと言われたので
http://www.mtasc.org/ からダウンロードして入れてみたのですが、それでも「(unknown):type error class not found」という
エラーが出てしまいます。これは何ででしょうか? 単にSE|PYがmtascの最新ヴァージョンに
非対応とかなんですかね? 思いっきりスレ違いですが、他に質問できそうなところもないので
よろしければおせーてください。
インスタンス名がa1〜a10の10こに同じ値を代入したいのですが せっかく連番なので1度に指定できる記述の仕方があったら教えてください。
>>851 ルートにa1,a2の2個あるとして、ルートの1フレに
for(var i=1;i<3;i++){
this["a"+i]._alpha=50;
}
とか。
>>852 それでできました、ありがとうごじゃりますた。
すみません。今アクションゲーム作ってて なぜかできないことがあったので質問させていただきます。 30,20の大きさのキャラに中心点は15,20と設定して、 ステージ(stage1)との当たり判定で、反発するように設定したんですが、 for (i=0;i<=10;i++){ if (_root.stage1.hitTest(_x +"15",_y -"10",true)) {_x -= 1;} if (_root.stage1.hitTest(_x -"15",_y -"10",true)) {_x += 1;} if (_root.stage1.hitTest(_x, _y -"20", true)) {_y += 1;} if (_root.stage1.hitTest(_x, _y, true)) {_y -= 1;} } とやるとなぜか後ろの三つはできるけど、最初のキャラの右側に当たったときの設定が なぜか反映されずにそのまま入ってしまいます。 何回もいじってみても直りません。 ASに問題があるのでしょうか? ちなみにParaFlaを使っています。
>>854 パラフラはよくわからんが、座標指定するのは数値なのでは?
>>855 前に”を抜かしてやってみたらいかなかったんですよ
でも今はずしてみたらできましたorz
ありがとうございました。
function onLoad(){ var state = 0; }; function onPress(){ state++; trace(state); }; NaNとなります なぜでしょうか?
>>857 function内でvarを使って宣言すると、「そのfunction内でのみ有効なローカル変数」になる
なので他のfunctionからも参照したいときは、単に
state=0
と書く。
stateの前のvarを取るか、 var stateをonLoadの外で宣言する。
かぶった
環境:Windows FlashMX &FlashMX2004 btn_mc.onRelease=function(){ 何か処理; }; btn_mc.onReleaseOutside=function(){ 何か処理; }; を ボタンインスタンスに書くような on(release, releaseOutside){ 何か処理; } みたいな形に省略する方法はありますか?
btn_mc.onRelease = btnOnRelease; btn_mc.onReleaseOutside= btnOnRelease; function btnOnRelease():Void { //処理 }
>>863 なるほど 一つの関数にまとめるんですね。
ありがとうございました。
ifで(変数1=”なんたら”) 変数2=処理 とするとき、変数1が例えば”なんたらかんたら”でも変数2の処理をする ワイルドカード的なifはできるんでしょうか?まだ初めてなもんで、お願いします。 FLASHmx2004
>>865 どの程度の柔軟性を求めてるのかその例だとわかりにくいけど、その例の限りなら
if(変数1=="なんたら"||変数1=="なんたらかんたら"){//「&&」が「且つ」で、「||」が「若しくは」
処理;
}
>>865-866 ワイルドカード的にというのなら、もうちょい柔軟にこんな感じかな
//検索する文字列
var str:String = "なんたらかんたら";
//この文字列を含んでいれば、true
var condition:String = "なんたら";
if (str.indexOf(condition) != -1) {
//"なんたら"を含むので処理を実行
trace("処理を実行");
}
869 :
Now_loading...774KB :2005/09/22(木) 00:02:12 ID:ZbGdRbTz
MX2004 winXPです あるムービークリップにマウスが乗っているときフレーム毎に横に動かしたいので MC.onEnterFrame = function(){ MC._x += 2 } とりあえず初めこうフレームに書きました これでフレーム毎に横に動きました しかしマウスが”乗っていれば”動く、という操作が出来ません onRollOverやあifやら色々試したのですが動きません 簡単な質問でしょうがお願いします
MC.onEnterFrame = function() { if (MC.hitTest(_xmouse, _ymouse, true)) { MC._x += 2; } };
871 :
Now_loading...774KB :2005/09/22(木) 00:30:15 ID:ZbGdRbTz
ありがとうございます! hitTest初めて見たアクションスクリプトなので勉強してきます 本当に助かりました
パスが違うと思われ
MC.onRollOver = function() { this.onEnterFrame = function() { this._x += 2; }; this.onRollOut = function() { delete this.onEnterFrame; }; };
クラスパスの設定が不足してるんじゃないの? この、情報からじゃ、よくわからんが・・・
875 :
Now_loading...774KB :2005/09/23(金) 18:05:18 ID:BPt0jEsF
ど素人ですみませんが、質問です。 プロフェッショナルでナウローディングの作り方がわかりません。 100%ロードしたら、指定したフラグに飛ぶスクリプトを どなたか教えてください。 どうか宜しくお願い致します。
プロVerじゃなかったら分かるのか・・・? まあ大雑把に書くとMCに onClipevent(enterFrame){ if( _root.getBytesLoaded() == _root.getBytesTotal() ){ _root.gotoAndPlay("移動させたいラベル"); } ってかんじで。
877 :
Now_loading...774KB :2005/09/23(金) 19:43:59 ID:yDll3zmh
すみません、質問です。。 多次元配列を使いたいですが、この処理の仕方だとiが0の時にしかデータが入りません。 なぜでしょうか、また他に適切なやり方などあったらご教授お願いします。 var i = 0; var j = 0; myArray = new Array(); myArray[i] = new Array(); for (i=0; i<100; i++) { for (j=0; j<100; j++) { myArray[i][j] = "hoge"; } }
順番が若干違う var i = 0; var j = 0; myArray = new Array(); for (i=0; i<100; i++) { myArray[i] = new Array(); for (j=0; j<100; j++) { myArray[i][j] = "hoge"; } }
879 :
877 :2005/09/23(金) 19:58:10 ID:yDll3zmh
あっ!なるほどです。 これじゃ、2次元配列が1つしかできないですよね。 理解しました、ありがとうございます。
880 :
たけし :2005/09/23(金) 20:48:48 ID:4JB7Cfny
>>880 動くよ。フラッシュ内一回クリックした?
882 :
たけし :2005/09/23(金) 21:31:27 ID:4JB7Cfny
ありがとうございます!! クリックしないとだめなんですね!! 初めて知りました・・・。
ムービークリップの配列ってできないですか? MCList = new Array(); として、シーン上でsomeMCと名前をつけたムービークリップがあって MCList.push(someMC); みたいにしても、別のムービークリップの中で for (var targetMC in _root.MCList) とやった時、ちゃんと登録した数の分だけループするんですけど this.hitTest(targetMC)とかが機能しません。 someMC内で宣言したメンバ変数も参照できません(undefined)。
できるよ。 pushで入れた場合は、連想配列でなく普通の配列になるので、 for (var i:Number = 0; i < MCList.length; i++) { MCList[i].hitTest(targetMC); } って感じに回さないとダメだと思う。
>>884 あ〜なるほど… ありがとうございました
っ this.hitTest(_root.MCList[targetMC])
先生、質問です。 例えばステージ上に100個のMCインスタンスを置いて1つのボタンで表示のオン&オフってどうすればよいのでしょうか? MCインスタンス1つづつプロパティを設定しなければだめですか? 大元のMC自体のプロパティを変更すればステージ上から全部表示を消すことができると考えていたのでそれができずにちょっと困ってます。 なにかよいアドバイスをよろしくお願いします。
>>887 100個分設定してください。やり方はいろいろあるよ。
回答ありがとうございます。 やっぱり、そうなんですか。 FLASHの構造自体を大勘違いしてました。 ムービークリップのプロパティの設定とあるのはムービークリップインスタンスのプロパティを設定ということなんですね? 例えばなんですが100個のMCインスタンスの内容を一気に入れ替える(透明なものに)ってできるんですか? 100個が_rootにあるわけではなく、いろんなMCインスタンスに入れ子になってるものでループ組むのが面倒というか、、、。
>>889 それは設計のやり方ですね。
鋳型から作られたものは、鋳型を変えても変わらないでしょ?
基本的にはインスタンスそれぞれにループ処理で値を変えてあげる。
MCに分かれてるならそのMCにそういう処理をするようにしてあげれば良いと思う。
>>887 >>889 基本的に部分が、抜け落ちているみたいなので、
何かチュートリアル的な本を買って、きちんと勉強した方がいいよ。
「基本的な」、だった。
なるほど、てっきりMCインスタンスとは大元のMC(ライブラリの)をいじれば変わるものだとおもってました。 確かにMCをたどってプロパティ設定すればいいのでしょうけど処理が重くなるなぁと、、、。 入れ子にしてるMCインスタンスの中には非表示にしたくないMCインスタンスもはいってるので、、、。 設計からやりなおしたほうがいいかなぁ、、、。
速度を気にしないなら、MC側がenterFrameでフラグを監視して 処理を行えばいいんじゃないかな。
でも監視するMC側も結構数があるんです。 例えば10x10くらいで並べていてその中にA,B,CのMCインスタンスを入れているんですけど ボタンでON,OFFしたい場合100個監視しなければならにですよね? もしくは100個のMCインスタンスをパスにいれたループ組むとか。 てっきりライブラリを書き換えれば済むものだと勘違いしてまして、、、。 A,B,Cを配置するMCインスタンスを分けた場合は大元を非表示にすればすむのでしょうけど、、、 ありがとうございました。
>>895 100個程度のon/offくらい、大して重くないんじゃないの?
そのMCのフレームアクションに
if(!_root.btnAry) _root.btnAry = new Array()
_root.btnAry.push(this)
とでも入れておけば全部配列に入るから、
後はボタンアクションなり何なりで操作すればいいと思うけど。
100個並べてる中にA,B,CのMCインスタンスがランダムに複数存在しているので、、、。 でもFLASH MXって1000個くらいのMCインスタンスが表示されていても結構動くものですね。
>>897 そのA,B,Cに応じてifで判定させればいいんでは?
for(var i=0 , i<_root.btnAry.length ; i++){
if(btnAry[i].A && !btnAry[i].B && !btnAry[i].C) ***
else if(!btnAry[i].A && btnAry[i].B && !btnAry[i].C) ***
else if(!btnAry[i].A && !btnAry[i].B && btnAry[i].C) ***
}
//単純だけど。
そもそもどういう動作を行いたいのか、
具体的に書いてないからいまいちわからん。
サンプルコード、どうもです。 動作は単純に複数MCインスタンスの表示、非表示が簡単にできないかなぁと。 ステージ上でライブラリからMCインスタンスならべてライブラリのMCをいじると変更が全て継承されますよね。 あれをスクリプトでできると思い込んでいたので、、、。
>>899 Flashで編集している時点では同じソースのインスタンスって扱いだけど、
パブリッシュされた後はそれぞれ別々のムービークリップに変わるから、
完全に別物だと思っていいと思うよ。
なので、一括管理をするなら、
配置自体をattachMovie使って登録しながら配置とか、
上にあげたような方法で自身を登録させて、中に判定要素を盛り込むとかだね。
現在のフレームを取得するASってありますか? いくつかサイトを探してみたんですけど、見つからなくて… キーを押したら現在のフレーム数を表示するってやりたいのです。
MovieClip._currentframe
903 :
Now_loading...774KB :2005/09/24(土) 23:46:49 ID:RlGyUinS
(ソフトFlashMx2004 OS:Win98SE) 文字列中の数字の位置およびアルファベットの大文字の位置 で判定するASはどのようになりますでしょうか? 私の方では 例えばtxtを 1A2B3C4D として if(txt.charAt(0) == '"0"-"9"'){・・・・} if(txt.charAt(3) == '"A"-"Z"'){・・・・} としましたが、ダメでした。 宜しくお願い致します。
for(var i=0; i<txt.length; i++){ if(48<=txt.charCodeAt(i) && txt.charCodeAt(i)<=57){ } if(65<=txt.charCodeAt(i) && txt.charCodeAt(i)<=90){ } }
var t; for(var i=0; i<txt.length; i++){ t = txt.charCodeAt(i); if(48 <= t && t <= 57){ } if(65 <= t && t <= 90){ } } 個人的にはこういうのが好き
>>906 そのサンプルで説明すると、
配置されるムービークリップ内で、
1フレーム目にボタン(またはムービークリップ)
2フレーム目では1フレーム目のボタンを消して、正解、不正解のムービークリップ
という風に置いて、
1フレーム目のボタンに再生のAS、2フレーム目のフレームにstopのAS
という仕組み
まあ、ようは、ボタン押したらボタンの無いフレームに移動すればいい
908 :
Now_loading...774KB :2005/09/25(日) 05:18:28 ID:dvTpi8d4
スクロールバーのスライドボタン(ソフトFlashMx2004 OS:Win98SE)
ダイナミックテキスト(変数:t1, インスタンス名:t1_ins)に計算結果を表示
させる際、スクロールバー(縦と横)のスライドボタンが現れず困っています。
作製したswfは
http://www.hakusi.com/up/src/up4534.swf です。
※スクロールさせる前提で、ダイナミックテキスは小さめに作っています。
ASとしてフレームアクションに
System.useCodepage = true;
this.onData = function() {
scr3_tate.setScrollTarget(t1_ins); //縦のインスタンス名:scr3_tate
scr3_yoko.setScrollTarget(t1_ins); //横のインスタンス名:scr3_yoko
};
と書き、ボタンアクションに
on (press) {
t1 = "";
sq1 = Math.sqrt(in1); //値1の平方根を求める
sq2 = Math.sqrt(in2); //値2の平方根を求める
//
t1 = "Input1= "+in1+", "+"Input2"+in2+"\n";
//
for (var i = 1; i<=20; i++) {
t1 = t1+" "+sq1*i+", "+sq2*i+"\n"; //t1に平方根のi倍を改行表示
}
}
としました。計算結果は現れるのですが、スライドボタンが現れません。
どうすればいいでしょうか?
>>908 this.onLoad=function.........ではどうね
910 :
903 :2005/09/25(日) 05:43:14 ID:mbPfdyQ2
>>904 , 905
Thx
仕様上、904さんの方を採用しました。
911 :
908 :2005/09/25(日) 06:02:00 ID:YgC/61Wv
>>909 ありがとうございます。
this.onLoad = function() {
scrl3_tate.setScrollTarget(t1_ins); //scr3を→scrl3に修正
scrl3_yoko.setScrollTarget(t1_ins);
};
うーん。出来そうな気がしたんですが、何の変化もありません。
引き続きどなたかアドバイスを願います。
>>911 パスあってる?ルートにそれぞれがある時に、ルートのタイムライン(1フレームにでも)
書いてみて。
>>911 つかさ、コンポーネントのスクロールバーだよね?
>>912 ルートのタイムライン(1フレームにでも)書いてみて。
ルートとはステージ上のことでしょうか?
絶対パスで書きますと
_root.scrl3_tate.setScrollTarget(_root.t1_ins);
_root.scrl3_yoko.setScrollTarget(_root.t1_ins);
になります。
>>913 コンポーネントのスクロールバーだよね?
そうです。他のスクロールバーってあるのですか?
t1_insって表示するターゲットのインスタンス名? あとは、スクロールバーをテキストフィールドにドラッグしてくっつけてみて。
>>915 t1_insは表示するターゲットのインスタンス名です。
くっつけてみましたが、変化がありません。
>>916 テキストフィールドのど真ん中に、スクロールバーをドラッグドロップして、
くっつけた後、スクロールバーのプロパティパラメータでターゲットのインスタンス名を確認してみる。
とりあえず、新規で作ってみるか、単純にTextAreaコンポーネントを使うとかかな。
書き忘れていましたが、ダイナミックテキストの欄ではこのように スライドボタンは現れませんが、テキスト入力では現れています(別のswf)
>>918 それはくっついてないぞ。MX2004だからコンポーネントのUIScrollBarを使ってるんだよね?
サードパーティの作ったコンポーネントを使ってたらわからん。
普通に、ファイル-->新規で新しいフラッシュドキュメントを作っておくれ。
あとは、Flash自体のアップデートをしてないとか、PCの問題とか。
TextAreaコンポーネントを設置すると、 TextArea外をクリックしても、TextAreaからフォーカスが切れないんだけど、 こういう仕様なの?
(スクロールバーのスライドボタン)
>>920 自己解決しました。計算ボタン部分のASの変更は無く、
フレームアクションで
System.useCodepage = true;
t1 = ""; //t1は結果の欄。初期値は空白。
this.onEnterFrame = function() {
t1 = t1;
scrl3_tate.setScrollTarget(t1_ins);
scrl3_yoko.setScrollTarget(t1_ins);
};
と、onEnterFrameによりスクロールオブジェクトを常にActiveにしつつ
t1に結果を流し込むことで実現できました。
出来たswfは
http://www.hakusi.com/up/src/up4553.swf です。
有難うございました。
function dousa1(){ (処理) } って書くとdousa1()を(処理)を実行するものとして定義できますよね?これに続けて function dousa2(){ if((条件)){ dousa1(); } } と書くと(条件)を満たすと(処理)が実行されるdousa2()が出来るはずなんですが、(条件)を満たしても実行されません。 function dousa2(){ if((条件)){ (処理) } } と書けばちゃんと出来るんですが、都合により前者の方で記述したいんです。 どう書けばいいでしょうか?ちなみにMX2004です。
>>924 以下のように書けば動作しますが?
パスが間違ってるとかない?
あと定義しただけで動作すると思ってるとかないよね?
a=0;
function dousa1(){
trace("dousa1");
}
function dousa2(){
if(a==0){
dousa1();
}
}
dousa2();
>>924 パスはあってる?それをMCのタイムラインでやってる場合、MCのパスがいるかも。解らんけど
今自分で試してみたぶんにはそれで上手く行ったよ。
↓みたいにdousa1をtraceしてみるのが一番いいと思う。
function dousa2(){
if((条件)){
dousa1();
trace(dousa1);
}
}
>>924 >(条件)を満たしても実行されません
疑って申し訳ないですが、
if( 1 ){
}
で実験してみた方がいいと思います。
どうも(処理)の内部にthisを使ってなのが駄目だったようです。 thisは関数が実行された時に定義されるんだと思ってたんですけど、関数を定義した時に一緒に決められるんですね。 function dousa1(mokuhyou){ (処理) } として、実行する時に mokuhyou=this; dousa1(mokuhyou); としたら上手く行きました。御指導ありがとうございます。
>>907 ありがとうございます。
まだ出来ませんがどんな感じかはつかめました
930 :
Now_loading...774KB :2005/09/25(日) 20:18:24 ID:cHNESve4
質問させていただきます。 ターゲットパスの指定ミスだと思うのですが、 _root ―― A(インスタンス名「A」のMC) | ― B(MC) ―― C(MC) この時、Cと言うMCに「ボタン」を配置し、 on (release) { this._parent._parent.A.gotoAndPlay(15); } と記述しましたが、MC「A」は動いてくれません。 on (release) { this._parent._parent.A_mc.gotoAndPlay(15); } ~~~~~ でも同様です。 何がおかしいのでしょうか? (_root.A_mc.gotoAndPlay(15); もやってみましたがだめでした。)
>>930 _root.A.gotoAndPlay(15);
じゃないのかな? 1文字のインスタンス名が嫌だけど。
>>930 最初のthisはCのことです。
次の_parentはB、
その次の_parentはAのことですから
そのパスですとAのMCのなかのAを指定したことになります(ないので当然うごきません)。
ですので相対パスで書くなら this._parent.A.gotoAndPlay(15);
933 :
932 :2005/09/25(日) 20:34:19 ID:Gm7YbaDC
>>930 すいません。まちがえました
this._parent._parent.gotoAndPlay(15); でした。
934 :
930 :2005/09/25(日) 21:21:41 ID:cHNESve4
お二方、ありがとうございます。
>>931 _root.A.gotoAndPlay(15);
なのですが、参考にしたものが「A_mc」と言う表記だったのでそちらを使っていますが
表現が微妙だったので(「A_mc」でインスタンス名であると言うような事は書いてなかった)
もしかして、_mcっていらないんじゃ?って思ったので一応つけない場合も試してあります。
説明不足ですいませんでした。
>>932 えと、一応 実行してみたのですが動きませんでした。
AとBは_root上で同じ階層(?)にあるのですが、
>>933 のだと_rootのタイムラインが進行しませんか…ね? あれ?
― A(インスタンス名「A」のMC)
|
_root ―
|
― B(MC) ―― C(MC)
こう書けばよかったですね。
でも、お二方を見る限り、パスの指定方法に間違いらしい間違いは無さそうなので
もしかしたら、もっと根本的なトコでミスがあるかもしれないのでもうちょっと見直してみます。
>>930 確認用に_rootにボタンを置いて、ターゲットパスの挿入で
Aにアクセスできるかどうか見てみれば?
936 :
932 :2005/09/25(日) 21:36:42 ID:Gm7YbaDC
>>934 すいません。MCの配置関係を勘違いしてました。
あれだと_rootが動いてしまいますね。
trace(this)をそれぞれのMCに書いてパスを確認してみるのも
いいかもしれません。
>>934 ボタンに書いてあるのなら、ボタンの_parentはCでは?
this._parent._parent._parent.A.gotoAndPlay(15);
(ボタン-C-B-_root-A)
変数の宣言を強制する方法ってあるのでしょうか? #VBのOption Explicit Googleで「ActionScript 変数宣言を強制」とか検索しても無理っぽい結果しか書いてありませんが、記事の日付が古いのでMX2004だとなっているかなとか一縷の希望を。 コーディングがヘボい自分が悪いわけですが、ちょっとした文字のミスで動かなくなるのがフラストレーション溜まります。 あと、もし標準機能で無いとしたら、それを補完する機能を持った外部エディタというのはあるのでしょうか? 環境:WinXPpro(SP2)、FlashMX2004pro(7.2)でActionScript2.0
>>938 お勧めの外部エディタなら、SE|PY
ただ、変数の宣言を強制する事は出来ないと思う。
クラスファイルでシンタックスチェックすれば、 宣言されてない変数があるとエラー出るよね。 それだけじゃダメかなあ。 VB知らないんで、まるで外したこと言ってたらすまん。
配列を使ってムービークリップのアルファをランダムに変更したいのですがうまく動作しません 何が原因でしょうか? //c_1,c_2,c_3,c_4はムービークリップのインスタンス名 list=["c_1","c_2","c_3","c_4"]; ran = random(4); trace(list[ran]); _root.lc.list[ran]._alpha += 100; 作成環境はFlash MXです
942 :
930 :2005/09/26(月) 14:26:56 ID:AGBq6d2d
昨夜はどうもありがとうございました。
>>935 の方法で_rootに「仮のボタン」を配置して一階層ごとに_parentを追加する形で
降ろして行き、最終的に
on (release) {
_parent._parent.A.gotoAndPlay(15);
}
で動きました。
(ただ、仮のボタンでは動いたのに、実際のボタンに適用した時に動かなかったので
CのMC自体の構造に問題があるようです。)
お手数かけましたが、後は自力でなんとかなりそうなので一応〆させていただきます。
レスを下さった人、ホントにありがとうございました。
943 :
941 :2005/09/26(月) 15:01:59 ID:kTM6qV1i
すいません。自己解決しました。
こんばんわ。調べても解決しなかったので質問します loadvariablesを使ってloadVariables("ss.txt");という記述をしたFLASHを作ったのですが 自PCで動かしてる時は問題なく動いてるのですが Web上にアップした際に何故かss.txtを読み込まなくなりました(undefinedと出る) サーバーの同一フォルダの中にしっかりとss.txtファイルはあるのですがどうして読み込まないのか分かりません Web上では別の記述を使うのか、それともパスがいけないのでしょうか ご回答お願いします
>>944 多分、読み込み前に変数にアクセスしてる。
その読み込みから数フレーム進んだ所で変数が取れるか見てみて。
onDataイベント使うといいよ
>>945 取れていませんでした。変わらずundefinedのままです
書き込みの単語から調べまして
クロスドメインポリシーファイルを置くと良いというページが出てきたのですが
それを使用しても解決できず
また同一フォルダ以下のフォルダから読み込むというのもあったので試したのですが無理でした
>>946 MC.loadVariables("ss.txt");
MC.onData = function(){
aplit処理
}
としていますがここに問題あるのでしょうか
>>948 ローカルで動くのにweb上では動かないんですよね。
属性の設定ではないでしょうか
FTTTPを使っているならファイルの右クリックで属性変更ってのがあります。
とりあえず全部にチェック入れてみる。
950 :
944 :2005/09/26(月) 22:50:52 ID:Ql4Iij6W
全て644から777にしてましたが変わらずでしたorz 情報ありがとうございます
>>950 同一ならクロスドメインは関係ないよ。パーミッションの問題でもないでしょう。
onData内でtraceしてもデータ来てないって状況?
952 :
944 :2005/09/26(月) 23:04:42 ID:Ql4Iij6W
すみません。ちょっとだけ進展を発見しました 相変わらず表示部分はundefinedと出るのですがムービー内の変数を表示させて見ると いつの間にかテキストからの変数自体は読み込んでる状態になっていて 実際はsplit処理で分けてるのに分かれてない状況(読み込んだ状態のまま)でした (948でaplitとなってますがミスです) その事を踏まえて再度ソースを見直してきます アドバイスありがとうございました
loadVariablesって、最近使ってないから忘れたけど、 mc.onDataとか発生するっけ? LoadVarsは試したみた? var myLoadVars:LoadVars = new LoadVars(); myLoadVars.onData = function(str) { textField.text = str; }; myLoadVars.load("ss.txt");
954 :
944 :2005/09/26(月) 23:09:38 ID:Ql4Iij6W
書き込みに気づいたので最後に FLASHとしては読み込んだデータを3つに分割して3つのダイナミックテキストに表示させている感じです 最初はtraceしても3つのDテキストに入れてる変数と分割前のデータが全てundefinedでした 今は分割前のデータは読み込まれている状況になっています >同一ならクロスドメインは関係ないよ。パーミッションの問題でもないでしょう。 ありがとうございます。この一言だけで確認作業がFLASH側に集中できそうです
>>952 そこまで出来てるなら念のために
MC.onData = function(d) {
if (d == undefined) {
trace("ERROR");
return;
}
//大丈夫ならパース処理
};
みたいなコード書いてここまで出来てるか調べたら?
みんな親切だね。見てて感動した。 ・゚・(つД`)・゚・
それがフラッシャークオリティ
>>953 が言うようにonData発生しないね、ってもう944が見てるかどうか分からないけど
959 :
Now_loading...774KB :2005/09/27(火) 10:32:43 ID:tAvq2wkF
すみません、質問させていただきます。 flashでサイトメニューとイメージが一緒になったものを作りまして、 現在はサイトの各ページに同じswfを埋め込んでいます。 この状態でページごとにイメージを変えたと思うのですが、 自分が埋め込まれているhtmlのアドレスを取得できないものでしょうか?
_url
961 :
959 :2005/09/27(火) 11:16:12 ID:tAvq2wkF
>>960 回答ありがとうございます。
ということは_urlでURLを取得してif〜で
ページごとにスタートするフレームを振り分ける
のでいいんでしょうか?
試行錯誤
963 :
959 :2005/09/27(火) 11:51:17 ID:tAvq2wkF
すみません、なかなかうまくいかないので、 再度質問させていただきます。 swfが埋め込まれたhtmlのURLは_urlで取得できるとの 事ですが、取得したURLごとに別々のフレームから再生 させるにはどのようなスクリプトを書けばようのでしょうか?
>>963 そういうことなら、呼び出すときに指定すればいいんじゃない?
html
aaa.swf?jumplabel=tobisaki
flash
_root.gotoAndPlay(jumplabel);
965 :
959 :2005/09/27(火) 12:04:12 ID:tAvq2wkF
>>946 _root.gotoAndPlay(jumplabel);のjumplabel
に入る値をそれぞれのhtmlで定義してやるってことですか?
ちょっと良く分かりません。すみませんorz
少しは自分で試してみようよ。
967 :
959 :2005/09/27(火) 13:34:33 ID:tAvq2wkF
すべては、 == が原因だったりして・・・
_urlはswfのurl。違うhtmlに同じswfを埋め込んでも違いは出ない。だからその方法は無駄。
>>967 ローカルでのチェックがやりにくいし、サーバーにアップしてからのテストも
キャッシュが働いて古いバージョンが実行されたりするから、
964の方法をオススメしておきます。
一つ教えてください。
ActionScriptを楽しく覚える講座
ttp://hima.chu.jp/flash/ActionScript/flash_as_point.htm このページの最初のトピック
> (1) 綴りの間違い〜FLASHは綴りミスを指摘してくれない!
の
> 『傾向と対策』
に
> ※ActionScript2なら、変数を使うのに必ず宣言が必要なので、つづりミスがあればエラーが表示されるので便利です。
とあるのですが、本当ですか!?
パブリッシュ設定でActionScript2.0を使うように設定していますが、変数は宣言しなくとも使えています。
もしかして筆者はclassメンバの事とゴッチャになっているのでしょうか?
973 :
959 :2005/09/27(火) 15:38:45 ID:tAvq2wkF
>>969 _urlで取得できるのはswfのURLだとゆう事は実験して理解できました。
(htmlのURLが取得できるもんだと思ってたから、振り出しに・・・)
で、
>>964 の方法を試しているのですが、
aaa.swf?jumplabel=tobisaki
というのはhtmlのobjectタグの中に書くのですか?
あと「tobisaki」のところに飛びたいフレーム数を書けばいいんでしょうか?
とりあえず分からないので適当にPARAM NAME=movie VALUE="○○○○"
とかEMBED src="○○○○"の○の所にaaa.swf?jumplabel=tobisakiを
入れてみたんですが動かないんです。
>>973 aaa.swfの中で、
_root.gotoAndPlay(jumplabel);
を実行すれば、
「tobisaki」と名前を付けたフレームにジャンプするはず。
>>973 htmlを自動生成した場合aaa.swfは2カ所あると思うけど、両方とも、aaa.swf?jumplabel=tobisaki
に修正すれば大丈夫なはず。
976 :
959 :2005/09/27(火) 16:34:07 ID:tAvq2wkF
HTMLの方は <PARAM NAME=movie VALUE="test.swf?jumplabel=tobisaki"> <EMBED src="test.swf?jumplabel=tobisaki"〜 と記述して、 test.swfの最初のフレームに_root.gotoAndPlay(jumplabel); 目的のフレームに「tobisaki」とラベルをつけたのですが、 動作しません、なんでだろ・・・orz ちなみに_root.gotoAndPlay(jumplabel);を_root.gotoAndPlay("tobisaki"); にするとちゃんと動作するので、フラ側は問題ないかと。
>>976 パブリッシュした時に毎回HTML吐き出してないか?
>>976 _root.gotoAndPlay(_root.jumplabel);
で、どうかな。うまくいかないなら、臨時のテキストフィールドでも作って、
内容を確認するとかだね。
979 :
959 :2005/09/27(火) 16:55:17 ID:tAvq2wkF
>>979 ソース内にgotoAndPlayが1つも無いけど・・・
981 :
959 :2005/09/27(火) 17:18:27 ID:tAvq2wkF
あっ、真ん中の黒いのがボタンになってて それに記述してます。 説明不足ですいません。
>>981 とりあえず最終フレームと途中にstop();入れると。
ルートのタイムラインにね。
983 :
959 :2005/09/27(火) 18:17:44 ID:tAvq2wkF
>>982 入れました!
・・・が、変わらずtobisakiには飛んでくれませんorz
IEのキャッシュをクリアとか
アダルトサイトの広告しか出てこないがこれは何かの嫌がらせですか?
>>983 ボタンを押すと、ちゃんと赤くなったよ。
987 :
959 :2005/09/27(火) 18:35:42 ID:tAvq2wkF
>>986 マジですか!
環境の問題なのかなー。
ちなみに私の環境はFlash5なのですが、
それがまずいのでしょうか?
988 :
Now_loading...774KB :2005/09/27(火) 18:41:14 ID:63cBhiiP
ラベル付けたフレームに飛ばす場合は""付けないか?
stop()を入れてテストすると、ちゃんと飛ぶね。
>>984 この辺かな?
>>987 バージョンは最初に書こうよ・・・。
で、そこにtrace(_root.jumplabel);入れたらどうなる?
traceじゃなくてダイナミックテキストで表示しないと意味なくない?
>>990 stop();を入れるのは最後のフレームと最初(?)でいいのですか?
あとキャッシュをクリアとはインターネットオプション→ファイルの削除ですべて削除にチェックいれて実行でおkですか?
>>991 大変申し訳ありませんorz
trace(_root.jumplabel);はどこにいれるのですか?
とりあえず
on (release) {
_root.gotoAndPlaytrace(_root.jumplabel);
}
としてみたがだめでした。
>>993 ちゃんと、htmlをダブルクリックして実行してる?
>>992 何のためにデバッグプレイヤーが存在してるとw
>>993 なあ。まず基本を勉強しようよ。
悪いけど何か考えて回答してるとは思えないよ。
頑張って少しのところで行き詰まってることには手をさしのべようと思うけど
考えない人にはこれ以上できないよ。
>on (release) {
>_root.gotoAndPlaytrace(_root.jumplabel);
>}
とりあえずこんな感じで。
trace(_root.jumplabel);
//_root.gotoAndPlay(_root.jumplabel);
>>997 おっしゃる通りですね。
申し訳ありませんです。。。
もうちょっと勉強しながらやってみます!
これだけ他の人の環境ちゃんと動いてるって事は、 ファイルには問題なかろう。 OS再起動したら、直ったとかそういうオチ?
1000!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。