ActionScript 誰かが物凄い勢いで解答するスレ 10
1 :
Now_loading...774KB :
2005/12/17(土) 22:37:28 ID:ewiHkFtb
2 :
Now_loading...774KB :2005/12/17(土) 22:42:30 ID:VKtsy4sO
2get orz
もしご存知の方がいらっしゃったら教えてください! XMLSocketを使ったクラアイアント + PHPで書いたサーバースクリプト間で ソケット接続して簡単なチャットを作って試してるんですが、しばらく放置 (10分くらいか?)すると反応しなくなるんですね。再度接続すれば繋げる ので、可能性は ・クライアントが勝手に接続を切ってる が一番高いのかなぁと今のところ思ってます。 ※特にサーバー側ではタイムアウトの処理などはしてません livedocを調べたら、 ------------------ connect() メソッドを呼び出すと、Flash Player はサーバーへの TCP/IP 接続を開き、次のいずれかのイベントが発生するまでその接続を 開いたままにします。 XMLSocket クラスの close() メソッドが呼び出される。 XMLSocket オブジェクトへの参照がそれ以上存在しなくなる。 Flash Player が終了する。 接続が切れる (モデムの切断など)。 ------------------ って書いてありまして。。。 ってことは定期的にダミーのデータでも送ればいいのかなぁ。。 何かご存知でしたらご教示くださいませ。よろしくお願いします。
>XMLSocket オブジェクトへの参照がそれ以上存在しなくなる。 原因はこれじゃない?
10 :
Now_loading...774KB :2005/12/18(日) 11:10:59 ID:Qwbx3tPM
ゼ○ダみたいなものを作ろうと思って下のようなスクリプトで攻撃を行うよう にしたのですが。 if (Key.isDown(90)) { this.gotoAndStop("初期") if (rot == 0) { this.gotoAndStop("右へ攻撃"); } else if (rot == 180) { this.gotoAndStop("左へ攻撃"); } else if (rot == 270) { this.gotoAndStop("後へ攻撃") } else if (rot == 90) { this.gotoAndStop("前攻撃") } これだと効果音を入れたときにキーを押したままにするとマシンガンみたいな 効果音になってしまうので、キーを押した瞬間だけ認証し、攻撃中にはキーを 認証しないようにするにはどのようにすればいいのでしょうか? 上記の物にスクリプト追加、もしくは攻撃系フレームにスクリプトを入れる形 でよろしくお願いします。
>>10 if(Key.isDown(90)&&attack==0){
攻撃
attack=1;
}
ID = setInterval(function(){
attack=0;
clearInterval(ID)},1000)
こうしておけば1秒後にattackが0になるまでは攻撃できない
setIntervalについて分からなかったら自分で調べてくれ
>>11 setInterval無しでattack=0;だけでいいだろ
attack==0は!attackの方がいい
attack=1;はattack=true;の方がいい
attack=0;はattack=false;の方がいい
>>12 まさかレスに対するレスが来るとは思わなかったが
setIntervalの位置がおかしかったので4行目の「}」を一番下にしてくれ、と追記
>>12 の下3行は個性。どっちでもいい
強いて言うなら分岐が2通り以上になる場合全部書き換えになるから
試行しながらやってるなら「==」の方が面倒は減るかと
14 :
Now_loading...774KB :2005/12/18(日) 13:38:07 ID:s0ErslKZ
教えてください。 ムービークリップのフレーム1に testvar=1; function test(){return 1;} と書いてtestmvの名前で配置、 rootのフレーム1に trace(_root.testmv.testvar); trace(_root.testmv.test()); と書いて実行すると、 1 undefined となるのはなぜなのでしょうか。 変数が呼び出せて関数が呼び出せないのが不思議でしょうがないのですが…。
rootのフレーム2に書いたらどうなる?
>15 何じゃこりゃああああああw背drfてゅじ:;@あせrdftgyふじこlpthx!
17 :
Now_loading...774KB :2005/12/18(日) 14:22:07 ID:wVTS6u6k
SharedObject.clear()ってFLASH MXでは使えないんですか?
18 :
Now_loading...774KB :2005/12/18(日) 15:01:46 ID:Mrjf+qbK
最近俺のPCは30秒規制になったがみんなもそうなのか? もし俺だけの場合、それはいつか変わるのか? それと以前アク禁になったのだが次の日は普通にできたのだが変化はあるのか? それと1回スレを立てると次に立てれるようになるまで何日かかる?
なにこの精子
20 :
Now_loading...774KB :2005/12/18(日) 16:33:19 ID:Qwbx3tPM
>>11 ,12
返信ありがとうございます。
とりあえずsetIntervalに調べてみてどういう物かなんとなくわかったので
を使ってみたんですけれど、エラーが出まくりですね。
下のがそのスクリプトですが、修正をお願いします。
if(Key.isDown(90)&&attack==0){
this.gotoAndStop("ya")
if (rot == 0) {
this.gotoAndStop("yaright");
} else if (rot == 180) {
this.gotoAndStop("yaleft");
} else if (rot == 270) {
this.gotoAndStop("yaback")
} else if (rot == 90) {
this.gotoAndStop("yafront")
attack=1;
ID = setInterval(function(){
attack=0;
clearInterval(ID)},1000)
}
>>20 ただ{}が閉じれてないだけ。
ここは修正してもらうスレじゃなくて間違ってる箇所を指摘してもらう所だから。
直すのも勉強だと思ってまず自分で頑張ってみれ。
Windows98SE、FlashMX2004でFLASHサイトを作成中なのですが、
最初にHTMLで左右にフレーム分けをして、FLASHを置いたmenu.htmlを左フレームに配置し、
main.htmlを右フレームに配置し、左フレームのFLASHの操作で、右フレームのページを切り替える、
といったことはできるのですが
FLASHでサイトの大枠を作り、そのFLASH内にインラインフレームを埋め込み、
そのFLASHの操作でフレーム内のページを切り替える、といったことはActionScriptで可能でしょうか?
サイト構成のイメージとしてはkawachoさんの
ttp://orangeage.x0.com/ といったFLASHデータの中に、
htmlファイルを埋め込めるようなインラインフレームを作る方法はありませんか?
宜しくお願いします。
>>22 Flash内にiframeは埋め込めない。
別窓で開くとかにするしかない。
>>23 解答ありがとうございます!
試行錯誤して前者の方法で作ってみます。
>>22 Flashにインラインフレームを埋め込むんじゃなくて、ふつうはFlashにMCやコンポーネント配置して
そこでHTMLテキスト表示するとか、とにかくフレーム内で表現したいようなことをやるってもんじゃない?
>>25 なるほど。インラインフレームを使わないでHTMLテキスト表示をすればできそうですね。
外部txtファイルを読み込む方法はわかるのですが、htmlも同様のことができるんですか?
ていうかFlashとHTMLをごっちゃにするのはやめてくれ
>>27 すいません。Flashオンリーで作れるように工夫してみます。ありがとうございました。
29 :
Now_loading...774KB :2005/12/19(月) 01:03:44 ID:m59ktubX
ループ再生のOn/Offを変更するメソッドがありましたら、教えて下さい。
stop();
質問なのですが、 キャプチャしたパケットデータをリアルタイムでswfに書き出すことってできますか?
32 :
Now_loading...774KB :2005/12/19(月) 13:26:22 ID:CvFsbmD5
dekiruyo でも質問するような人では作れないよ
ただの煽りは失せろ
-------------- EaseTo.as -------------- import mx.utils.Delegate; class EaseTo { var mc:MovieClip; var fps:Number = 12; var px:Number; var py:Number; var easeTimer:Number; function EaseTo(targetMC:MovieClip, n:Number) { if (n != undefined) { fps = n; } } function startEase(x:Number, y:Number):Void { px = x; py = y; //clearInterval(easeTimer); //easeTimer = setInterval(this, "nextPoint", 1000 / fps); //↓こうしてみた mc.onEnterFrame = Delegate.create(this, nextPoint) }
↑のつづき function nextPoint():Void { //水平垂直のどちらかの距離が0.3より大きいかどうか if ((Math.abs(px - mc._x) > 0.3) || (Math.abs(py - mc._y) > 0.3)) { //距離を1/3だけ詰める mc._x += (px - mc._x) / 3; mc._y += (py - mc._y) / 3; } else { //インターバルの消去 clearInterval(easeTimer); //正確な最終位置に移動 mc._x = px; mc._y = py; } } }
----------------- EaseTo.fla ----------------- ballというmcを_rootのステージに配置、 1フレーム目に、 var myBall:EaseTo = new EaseTo(ball); _root.onMouseDown = function() { myBall.startEase(_xmouse, _ymouse); }; と記述。一応ballはクリックした所に移動します。setIntervalでnextPointメソッドを動作させるのがなんか気持ち悪くて、 いろいろ調べてDelegateクラスというものを使ってみたんですが、使い方としてはこれで正しいのでしょうか? もっと良い方法などありましたらアドバイス下さい。 宜しくお願い致します。連投&長文すまそごめんマルチっぽいけど
>>37 まず、どういう事をやりたいか、を書かないと誰も答えられないぞ。
しかもマルチっぽいって。。。。
>>1
40 :
Now_loading...774KB :2005/12/21(水) 15:57:49 ID:1cGHtbsc
すいません、質問させてください。 Flash8のActionScriptで外部からJPG画像を数十枚読み込むFlashを作り、HTMLの中に埋め込んだのですが、 WindowsのIE6でページ読み込むと、そのページのFlashでないgifなどの画像が多数読み込めなくなります。 リンクも間違ってないので、右クリックで画像を表示を選ぶと表示されます。 FirefoxやOperaなど他のブラウザでは正常に読み込めました。 試しにFlashでの外部からの画像読み込みをなくすと正常に読み込めます。 どうやったら画像をすべて正常に表示させることが出来るでしょうか? よろしくお願いいたします。
>>40 FirefoxやOperaなど他のブラウザを使う
>>40 キャッシュクリアしてみるといいかも。
あと、多数のというのは良くないよ。5枚で多数かもしれないし、
サムネイル100枚かもしれないしね。
43 :
40 :2005/12/21(水) 16:49:25 ID:1cGHtbsc
レスありがとうございます。 キャッシュのクリアも何回も試してみましたが無理でした。 読み込める画像の数は毎回変わりますが、GIFが10枚も読み込めていません。 フォーマット変えることも試して見ましたが、画像の容量なども関係なさそうです。 あと、重要な事を書き忘れていたのですが、 同じフラッシュを使ったページをローカルで開いた場合も何の問題もなく表示されます。 インターネット上にアップロードした場合にのみ不具合が発生します。 転送モードも問題ないと思います。
なんだろうね。画像は全部同じドメイン上にあるの?
症状が再現する小さなプロジェクトを作って、upしないと分からん。 具体的なscriptさえ書いてないし。
46 :
課題でテンパリ :2005/12/21(水) 22:56:48 ID:iztakU39
ボタンの中に下記のようなスクリプトを書いて、動作させていたのですが、 on(press){ _root.flg = 1; gotoAndStop("main"); } マウスクリックの変わりにキーボードのaを押した場合にしたくて、 on (rollOver) { if (Key.isDown(65)) { _root.flg = 1; gotoAndStop("main"); } } と書いて、スクリプトエラーにならなかったのですが、上手く動きません。 わかる方教えていただけませんか?
47 :
Now_loading...774KB :2005/12/21(水) 23:12:48 ID:mfQnTiRs
on (rollOver) { とあるのでマウス乗っけながらa押したらいけるはずです キーボードで操作したいならふつうは シンボルをムービークリップにして onClipEvent(enterframe){ if(Key.isDown(65)){ _root.flg=1; gotoAndStop("main"); } } と書けばいいと思います けど僕は初心者なんで間違ってるかもしれません
>>45 それだとロールオーバしたときにaが押されているかを判定している
MCでキーリスナー使う事を進める
ASでわからないことが、あるので質問します。 マリオのような、アクションゲームを作ろうしているのですが、 キャラクタと地面の当たり判定がよくわからないのです。 使ってるのはソフトはparaflaです。 知っている方、入ましたら、よろしくお願いします。
質問です。Macromediaの「Flash / JavaScript Integration Kit」を使ってJavaScriptの連携を試みているのですがさっぱり動作しません。
詳しい方おりましたらどなたかご教授ください、お願いします。
1.FlashのダイナミックテキストにJavaScriptの関数を呼び出して"1"を表示
2.次にHTMLからのクリックでFlashの関数を呼び出してダイナミックテキストに"2"を表示
[HTML部分]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd ">
<html><head><title>hoge</title><meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<script type="text/javascript" src="JavaScriptFlashGateway.js">< /script>
<script type="text/javascript">
var uid = new Date().getTime();
var flashProxy = new FlashProxy(uid, 'JavaScriptFlashGateway.swf');
function javaHoge(){ var a = 1;return a; }
</script></head>
<body><script type="text/javascript">
var tag = new FlashTag('hoge.swf', 100, 100);
tag.setFlashvars('lcId='+uid);
tag.write(document);
</script><a href="javascript:flashProxy.call('actionHoge', 2);">submit</a></body></html>
[Flash部分]
import com.macromedia.javascript.JavaScriptProxy;
var proxy:JavaScriptProxy = new JavaScriptProxy(_root.lcId, this);
this.createTextField("textBox", 1, 0, 0, 100, 20); textBox.type = "dynamic"; textBox.text = proxy.call("javaHoge");
function actionHoge(a:Number) {textBox.text = a; }
>>50 キャラクタと地面の判定だけならy座標の比較だけで出来る
53 :
40 :2005/12/22(木) 13:42:44 ID:AEuypLx9
自己解決しました。 原因はFlashからjavaScriptを実行してHTMLを書き換えていたせいだと思います。 HTMLの読み込み最中にそれが行われたために、正常にHTMLが読み込めなかったのかもしれません。 Flashで読み込む画像が多いせいだと思っていたのですが、見当違いだったようです。 javaScriptで最初にHTMLをすべて読み込んだあとにFlashを読み込むことで正常に表示されました。 ありがとうございました。
教えてください。 swfをブラウザいっぱいに表示する設定( width="100%" height="100%") で、伸縮は「すべて表示」となっている際に、実際に表示された倍率を 取得することは可能でしょうか。
>>52 レスありがとうございます。
調べて、がんばってみたいと思います。
JavaScript側で拾った方が早い。
58 :
Now_loading...774KB :2005/12/25(日) 01:44:39 ID:JtIhnSB+
._xscaleと._yscaleでMCの大きさをいじってから 拡大縮小後のMCのwidthとheightの取得って出来ませんかね? 試しに50%に縮小したMCのwidthとheightをtraceしてみたけど 元の大きさが出てきちゃった。
59 :
Now_loading...774KB :2005/12/25(日) 02:08:55 ID:IQu6GSqd
>>58 だめなら計算すればいいんじゃない?
//scaleNumは倍率(単位%
MC._xscale = scaleNum;
MC._yscale = scaleNum;
widthNum = (MC._width/100)*scaleNum;
heightNum = (MC._height/100)*scaleNum;
trace(xnum+","+ynum);
60 :
59 :2005/12/25(日) 02:11:17 ID:IQu6GSqd
trace(widthNum+","+heightNum); だった
>59 thx! そうか計算か、見落としてた。 その方法で算出出来ました。 が、よくよく最初のソースを見たら _width、_heightと_x、_yを間違えてたorz そりゃ値変わらねぇはずだよ… ともあれ答えてくれてありがとうございました。そしてスマソ
62 :
Now_loading...774KB :2005/12/25(日) 14:44:50 ID:Y+aVHtic
flash8を使っています 質問させてください 以前のフラッシュのバージョンでも 雪を降らせたり 雨を降らせたりスクリプトでやってたんですけど 今回ビットマップキャッシュという機能が追加されたみたいなので 雪を積もらせたり出来るのではないかと重い色々検索してみましたが それらしきサンプルは見つけることが出来ませんでした 雪を降らせて 地面に雪が積もる 積もる量にかかわらず 処理が重くならないようにというのは flash8でも無理でしょうか?
>>62 まず雪を積もらせるのとビットマップキャッシュはほとんど無関係。
何故なら積もってる雪は、ほとんど動かないから。
その程度なら前のバージョンでも十分作ることは可能
むしろ雪が降る方に関係する。
しかし雪の形が複雑でかつ降らす数が多い場合とかでないと効果は発揮しない
ビットマップキャッシュの機能自体を調べなおすことをおすすめする
影響しまくりだろ。お前が調べなおせよマジで。
66 :
62 :2005/12/25(日) 21:06:22 ID:SwrESjXN
cacheAsBitmapに限定して言ってたのか。てかサンプル山ほどあるだろ。 てっきりビットマップクラスとか使ったパーティクル表現のサンプル調べてんのかと思タヨ
68 :
Now_loading...774KB :2005/12/25(日) 23:27:40 ID:ISm2wN6d
製作に行き詰っていろいろなサイトを調べたのですが どこを調べても解決法が見つかりません どうかご教授おねがいします 〜〜〜 matrixObj = {matrixType:"box",x:0,y:600,w:700,h:0,r:Math.PI}; m_color = op_txt.firstChild.attributes.fillbgcolor; colors = [ m_color , m_color ]; _root.fillgroup.beginGradientFill("linear" ,colors, [100,0] , [0.2*5,0.9*150] , matrixObj); 〜〜〜 四角にグラデーションを書くプログラムを作ったのですが 色を指定(m_color)するのに外部XMLの値を使っているのですが *外部XML* fillbgcolor="0x00ff00" 外部XMLで指定しても黒色しか表示されません colors = [ m_color , m_color ]; の部分を colors = [ 0x00ff00 , 0xff0000 ]; にするとうまくいくようなのですが・・・ 真下のラインでtrace( m_color );トレースしても0x00ff00と出力されます
問題を切り分けないと。 colors = [0xFF0000, 0x0000FF]; で動かない? XMLを読み込む前に描画してない?
70 :
Now_loading...774KB :2005/12/26(月) 00:12:02 ID:zmgQZvfq
>>69 colors = [0xFF0000, 0x0000FF];
これで普通に動くみたいです
XMLに関しては
m_xml = new XML();
m_xml.ignoreWhite = true;
m_xml.load(page_xml);
m_xml.onLoad = function(ok){
if(ok == true){
のIF文の中にさっきのコードを書いているので大丈夫なはずです
半角全角も一応しらべてみたのですが何の異常もないみたいです。。。
>>70 trace("0x00ff00"==m_color)
でtrueになる?
72 :
Now_loading...774KB :2005/12/26(月) 00:24:45 ID:zmgQZvfq
コード 〜〜〜 _root.fillgroup.lineTo(0,0); _root.fillgroup.endFill(); _root.fillgroup.swapDepths(_root.name_obj); } trace(m_color); trace("0x00ff00"==m_color); } 〜〜〜 出力 0x00ff00 true なるみたいです。。。
ストリングに変換してるか。 m_color = m_color.toString()
colors = [String(m_color), String(m_color)]; これのが分かりやすいか。
>>72 あ、わかった。数値だ。
m_color = Number(op_txt.firstChild.attributes.fillbgcolor);
76 :
Now_loading...774KB :2005/12/26(月) 00:55:36 ID:zmgQZvfq
m_color = op_txt.firstChild.attributes.fillbgcolor.toString; colors = [String(m_color), String(m_color)]; m_color = new Number(); m_color = op_txt.firstChild.attributes.fillbgcolor; m_color = new Number(op_txt.firstChild.attributes.fillbgcolor); どれをやってみても黒しか出力されないみたいです。。。orz
俺は動いてるけど。簡単なfla作れる?
import com.xfactorstudio.xml.xpath.*; myDoc = new XML(); myDoc.onLoad = function() { m_color = XPath.selectNodes(this, "/colors/color/@fillbgcolor"); a(m_color); }; myDoc.load("a.xml"); function a(m_color) { this.createEmptyMovieClip("gradient_mc", this.getNextHighestDepth()); with (gradient_mc) { colors = [String(m_color), String(m_color)]; fillType = "linear"; alphas = [100, 0]; ratios = [0.2 * 5, 0.9 * 150]; matrixObj = {matrixType:"box", x:0, y:100, w:200, h:200, r:Math.PI}; beginGradientFill(fillType, colors, alphas, ratios, matrixObj); moveTo(100, 100); lineTo(100, 300); lineTo(300, 300); lineTo(300, 100); lineTo(100, 100); endFill(); } }
>>76 Flashの場合Number型で宣言しても文字列入っちゃうよ。
trace(typeof (m_color));
で見てStringが返ってきてない?。
>>75 と同じ書き方で。 Number(〜〜.fillbgcolor)
newはいらない。
81 :
Now_loading...774KB :2005/12/26(月) 01:36:47 ID:zmgQZvfq
>>78 XPathという指定の仕方があるのですか!
試してみたのですがうまくいかなかったです。。
>>80 どうやらStringで返されてたようです
Numberで囲んだら自分が画いたように表示されました!
自分の勉強不足で時間を食わせてしまいすいませんでした
手伝って頂いて本当にありがとうございました
色々と教えて頂いたので
次はXPathの勉強をしようと思います
64のflashが真っ白の背景しか映らないんだが・・・
84 :
Now_loading...774KB :2005/12/26(月) 14:10:57 ID:x+CWw1w5
簡易ペイントを作成しています。黒丸を順次duplicateするタイプの奴です。 質問ですが、シーン1で複製した黒丸の状態をシーン2に引き継いだり出来ないでしょうか? 出来なければ複製座標を配列に保存して再複製するしかないかと考えています。 OS9 FlashMX プレイヤー5書き出しです。 宜しくお願いします。
>>84 普通にできるよ&シーン使わない方がいいよ&スレ違いだよ
87 :
84 :2005/12/26(月) 17:13:15 ID:x+CWw1w5
うわあすいませんすいません。シーンを使わないってのが最近の定番なのでしょうか?! 全然知りませんでした。何故だか出来ないんで、配列使うしか思いつきません。 スレ違いって事ですが、スクリプト関係はここかなぁと思ったんですが…(´Д`;)
88 :
Now_loading...774KB :2005/12/26(月) 17:24:11 ID:dE+ADWcZ
>シーンを使わないってのが最近の定番なのでしょうか?! 最近というか、Flash5からだな。
89 :
Now_loading...774KB :2005/12/26(月) 17:36:33 ID:Zg6lw+fY
ご質問です。 メニューボタンにスクロール時に音を付けたのですが このボタンの上を速くオーバーすると音が大きくなってしまいます。 これの対処法ってありますでしょうか?
90 :
89 :2005/12/26(月) 17:56:05 ID:Zg6lw+fY
質問するスレを間違えました。すいませんです。
91 :
Now_loading...774KB :2005/12/27(火) 09:30:34 ID:W3z3Aqly
class hogehoge extends MovieClip { var my_lv: LoadVars; … function piyopiyo() { … var str = "my_lv.variable1"; // ※ var foo = eval(str); // ※ trace(foo) … } … } my_lv でロードを行った後、 hogehoge.piyopiyo() を実行すると、何故か undefined が出力されてしまいます。 variable1 はロードする変数で、my_lv のロードは正常に終了しているはずです。 その証拠に、※の部分を、 var foo = eval("my_lv.variable1"); としても、 var foo = my_lv.variable1; としても、正常に出力されます。(要するに、undefined とは表示されない) 何故か上記のソースのときだけ、foo に正常な値が代入されないんです。原因を教えてください。
my_lv.variable1という文字列をevalしたってそりゃ、そのまま出てくるだろ。
93 :
91 :2005/12/27(火) 10:23:19 ID:W3z3Aqly
いえ、 var foo = eval("my_lv.variable1"); としたり、 var foo = my_lv.variable1; としたりした場合は、中身がそのまま返ってくるのですが、 var str = "my_lv.variable1"; var foo = eval(str); とすると、何故か undefined しか返ってこないです。
var str = "my_lv.variable1"; var foo = eval("str"); trace(foo);
95 :
91 :2005/12/27(火) 10:38:44 ID:W3z3Aqly
>>93 これでは foo に str の中身が格納されてしまいます。
私が言いたかったのは、
var str = "my_lv.variable1";
var foo = eval(str);
と
var foo = eval("my_lv.variable1");
は等価であるはずなのに、何故か違った動作をするということですよ。
>>95 evalの引数がstrであるか"str"であるかの違いがわかる?
97 :
91 :2005/12/27(火) 10:43:33 ID:W3z3Aqly
98 :
91 :2005/12/27(火) 10:47:38 ID:W3z3Aqly
>>96 わかりません。どのようなものでしょうか?
>>99 横レスだが、正直その記述のなにが、
>>95 の違いをうむのかさっぱりわからないな。
配列アクセス演算子の場合、
var str = "my_lv.variable1";
var foo = this[str];
と
var foo = this["my_lv.variable1"];
は等価な動きをしたはずだろ? なんでevalだと等価じゃないねん。
実験 var my_lv = new LoadVars; my_lv.variable1 = 1; var str = "my_lv.variable1"; trace(eval(str)); trace(eval("my_lv.variable1")); trace(my_lv.variable1); 結果 1 1 1
evel()なんて使わなけりゃいいじゃんか そんな機能のメソッドがない言語出身なので気にしたこともないよ
>>101 を受けて、さらに実験。
var my_lv = new LoadVars;
my_lv.variable1 = 2;
var str = "my_lv.variable1";
trace(eval(str));
trace(eval("my_lv.variable1"));
trace(my_lv.variable1);
var foo = eval(str);
trace(foo);
foo = eval("my_lv.variable1");
trace(foo);
foo = my_lv.variable1;
trace(foo);
結果
2
2
2
2
2
2
結論1.
>>95 の使い方で、やっぱりeval()は等価な動きをしてくれる。
結論2.
>>91 がやってるのはスペルミスかなにか。
結論3.ID:V46A8gwQは見当違いなレスばかりしていた。
うーん、なんか、変な風に取られてるけど、漏れの言いたかったのは 以下の違いはどうなの?ってことなんだ。見当違いだったらスマン。 var str = "my_lv.variable1"; var foo = eval("str"); trace(foo); var foo = eval(str); trace(foo);
105 :
91 :2005/12/27(火) 12:36:59 ID:W3z3Aqly
>>99 事前調査をせずに質問するほどバカではありません。
調べても記述されている内容がわからなかったから、「わからない」と申し上げたのですが。説明不足ですみません m(-_-)m
リンク先にはヘルプと同じ内容が書かれていました。
>>100 示されたソースで試したところ、こちらは等価な動作をしました。
こちらで代用できないか検討してみます。
>>101 >>103 その処理をどこに記述したか教えていただけるでしょうか?
なお私は、恐らく、問題はクラス内の関数内に処理を記述したことに起因しているのではないかと踏んでいます。
>>102 eval の使用はできるだけ避けていたのですが、今回は使わざるを得ない状況でした。
今は、
>>100 に示していただいた配列アクセス演算子を使った方法で代用できないかと検討中です。
ちなみに私は C 出身です。
>>104 出力結果(my_lv.variable1 = 123 として):
my_lv.variable1
undefined
意図していた結果(123)とは違うようです。
106 :
101 :2005/12/27(火) 12:41:47 ID:dK0r+5lZ
>>105 単にフレームにそれだけ書いて実行しただけです。
なので、クラス内での書き方ではなく、
var my_lv = new LoadVars;
という宣言になっています。
107 :
91 :2005/12/27(火) 13:11:41 ID:W3z3Aqly
>>106 わかりました。
フレーム内に、示されたとおりのソースコードを記述したところ、
>>101 と同じ実行結果を得ました。
やはり、原因はソースそのものではなく、書いた場所にあるのではないかと思います。
念のため、問題のソースコードを載せたサンプルを上げておきます。
私の環境が悪いということも考えられますので、ご自身の目で確かめてください。
http://simfan.cn1.jp/other/flash/bug_eval.lzh 圧縮ファイル内には、次のサンプルがあります。
- sample_a.fla
>>101 の実験ソースを、
>>106 の通りフレーム内に記述したものです。
私の環境での実行結果:
1
1
1
- sample_b.fla , Hogehoge.as
>>101 の実験ソースを、今度は場所を変えて、クラス内の関数内に記述したものです。
私の環境での実行結果:
undefined
1
1
尚、私が使用しているのは、Flash MX Pro 2004 です。
108 :
103 :2005/12/27(火) 20:31:44 ID:O1q63UuZ
>>107 function piyopiyo() {
my_lv.variable1 = 2;
var a = "my_lv";
var b = "variable1";
trace(this.my_lv.variable1);
trace(this.my_lv["variable1"]);
trace(this.my_lv[b]);
trace(this["my_lv"]["variable1"]);
trace(this["my_lv"][b]);
trace(this[a]["variable1"]);
trace(this[a][b]);// -------------------注1
trace(my_lv.variable1);
trace(my_lv["variable1"]);
trace(my_lv[b]);
var str = "this.my_lv.variable1";
trace(eval(str));
//trace(eval("this.my_lv.variable1"));// ←このコメントを外すとスクリプトエラー
var tmp1 = "this.my_lv";
trace(eval(tmp1).variable1);
trace(eval(tmp1)["variable1"]);
trace(eval(tmp1)[b]);
var tmp2 = "this";
trace("--");
trace(eval(tmp2).my_lv.variable1);
trace("--");
trace(eval(tmp2)["my_lv"]["variable1"]);
trace(eval(tmp2)[a][b]);// -------------------注2
}
109 :
103 :2005/12/27(火) 20:34:59 ID:O1q63UuZ
>>108 で書いたやつ、全部通った(出力がすべて2)。
thisをつければいい、という結論ですな。
で、注1や注2みたいな、多段階の変数にして取り扱うのが一番無難じゃないかなと。
eval()は、まあ特に必要ないかもね。
2割くらいしか読んでないけど、 とりあえずスコープの勉強したらいいんじゃね
111 :
82 :2005/12/28(水) 05:30:25 ID:Y7Qd0qBM
>>83 あり。
ところで関数から抜け出す exit(); 見たいなのって
ASだとなに?
>>111 多分だけど、「抜け出す」だからgoOut();ジャマイカ?
>>111 関数から抜けたいだけなら、returnを活用。
exit()みたいに、完全にPlayerまで落としてしまうような危険なものはない。
getURL("javascript:window.close()"); これでウィンドウ閉じられるよ もちろん警告出るけど
115 :
91 :2005/12/28(水) 13:10:45 ID:bRITFHxf
>>108 >>109 ありがとうございました。
原因そのものは依然として不明ですが、とりあえず、配列アクセス演算子を使用した手法を用いることで、回避をしたいと思います。
>>115 evalは、なんか知らないけど上手く動かない時があるよ。
配列アクセスが確実。
おー、なんか豆知識的おばあちゃんなTipsだな。 俺横からだけど検証してくれた人感謝する。
118 :
Now_loading...774KB :2005/12/28(水) 18:12:20 ID:7F4Icg3I
ActionScript初心者です。
次のような配列を作りたいのですが、宣言ってどうやるのでしょう?
また、もっとよいデータの格納方法があったら助言下さい。
top[0].menu[0].title = "top0_menu0";
top[0].menu[0].submenu[0].title ="top0_menu0_submenu0_title";
top[0].menu[0].submenu[0].url ="top0_menu0_submenu0_url_
http:// ";
top[0].menu[0].submenu[1].title ="top0_menu0_submenu1_title";
top[0].menu[0].submenu[1].url ="top0_menu0_submenu1_url_
http:// ";
top[0].menu[1].title = "top0_menu1_title";
top[0].menu[1].url = "top0_menu1_url_
http:// ";
top[0].menu[2].submenu[0].title = "top0_menu2_submenu0_title";
top[0].menu[2].submenu[0].url = "top0_menu2_submenu0_url_
http:// ";
top[0].menu[2].submenu[1].title = "top0_menu2_submenu1_title";
top[0].menu[2].submenu[1].url = "top0_menu2_submenu1_url_
http:// ";
よろしくお願いします。
マニュアル読んでください。 ここで聞くより、正しいことが分かるはずです。。
>>118 人が作ったプロジェクトを修正する事になって、ソースがこれだったら泣くな。
>>118 これはまた・・・。119に激しく同意だ、何か本を読んだほうがいい
配列扱う前に基本からじっくり学ぶ事を進める
123 :
Now_loading...774KB :2005/12/29(木) 00:56:00 ID:iLDTtVXY
118です。 ソースは多層に成ってる事を表現したかったので、このまま使うわけではないんです。 3層や4層の入れ子になっているデータって、どのように取り扱うといいんでしょう。 2層まではArrayとObjectつかったものが、本に載ってたんですがそれ以上が見つからなくて。 なんかいい本ありませんか?
125 :
Now_loading...774KB :2005/12/29(木) 01:15:07 ID:gaLtjZGW
ソフト=FlashMX2004,OS=Win98SE FlashMX2004で扱えるファイル形式について質問です。 テキスト形式の元ファイル(複数個のTxt:data1.txt,data2.txt,・・・,datax.txt) を1つにまとめた後、この名前を「txtName」などとして、ボタンアクション on (press) { System.useCodepage = true; this.loadVariables(txtName+".txt"); } で読み込みたく思っています。しかし、元の data1.txt,data2.txt,・・・ を 1つにすると50kBくらいになり、1つのテキスファイルに収まりません(上限が35kB程度)。 仕方なくrtfファイルに纏めようとしましたが、今度はFlashMX2004がrtf形式に 対応してません。 絵柄なしで文字のみのファイルですが、50kB以上でも読み込めるファイル形式は ありますか? 分割して読み込ませるのは、なるべく避けたいです。
126 :
Now_loading...774KB :2005/12/29(木) 01:27:14 ID:iLDTtVXY
118です。 中身が決まっていない、多次元配列の宣言ってどうやるんでしょう。 ヘルプには var ticTacToe:Array = [[1,2,3],[4,5,6],[7,8,9]]; というようなのがあるんですが、後から何層になっているか解らない外部データを読み込みたい場合はどうするんでしょう。
127 :
Now_loading...774KB :2005/12/29(木) 01:59:53 ID:ByWEXBKN
ボタンをドラッグできるようにしたくて on (press) { this.startDrag (); } on (release, releaseOutside) { this.stopDrag (); } と書いたら、背景ごと動いてしまいました。 thisじゃなくてボタンの名前を指定してみたりもしたんですがダメでした。 どうしたらボタンだけ動かせますか? とんでもなく低レベルなこと聞いて申し訳ありません。 FlashMX・WinME
>>125 テキストファイルの上限が35kb?そんな訳あるか。
とりあえずloadVariablesじゃなくLoadVars使え。
>>126 オブジェクトを走査して値を取得する
再帰処理の関数作ってforかfor..inでチェックすりゃいい。
>>127 ボタンのままじゃ動かせない。
ボタンをムービークリップにして名前を付ける。
仮にbtn_mcという名前にしたなら、
btn_mc.onPress = function(){ this.startDrag(); }
btn_mc.onRelease = function(){ this.stopDrag(); }
でOK。
>>129 それは古い書き方だな。Flash5の時のだと思う。
もちろんサポートされてるけど、ASも進化してるし、
できたら、128みたいな、フレームワークで最新の書き方を覚えた方がいいよ。
131 :
Now_loading...774KB :2005/12/29(木) 09:34:41 ID:j58wRsQC
>>128 118です。
返答ありがとうございます。
再起処理をした後のデータを多次元に代入したいのですが、その宣言方法がわからないんです。
ActionScriptの多次元配列は使わないほうがいいということでしょうか?
やりたいことは再起処理でムービークリップを子、孫、ひ孫、と複製する方法で解決したのですが、
多次元配列に関することは分からなかったので、ひきつづき質問いたしました。
なにぶん初心者なんで分からない事だらけです。
>>131 配列宣言は最初のだけでいいっしょ。あとは、次元増やすごとにnewするだけで。
var aa:Array = new Array();
for (var i = 0; i<10; i++) {
aa[i] = new Array();
for (var j = 0; j<10; j++) {
aa[i][j] = i*100+j;
}
}
trace(aa);
>>131 配列の中に配列を作るのが多次元配列。
var array:Array = new Array();
array[0] = new Array();
array[0][0] = "test";
trace("array[0][0] = " + array[0][0]);
>ActionScriptの多次元配列は使わないほうがいいということでしょうか?
ActionScriptに限らず多次元配列を使用するのは
表形式のデータを格納する2次元配列に限定した方がいいよ。(ソースの可読性を上げるため)
3次元4次元になりそうだったら、他の設計を考える。
134 :
Now_loading...774KB :2005/12/29(木) 11:12:59 ID:j58wRsQC
>>132 >>133 ご返答ありがとうございます。ソースまで付けて頂いて感謝いたします。
理解できました。次元を増やそうとする時に宣言し直そうとしていたので、
エラーが出ていたようです。教えて頂いたようにしたら出来ました。
3次元以上になりそうな場合は、設計を考え直したほうがいいんですね。
再考してみます。
重ね重ね丁寧なご返答ありがとうございました。
135 :
125 :2005/12/29(木) 14:02:41 ID:AUIJ+vsg
>>128 テキストファイルの上限が35kb?そんな訳あるか。
>>128 とりあえずloadVariablesじゃなくLoadVars使え。
有難うございます。
OSのせいか、30〜35kB位になると必ず「メモリーの上限〜」というメッセージが
現れ、書き込めなくなるためです。LoadVarsを使ってみます。
>>135 テキストエディタは何使ってる?
メモ帳使ってるならそれ以外でやってみ。
後、拡張子をtxt以外に変えてみるとか。
var dat = new LoadVars()
dat.load("ファイル名")
dat.onLoad = function(s){
if(s){
trace(dat)
}
}
これで読めるから。
137 :
Now_loading...774KB :2005/12/29(木) 16:23:08 ID:NJQyUx5j
txtをまとめる理由ってあるのかな?DLのため?
すばやく答えてくださいね。 童貞ですか?
いえ
素人は・・・
リスナーについて質問です。 リスナーを学んでいて思った事なのですが keyon.onKeyDown = function(){ if(Z){ Z処理 } if(X){ X処理 } if(Y){ Y処理 } //Z:Key.getCode==90の省略 } このような処理の場合、3つ同時に押すとfunction内部の処理が3ループしてる事が分かりました。 読んだサイトでは押した場合に処理するという点で処理が軽くなると記述がありましたが 例えばレーシングゲームのように加速ボタンを押しながら左右キーを押すなど 「何かのキー押しっぱなし+移動操作」のようなものだとfunctionを一度に何度も実行するので処理は増えると思いました こういったものにはリスナーは向いてないのでしょうか?それともキー個別に指定できたりするのでしょうか?
押しっぱなしを診たいならonEnterFrameでKey.isDown
>>142 レスどうもです。
しかし要点は「同時押しする場合処理の重複がある点(
>>141 ですと3つ押しでif判定が9回)から
リスナーの一部をいじると対応できるのか」です。
できない場合はリスナーは向いてないという事になりますね。
リスナーのイベント等を検索して調べてるのですが見つからないため質問しました。
>>143 CPUがGHzの時代に数回のifのコストを気にしても意味がないと思いますよ
>>144 確かに気にする程の事ではないですね。
処理を気にして・・・というより何かそういう部分が消したい性分みたいです。
調べても出てこないですし_root["func"+Key.getCode]()なんて謎のやり方思いついたので中身を工夫してみる事にします。
変な質問すいませんでした。
関係ないですが
>>144 氏のIDが「ギガバイトだから」と読めてちょっと和みました(書き込みはヘルツだけどw
>>145 Windows自体、keydownでイベントを受け取った後、
押したキーで条件分岐してるし、普通そんなもんなんじゃないの。
147 :
Now_loading...774KB :2005/12/30(金) 12:45:31 ID:DQA12USo
>>136 Thxです。Txtエディタはメモ帳です。
>>137 txtをまとめる理由ってあるのかな?DLのため?
最終目的は、全Txt中から目的の文字列を検索することです。しかし元Txtの作成上、
複数個のTxtが存在し、1つにまとめた後で検索しようと思ったためです。
。。。。あ〜、今気付きましたが、data1.txt,data2.txt,・・・,datax.txt
を1つに纏めなくても、配列やforで順番に検索すればいいのでは?(←自己レス)
とにかくレス有難うございます。
ムービークリップBodyがあって、その中にArm,Legがあります。 矢印右キーを押したら"WALK"へ飛んで再生、離すと"STAND"へ飛んで再生、といったように出来るようにしたくて Arm,Legそれぞれに、 Action=new Object(); Action.onKeyDown=function(){ if((Key.getCode()==Key.RIGHT&&_parent.actionMode=="stand"){ gotoAndPlay("WALK"); _parent.actionMode="walk"; } } Action.onKeyUp=function(){ if((Key.isDown(Key.RIGHT))==false&&_parent.actionMode!="stand"){ gotoAndPlay("STAND"); _parent.actionMode="stand"; } } Key.addListener(Action); という風に書いたら、イベントの先にある方しか反応してくれません。 なので、Key.addListener();を1度しか使わずに、かつArm,Legの両方が動くようにするには、どうしたら良いですか?
>>150 リスナーだからそれぞれに書く必要はない。
Action = new Object();
Action.onKeyDown = function() {
if (Key.isDown(Key.RIGHT)) {
_root.gotoAndPlay("walk");
}
};
Action.onKeyUp = function() {
if (Key.getCode() == Key.RIGHT) {
_root.gotoAndPlay("stand");
}
};
Key.addListener(Action);
RPGのマップ移動の処理を作ろうとしているのですが たとえばBMPのAとBMPのBがあるとします この二つを横並びに結合したBMPのCをスクリプト側で作成させることは 可能でしょうか 製作にはMXを使用
ステージにcircle_mc1〜circle_mc50があり、 その50個全てのmcを_visible = false;したい場合、どのようなスクリプトを書けばよいでしょうか? よろしくお願いします。
for(var i=1;i<=50;i++) this["circle_mc"+i]._visible = false;
>>154 this[]を使えばいいのですか。
勉強になりました。ありがとうございます。
b90 = 0; bars = new Object(); bars.onChanged = function() { if (b90 == 1) { bar._alpha = 100; } else { bar._alpha = 0; } trace(b90); }; b90.addListener(bars); b90はボタンを押した時1になり、離した時0に戻る変数です b90は0や1に変化してるのですがb90が変化した時に とあるMCのアルファ値を変えようとしたのですが何故か内部のtraceが実行されていませんでした b90は変化してるのですが関数の中が実行されません・・・おかしな点を指摘お願いします
>>156 変数にaddListenerってあったっけ?
ボタン押したときと離したときにMCのアルファ変えろよ 数字変数にaddListenerメソッドなんて無い
>>159 >数字変数にaddListenerメソッドなんて無い
どうもです
よく読んでる内にテキストフィールドオブジェクトでやると気づきました
>ボタン押したときと離したときにMCのアルファ変えろよ
抜粋と簡略化したものを張ったので実際はボタンだけじゃ無理な内容なんです
回答どうもでした。
右クリックで開くコンテキストメニューに、独自のメニューを追加しようと考えています。 menuのonSelectで呼び出される関数内では、何フレーム目で右クリックされたのかを判断し、 それに応じてメニュー項目を変化させたいのですが、「いまタイムラインで何フレーム目か」 もしくは「いま何というラベル名の場面を処理しているか」というのは、どうやれば 取得できるのでしょうか? もちろん、自作の変数に自分で毎フレーム入力していけばいいのはわかりますが、 その機能が最初から備わっているのかどうかを知りたいです。
163 :
161 :2006/01/03(火) 20:31:52 ID:/Sy/4VhV
164 :
Now_loading...774KB :2006/01/04(水) 01:37:51 ID:IDl3/zIE
課題=複数のTxtファイルを1つのrtf形式にまとめ、このrtfを テキストフィールドに読み込ませるレスNo.125の続き) ソフト=FlashMX2004,OS=Win98SE ni.rtfを読み込ませるため、136さんの var dat = new LoadVars() dat.load("ファイル名") dat.onLoad = function(s){ if(s){ trace(dat) } } をフレームアクションで実行したところ、"ファイル名"の書き方によって、 1) dat.load("ni"); → Error opening URL "file:///C|/WINDOWS/デスクトップ/Flash/ni" 2) dat.load("ni.rtf"); → %7B%5Crtf1%5Cansi%5・・・ 3) dat.load(ni.rtf); → Error opening URL "file:///C|/WINDOWS/デスクトップ/Flash/" となってしまいました。この内、2)が読み取っていそうな感じがしますが、 文字化けを回避するにはどうすればいいでしょうか? また馬場ぎんがさんの「ActionScriptポケットリファレンス」のp161により ますと、「=,&,%がある場合にはURLエンコードされた文字列を用います」 ということですが、これはあらかじめ元の文字を%26などと書き換える必 要があるということでしょうか? なお、複数のTxtを1つにまとめようとすると、ある程度のファイルサイズで 「メモリ不足のためこの作業を実行出来ません。いくつかの・・・・」という警告 が出ます。 以上、よろしくお願います。
165 :
164 :2006/01/04(水) 01:40:33 ID:IDl3/zIE
(課題の部分を若干修正) 課題=複数のTxtファイルを1つのrtf形式にまとめ、このrtfを テキストフィールドに読み込ませる(レスNo.125の続き) ←括弧を付けました
166 :
Now_loading...774KB :2006/01/04(水) 01:44:06 ID:arXZABwF
lineToなどで描画したグラフィックを部分的に消す方法はありますでしょうか? 四角形の形で消したい。下に他のMovieClipがあるので、背景色で消す方法が 使えません。透明色を使ったらどうか、と思ったのですが、消えませんでした。 丁度、消しゴムツールのような方法がActionScriptにあることを期待 しているのですが… お願いします。
>>166 明確なやり方はなさそうですが
背景色で消す事とマスクとブレンドを上手く使えばそれらしくできるのでは?
>>164 文字化けするなら
System.useCodepage = true;
を書く。
URLエンコードされた文字を直す(デコードする)ならunescapeを使う。
>複数のTxtを1つにまとめようとすると・・・
複数のTxtを1つにまとめるって言ってるけど
どういう処理でやってる?
>125では
>1つにまとめた後、この名前を「txtName」などとして
ってあるからFlash内でやってるわけじゃないの?
あと、rtf形式にするのはなぜ?
>>166 Flash8であれば、DrawAPIを使って描画を行ったMCを、アルファチャネルが有効な
BitmapDataにdrawしておく事で、fillRectなりなんなりで、アルファをゼロにした色で
部分的に消すことが可能です。
(BitmapDataを別のMCにattachBitmapして、MCは_visible=falseにするのを忘れずに)
>>164 突っ込み所がいろいろあり過ぎて、何とも言えない。
ソースごとどこかにupしないと、禅問答のように延々と続きそうな気がする。
>>164 「シンタックス my_lv.load(url:String)」
とヘルプに書いてあるだろうが。
なぜ、1) dat.load("ni"); や3) dat.load(ni.rtf); のような実行をするのか?
正しいURLを入れなければ読み込まないのは当然。
勘違いしてるのかもしれんが、URLの書き方と文字化けとは無関係だよ。
課題とは、rtf形式のファイルを読み込まなくてはならないものなのか?
HTMLのタグつきテキストを読み込みたい程度なのか?
何にしてもエラーの件は、作業として根本的に何かが間違っているように思われる。
どうやってテキストをまとめているのか具体的に書いてみたらどうだろう。
172 :
Now_loading...774KB :2006/01/04(水) 16:14:10 ID:gyrBatc/
「FLASH ActionScript 2.0入門完全ガイド+実践サンプル集」 という本を買って勉強してるのですが どうしても理解できないところがあるので質問させてください 229ページに下のようなクラスがあるのですが 8行目の book.blObj = new BooksLine(book); は何故「book.」を付けるのでしょうか? blObj = new BooksLine(book); とするべきだと思うのですが そうするとロールオーバーのイベントが動作しなくなります。 どなたか理解できた方がいらっしゃいましたら教えてください。 よろしくお願いします。 class InitBook { var book:MovieClip; var blObj:BooksLine; //コンストラクタ function InitBook(targetMC:MovieClip) { book = targetMC; //BooksLineクラスのインスタンスを作る book.blObj = new BooksLine(book); setEventHandler(); } function setEventHandler() { book.onRollOver = function() { blObj.startSwing("right"); }; (以下略)
173 :
172 :2006/01/04(水) 16:26:10 ID:gyrBatc/
ちなみに book.blObj = new BooksLine(book); の前後で trace(blObj); とすると undefined になるので var blObj:BooksLine; で宣言した「blObj」には格納できていないと思うのですが var blObj:BooksLine; この変数宣言の行をコメントアウトすると ロールオーバーの blObj.startSwing("right"); のとこで「blObj というメソッドはありません」と エラーになります。 この動作がどうしても理解できません。 これはflashのバグなのでしょうか?
>>172-173 MovieClip.onRollOver内では、scopeが変わる。
InitBookクラス内に以下のスクリプトを追加&変更して実行すると理解できると思う。
//これに変更
function setEventHandler() {
trace("onRollOver外 this = " + this);
book.onRollOver = function() {
trace("onRollOver内 this = " + this);
blObj.startSwing("right");
};
}
//InitBookに追加
function toString():String {
return "InitBook";
}
ただ確かに、book.blObj = new BooksLine(book);
という宣言はあまり例文として好ましくないね。
このやり方よりも、インナーFunctionを覚えた方が良いと思う。
175 :
172 :2006/01/04(水) 17:42:13 ID:gyrBatc/
>>174 ありがとうございます
「book」ムービークリップ内に
変数「blObj」を作ってるということでしょうか?
そうだとするとなぜ InitBookクラスで
var blObj:BooksLine;
この変数宣言が必要なのかが理解できません。
これはFlashのコンパイラを騙すような裏技的なものなのでしょうか?
それともなにか意味があるのでしょうか?
>>175 >「book」ムービークリップ内に
>変数「blObj」を作ってるということでしょうか?
yes
>これはFlashのコンパイラを騙すような裏技的なものなのでしょうか?
>それともなにか意味があるのでしょうか?
このやり方は初めて見たので、よく分からないけど、
もしコンパイラに弾かれるのなら、その1文がコンパイルを通すために必要なのだと思う。
scopeの違いは、インナーfunctionを使用してカバーするのが普通なので、
そのやり方は忘れて、こっちを使用したほうが良いよ。
ttp://pc8.2ch.net/test/read.cgi/swf/1127814783/429
177 :
Now_loading...774KB :2006/01/04(水) 18:19:40 ID:cBI2kdXF
>>175 例としてあげてるのを見る限り、
var blObj:BooksLine;は使用してないね。
その後のコードで使ってるのか、
作者が勘違いしてるんじゃない?
178 :
Now_loading...774KB :2006/01/04(水) 18:21:55 ID:cBI2kdXF
>>175 ああ、わかった、
function setEventHandler() {
book.onRollOver = function() {
blObj.startSwing("right");
};
この部分でscope無しでblObjを参照してるからだ。
ていうか
>>176 の言う通りインナーfunctionにした方がいいかも。
179 :
172 :2006/01/04(水) 18:34:43 ID:gyrBatc/
>>176-178 さっそく教えていただいた
インナーfunctionを勉強してみます。
ありがとうございました。
おかげですっきりしました。
この本は他にも間違いが多くて
うんざりしてました。
180 :
Now_loading...774KB :2006/01/04(水) 18:59:57 ID:lOAhX7NL
外部jpgの読み込みにつてお願いします。 ムービー開始とともに画像を読み込むように on (press) { test_mc.loadMovie("test.jpg"); } を、単純に onClipEvent (enterFrame) { test_mc.loadMovie("test.jpg"); } にしてみましたがダメでした。スクロールペインを使用するとできるみたいですが、 上記のボタンアクションのような単純なスクリプトでムービー開始とともに外部jpg を読み込むにはどうすればよいのでしょうか。
>>180 _rootにtest_mcがあるなら
test_mc.loadMovie("test.jpg");
と_rootの1フレにベタに書く。
>>179 AS2.0オンリー本って、今はまだこの本くらいしかないのが痛いところ。
183 :
180 :2006/01/04(水) 20:09:27 ID:lOAhX7NL
>>181 フレームアクションなのにスクリプトの書く場所を間違えていました。
超初心者の質問にお答えくださいましてありがとうございました。
お礼申し上げます。
184 :
164 :2006/01/04(水) 21:56:04 ID:aBpfPUSV
>>168 ,170,171
有難うございます。
事の発端は、「複数のTxt(メモ帳)にまたがって語句を検索後、その語句
を含むセンテンスを抽出したい」ということからでした。一番手っ取り早いの
は、Txtの中身をコピペして1つのTxtにした後に、ここから検索しよう思いま
したが、メモ帳の制限が35kB位なのですぐに上限に達します(Txtの総計
は60kBほど)。
そこでrtfならば100kB位は問題ないので、rtfにまとめてここから検索しよう
と思い、上の質問になりました。149で書いたように、Txtに番号を付けて配
列やfor文で順に検索する方法もあるかなと思いましたが、色々なソフトで
生成したファイル( .out や .pdb など←中身は文字のみ)も読み込みたいの
で、ある意味欲張って「何でも読み込めるAS」を構築する練習としてrtfを読
もうとしてます。
最低限、複数のTxtが読めるか、容量制限が大きいTxtエディタの1つ(rtfな
ど1つのみ)が読めればいいです。
※171さんの 「シンタックス my_lv.load(url:String)」 でURL指定を試して
みます。
ソースをUpしたいのですが、初段の「ファイルの読み込み」では、ボタンアク
ションの
on (press) {
System.useCodepage = true;
this.loadVariables(txtName+".txt"); ←txtNameはテキストフィールドの変数
}
しか成功していないのでこれ以上のソースはありません。
文字だらけになりすみませんが、アドバイス願います。
185 :
Now_loading...774KB :2006/01/04(水) 22:09:31 ID:Z8ZQigux
既出ならば申し訳ありません。 テキストファイル(A.txt)を読み込んでその中の「##」という文字列を読み込む。 ↓ 別のテキストファイルに読み込んだ文字列「##」をファイル名に組み込む。 (B_##.txtという感じです) ↓ ファイル名を換えたテキストファイル(B_##.txt)に記載されている文字列を表示する。 ということをしたいのですが、何か良い方法はありますでしょうか。 宜しくお願いします。
>>184 厳しい事を言うようだが、根本的にテクが足りないと思う。
勝手に壁作って、勝手に苦しんでる。
>>184 メモ帳の制限が35KBなのにどうやって100KB位のrtfを作ったのかが疑問。
っていうかメモ帳の制限が35KBってのがよくわからない。
Win98ってそういうものなの?
で、話は変わってFlashでもrtf形式は読込める
System.useCodepage = true;
var dat = new LoadVars();
dat.onLoad = function(s) {
if (s) {
trace(unescape(dat));
}
};
dat.load("ni.rtf");
>>185 やりたいことがよくわからないが、ASで
ファイルを保存したり、ファイル名を変えるのは不可能。
テキストファイルを読み込みたいなら
>>187 みたいな感じ。
189 :
185 :2006/01/04(水) 22:52:01 ID:Z8ZQigux
>>188 レスありがとうございます。
読み込むテキストファイル(上の例で言うとB_##.txt)のファイル名を擬似的に動的に指定したいと考えたんですが・・・
ファイル名を変えるというかファイルを指定するパスを他のテキストファイルを用いて指定するイメージなのですが・・・
やっぱり無理でしょうか・・・
JavaScriptとJScript連携でFileSystemObjectでファイル操作できそうじゃね?
>>151 レス有り難うございます。
まだいまいち良くわからないですが、自分でやってみます。
193 :
185 :2006/01/04(水) 23:22:59 ID:Z8ZQigux
>>191 ありがとうございました。
勉強します。
194 :
184 :2006/01/05(木) 00:08:10 ID:5KaMKK19
>>187 , 191
レスどうも。
メモ帳のエラーメッセージは、(Win98SEをお持ちの方は)適当に文章をコピペして
頂けたら再現できます(当方のメモリーは256MB)。
つーか、メモ帳自体が意外とメモリーを喰っていて、IEのウインドウを1個追加
するよりもメモ帳を開いた方が断然凍る確率が高いです →これ以上はWin板の
話題なのでメモ帳云々のことはここまでにします。
>>194 ていうか、メモ帳以外を使えばって前のレスで言われてるじゃん。
あえて言えば、そのスペックでMX2004を使うのが間違い。
196 :
184 :2006/01/05(木) 00:33:11 ID:5KaMKK19
>>195 WordPadとかですか? WordPadは別ソフト専用にしているので
出来るだけ使いたくないです。
>>196 別ソフト専用ってナニ?
WordPadってソフト別に使うものじゃないと思うけど、違う?
100KBのrtfはどうやって作った?
もうなんつぅか、メモ帳からいい加減はなれろっつーか、
メモリの問題じゃなくて実はHDDの空きが10M以下とか
そんなレベルじゃないのかという気がしてくる。
>>184 お前さんの創作意欲はとりあえず1年ほど封印して、
しばらくいろんなサイトでエロ動画でもDLしてたら?
エロへの情熱でアレコレやってる間に基礎知識が
溜まってくと思うぞ。
199 :
Now_loading...774KB :2006/01/05(木) 01:15:39 ID:DFg+N3us
200 :
184 :2006/01/05(木) 01:29:06 ID:MBMk1BiJ
>>197 別ソフト専用ってナニ?
分子軌道計算の入力データ作製用です。「この種データを開くときには必ずこの
ソフトを使う」で設定し、アイコン自体はWordPadそのものではありますが、拡張子
自体が違います。非常にデリケートな作業なので、ソフト自体を専用にしています。
>100KBのrtfはどうやって作った?
184の「そこでrtfならば100kB位は問題ないので」の通り、別に100kBを目指
した 訳ではなく、例えると「ビニール袋では入らないからバケツに入れた」程度
の ことです。
>>199 見てみます。
-- 「次の質問は無しね。」ということですが、現状報告 --
ni.rtfを読み込ませるため、136さんの "ファイル名"でURLを指定して読み
込ませたいのですが、URLの表現が
C|/WINDOWS/デスクトップ/Flash/ni.rtf
でも
C:\WINDOWS\デスクトップ\Flash\ni.rtf
でもエラーになります。
187さんの方では読み込めますが、文字化けします。文中に「=」や「&」が入って
いたら 不可なのでしょうか?
201 :
184 :2006/01/05(木) 02:09:15 ID:g7JO45gX
199さんのサイトの内、TeraPadをインストールし、試しに66kB(=33x2)ほどの テキストを作成し、保存に成功しました。 しかし開く際には、「ファイルが大きすぎてメモ帳では開けません。ワードパッド で開きますか?」ということなので、(チェック用に)ワードパッドを使用し、内容 を確認しました。 とにかくメモ帳よりも大きなサイズが扱えるので、コレで一まとめにしておきます。 サイト紹介有難うございます。
>>184 解決したみたいだけど一応補足させてくれ。
rtf(リッチテキスト形式)には、プレーンなテキスト以外の情報も含まれている。
>>164 の2)の結果は文字化けじゃなくて、そのテキスト以外の情報を読み込んだ結果。
つまりrtfのヘッダ情報、 「{\rtf1\ans・・・・」の部分。{ が%7B、\ が%5Cな。
ためしにワードパッドで2〜3文字程度のrtfファイルを作ってメモ帳で見てみること。
loadVarsはファイルの解析なんてしてくれないから、ヘッダ情報だろうが本文だろうがテキストだろうがバリナリだろうが関係なく読み込む。
自分でrtfのフォーマットを解析できないのなら不用意に使わないこと。
質問させてください。 あるボタンインスタンスのon(press){・・・}に書き込んだスクリプトを そのボタンを押さずに、よそのインスタンス/フレームのスクリプトから呼び出したいケースがあるのですが どのように処理できるでしょうか? btn.onPress=function(){・・・}でつくったものはbtn.onPress()で呼び出せるのはわかったのですが on(press){・・・}の場合の呼び出し方がわかりません。 OSはXPでFLASH8を使っています。
204 :
184 :2006/01/05(木) 02:40:03 ID:g7JO45gX
>>202 懇切なアドバイス有難うございます。
蛇足ですが「TeraPad」では、入力欄に常に[EOF]が表示されます。。。。。
EOFという言葉は昔大学の必修でCをやって以来ですうw ←使用上は無問題です
>>203 たぶん無理。フレームワークで統一する。ボタンはMCにする。
この方が楽だよ。
>>204 ワードパッドはワープロだから、デフォルトで*.rtfとして保存される。
つまり、よけいな情報が付加されてしまうので保存の時にプレーンテキストで保存する。
EOF表示はエディタ個々の設定でしょ。
なんだかんだ言っておまいら優しいな
>>204 EOFはデータ上には含まれていないから大丈夫。
単にデータの終端を示す為にエディタ上に表示されているだけ。
んで、
>>201 でメモ帳で開けないと書いてあるけど、
メモ帳の変わりにこういうエディタを使うようにして。
メモ帳の使用感が好きならメモ帳Plusとかでも何でも良いから。
例えば.txtはTeraPadで開くように、とかね。
初心者歓迎パソコン教室みたいになってるな。
209 :
203 :2006/01/05(木) 11:47:17 ID:ESBcDz67
>>205 回答サンクスです。
無理ですか。残念です。
こまめにフレームに飛ばして処理したほうがいいのですね。
参考になりました。
210 :
Now_loading...774KB :2006/01/05(木) 12:01:15 ID:OTD9Its0
PV系のFlashでよく使われている、複数の 長方形のMCを上下移動させる方法を Actionscriptで記述するとどうなりますか? モーショントゥイーンでやっていたのですが 面倒なのでどなたかご教授お願いします。 OSはXP SP2 Flash MXです。
>>210 >PV系のFlashでよく使われている
知らないけど、MCを上下移動させる方法は、
this.onEnterFrame = function(){MC._y += 1;}
とか。
>>210 MX2004以上なら、
mx.transitions.Tweenクラスというのが用意されている。
>>210 二次関数のような動きをしたいとか特殊な動きをする、またはよっぽど単純な動作のみの場合じゃないとPVをASで書くのはお勧めしないな
いちいち動作確認にパブリッシュしなきゃいけないのも面倒だしね
一応作り方としては
1.まずムービークリップインスタンス(mc)を作り、リンケージ設定で書き出す
2.そのMCの中でインスタンスの動作をモーショントゥイーンで作る
3.横一直線に8個並べたい場合
for(i=0;i<8;i++){
mc_name = "mc"+i
attachMovie("mc",mc_name,100+i);
_root[mc_name]._x = i*50;
_root[mc_name]._y = 50;
}
こんな感じになる
ある程度ASの基礎勉強しなきゃ分からんと思いますがやるなら頑張ってください
>>213 なるほど…マスクやトゥイーンがよく使われているのも
そういう理由でですか…。勉強になりました。
216 :
Now_loading...774KB :2006/01/05(木) 15:53:10 ID:cB4SAZv9
ASからcreateEmptyMovieClipで作ったMCの基準点を操作するのって無理?
調べてもよくわからなかったんですが、 ある変数の中身が変更されたときに1度だけ実行されるリスナーってありますか? 無ければ、そのようにする方法を教えて貰えないでしょうか?
別にリスナーにしなくても、setter作って、setter内で任意の処理を実行すればいいんじゃない?
質問です。 あるMC【A】の子として、インスタンス【B】を作った場合(→MC【A】.attachMovie("らいぶらり",インスタンス【B】,1)) MC【A】もインスタンス【B】も消したい場合は、removeMovieClip(MC【A】)を行えば、 インスタンス【B】も一緒に消えてremoveMovieClip(インスタンス【B】)を行う必要はないのでしょうか? OSはXP、FLASHは8です。
>>219 this.attachMovie("mca", "MC_A", 100);
this.MC_A.attachMovie("mcb", "MC_B", 200);
trace(this.MC_A.MC_B);
removeMovieClip(this.MC_A);
trace(this.MC_A.MC_B);
結果
_level0.MC_A.MC_B
undefined
ということかな?
消えてるよ。
>>220 回答ありがとう。
なんとなく消える気はしていたのだけれど、確証が持てなくて;
変に残ってメモリ喰ってたらやだな、なんて思ってました。
222 :
184 :2006/01/05(木) 23:29:52 ID:0sYz/Dkj
>>205 , 207
エディタへのアドバイス有難うございます。
function loadMap(){ var myTxt:TextField; myTxt = new TextField(); loadVariables ("test.txt",myTxt.text); trace( myTxt.text); } テキストフィールドmyTxtに外部ファイルtest.txtを 読み込みする処理をしたいのですが トレース結果はundefinedになってしまいます。 お助けください。
>>223 traceを少し時間差つけて実行してもundefinedになる?
読み込みを実行した直後にtraceすると読み込みが完了してなくてそうなる時がある
>>223 AS2.0は知らないから1.0と折衷になってるけど読み解いてくれ。
//TEXTSTRINGは読み込むテキストに書かれている変数
function loadMap(TEXTSTRING) {
var myTxt:TextField;
myTxt = new TextField();
myTxt.text = TEXTSTRING;
trace(myTxt.text);
}
this.onEnterFrame = function() {
this.loadVariables("test.txt");
if (TEXTSTRING != undefined) {
loadMap(TEXTSTRING);
delete this.onEnterFrame;
}
};
loadVariablesは、昔の名残なので使わん方がいいよ。
ダイナミックテキストA − スクロールバー(UIScrollBar) − ダイナミックテキストB のように配置しています。中央のスクロールバーはAに吸着させています。 スクロールバーを操作したらBも同時にスクロールさせたいので、 function SameLine(){ b.scroll = a.scroll; }; mouse_obj.onMouseDown = SameLine; mouse_obj.onMouseMove = SameLine; mouse_obj.onMouseUp = SameLine; のようにしたのですが、Bの反応が1フレーム遅れてしまいます。 同時に動かすようにするためには、どういうふうにSameLine()を呼び出すように 設定すればいいのでしょうか?
あ、気になったのでついでに。
>>226 loadVariablesが昔の名残なら、その代わりに使うべきものってなんなんですか?
LoadVars クラス?
229 :
223 :2006/01/06(金) 13:55:09 ID:BbYnzH9I
レスしてくれた皆さんありがとうございます。 しかし残念ながら上手くはいきませんでした。 そもそもテキストフィールドオブジェクトに入れた値を traceで確認する方法ってどうやるんですか myTxt.text="aaa"; trace(myTxt.text); ってやってもundefinedになりますし
>>229 myTxt = new String()
って入れたらできるかも?
231 :
227 :2006/01/06(金) 14:23:22 ID:TEr3aVzT
自己解決しました。 デバッガ見てたらAに吸着してたUIScrollBarが a.vScrollerとして取得できるっぽかったので、 scroll_obj = new Object(); scroll_obj.scroll = function(eventObject){ b.scroll = a.scroll; } a.vScroller.addEventListener("scroll", scroll_obj) として、UIScrollBarのスクロールタイミングに処理することで解決しました。
createTextField
233 :
Now_loading...774KB :2006/01/06(金) 17:19:37 ID:NHfTwyXu
質問お願いします。 子SWFなどの読み込み待ちには MovieClipLoader を使えると思いますが メインSWFの読み込み待ちの場合、このようなものを使って 読み込み終了時にイベントを発生させるようなことはできないでしょうか? getBytesLoadedとgetBytesLoaded を判定して ループで待つのでしょうか?
>>229 それまんまコピーしてうまくtrace出来たよ。5だけど。
235 :
Now_loading...774KB :2006/01/06(金) 21:57:39 ID:3x9cVbWq
ステージにテキストボックス(長方形で20文字×8文字くらいの大きさ)を配置して ASで文章を1文字ずつ表示させているのですが(ドラクエの会話ウィンドウのような感じ。enterframeでreplaceSelを呼び出して1文字ずつ送り込んでいます) テキストボックスの中で文字が自動で折り返す際に、折り返し端の文字がテキストボックスの境界をまたいだ位置に表示されようとすると 一瞬、境界をまたいでテキストボックスからはみ出た位置に表示されてから、折り返して下の行の先頭にワープします。 これがとても気になるので、テキストボックスからはみ出て表示されない方法はあるでしょうか? はみ出る位置の文字がはみ出て表示される前に下の行に移って欲しいのです。
>>223 そもそもloadVariablesの使い方間違っていると思うのだが。
>>223 text.txtの中身がどうなっているのか解らないが、まるごと読み込むものと判断するとこんな感じだろうか?
_root.myTxt = new TextField();
_root.load_lv = new loadVars();
_root.load_lv.onData( txt ) {
_root.myTxt.text = txt;
}
_root.load_lv.load("text.txt");
試してないから動かないかも。
loadVarsもloadVariablesも読み込むまで処理を待ってくれないから、読み込み終了をちゃんと判断する必要がある。
loadVarsならonLoad() かonData()
loadVariablesならonClipEvent( data )
>>218 setterですか…。よくわからないので調べてみます。
ありがとうございました。
TextFieldってnewでなく、createTextFieldを使うと思うんだが。 AS3とかではそうなってるのかな。 JavaとASをごっちゃにしてる気がするぞ。
質問ですー。 this.removeMovieClip() と removeMovieClip(this) って同じことですか?
241 :
Now_loading...774KB :2006/01/07(土) 03:46:31 ID:TtNDrc2t
すいません、教えてください。WinXP,FlashMX2004,AS2.0です。 次のようなクラスをつくってで var HogeHoge = new HogeHoge HogeHoge.LoadPicture('test.jpg'); と叩いた場合、画像は読み込めるのですが、_widthプロパティが0になってしまいます。 これはどういった原因なんでしょうか。 お願いします。 class HogeHoge { var a_mc; function LoadPicture(imgPath:String){ this.a_mc = _root.createEmptyMovieClip('a_mc',1); var pic_obj:MovieClipLoader = new MovieClipLoader(); var oListener:Object = new Object(); oListener.onLoadComplete = callbackOnLoad(); pic_obj.addListener(oListener); pic_obj.loadClip(imgPath,_root.pic_mc); } private function callbackOnLoad() { trace(this.a_mc._widht); } }
onEnterFrame で trace してみれば分かる。 _root.pic_mc //どこから出てきたのこれ trace(this.a_mc._widht); //スペルミス
>>235 ちょうど俺もその処理をやろうと思ってたところなのでアドバイス。
例えば「ゲームを買った」のような文章で、
>ゲームを買
↓
>ゲームを
>買っ
みたいになる現象だろ?
上の時点では textFidld.text = "ゲームを買" となってて、
下の時点では textFidld.text = "ゲームを買っ" となってる状態から
textFieldに改行判断をさせてるわけだから、そりゃこういう風になるのも当然だ。
対策は、自前で改行の判断することだと思う。
文字列の長さを判断して、自分で改行位置に"\n"を入れる。
"ゲームを買った" を送り込むんじゃなくて、 "ゲームを\n買った" を送り込む。
これで解決。だと思う。
244 :
235 :2006/01/07(土) 11:22:47 ID:p44MVeRG
>>243 そそそ。そうなっちゃうの。
でもそっかーやっぱ元の文章を変えたほうがてっとりばやいのねー。
サンクス!
>>244 てっとりばやいんじゃなくて、もっとtextFieldの立場になって考えてみそ。
自分がtextFieldの作者のつもりで。
元のやり方でデータ渡されて、そんな改行が出来るわけねーだろボケ!
と愚痴たれたくなるから。
XP、MX2004です。 スロットゲームをイメージしてください。 3つのMCを、それぞれ任意のフレームで停止させました。 3つとも停止させた時に、3つとも同じフレーム番号で止まっていたら (絵柄が揃ったら)メインのフレームが次に進む。 if(_root.hidari._currentframe == _root.naka._currentframe == _root.migi._currentframe == 1){ gotoAndStop(5); ~~ } else { stop(); } これはちゃんと動くのですが、1行目最後の ==1 を ==5 などの1以外の数字にすると MCをすべて「5」で止めてもメインのフレームが進みません。 理由がわからないので助けてください。 ちなみに、ひとつずつ止めれば if(_root.migi._currentframe == 5){ gotoAndStop(5); } else { stop(); } これならメインフレームが進みます。
>>245 いや、ちゃんとスクリプト的に(てっとりばやくなく)やるには追加した文字のフォント幅を加算してみて
もう入らなくなったところで改行挿入、とかかなって思ってたからさ。
むしろ言われて「てにをは&句読点」に合わせて改行されていたのに気付いた次第。
>>246 if文の()の中身はtrueかfalseしかない。
1はtrueと見なされるから一応動いたんでしょ。
○○かつ○○の条件判定は&&でつなぐかifの入れ子にする。
論理積でやってみれ if((_root.hidari._currentframe&_root.naka._currentframe&_root.migi._currentframe) == 5) 説明はめんどくさいから自分で調べて
250 :
246 :2006/01/07(土) 15:10:36 ID:iCWVHrvd
ありがとうございます。 =ではなく、&でつなげるのですね。 if((_root.hidari._currentframe & _root.naka._currentframe & _root.migi._currentframe) == 1){ gotoAndStop(5); } if((_root.hidari._currentframe & _root.naka._currentframe & _root.migi._currentframe) == 5){ gotoAndStop(6); } if((_root.hidari._currentframe & _root.naka._currentframe & _root.migi._currentframe) == 9){ gotoAndStop(7); } else { stop(); } ところが、これで絵柄が揃ってない状態でも、フレーム5に飛んじゃうようになりました。 何がおかしいんでしょうか?
>>250 全部の演算子の意味覚えて来い
多くないから。
0001 & 0101 = 0001
>>248 のやりかたでやってみ
253 :
246 :2006/01/07(土) 15:26:06 ID:iCWVHrvd
すいません、出直してきます。
>>246 比較演算子の使い方が違う。
a == b == c なんて書くと、こんな感じに処理される。
( a == b ) == c
まず( a == b ) の値は、式が成り立つのならtrue、 成り立たなければfalseとなる。
trueとして展開すると、 true == c となる。
結果、c が true と等しいか判断されることになる。
で、ASではtrue が 1なんだろうな。 だから true == 1 は成り立つけど true == 5 は成り立たなくなる。
あーそうか、じゃあ
if((_root.hidari._currentframe<<2+_root.naka._currentframe<<1+_root.migi._currentframe) == (5<<2+5<1+5))
でもこれ無駄に計算多いかもな。
原因はちょっと違うけどだいたい
>>248 の言うとおりだから、めんどくさがらずに
ひとつずつ比較するのが早いかもなー
>>246 まず、3つが同じかどうかのifでくくって、
その中でどこに飛ぶかの処理をやる方がすっきりするんじゃないのかな?
お、書いてるうちに山ほどレスが。 そうそう、(A==b==c)っていう書き方は((a==b)==c)として計算されるのよ。 代入の(A=B=C=5)みたいにまとめて演算してくれないのな (つーか、実はこれもちょっとASだと困った処理なのだけれども。というか、行儀悪い書き方なのんだけど) だから、なんか変だと思ったら、こまかーくひとつひとつ計算してみるのがいいよ。特にASではね。
で、どーすれば楽かっていったらさ、うーん、こんなのどーよ? a=_root.hidari._currentframe b=_root.naka._currentframe c=_root.migi._currentframe if(a==b&&b==c){ _root.gotoAndStop((a+b+c)/3) } なんか頭悪そうだけど、まあいけるんじゃない?
>>258 a も b も c も等しいことが解っているんだから
_root.gotoAndStop(a)でいいんじゃね?
お、そうだね。そのほうが妥当だ。さんきゅー。
>>246 はもっと演算子について勉強しておくとして、とりあえず
>>250 みたいな処理のベスト解答。
>>258 からの発展系で書いた。
var jumpTable = new Array();
jumpTable[1] = 5;// 1なら5にとぶってことだ。
jumpTable[5] = 6;
jumpTable[9] =7;
a=_root.hidari._currentframe
b=_root.naka._currentframe
c=_root.migi._currentframe
if(a==b&&b==c){
label = jumpTable[a];
if (label != undefined){
gotoAndStop(label);
} else {
stop();
}
}
aに入ってる数字と飛ぶフレーム数が一致するわけじゃないみたいなので、これがベストだろう。
こうやって置けば、「○○なら△△にとぶ」っていう分岐がどれだけ増えても、
テーブルに入れておく数が増えるだけなので、処理が楽。
なんだよその説教系の書き込みはwww 別にどーでもいいじゃんうごけば。説教はぎじゅつこうかんすれででもやってくれ。 つーか「ベスト」なんて軽く書き込めちゃうお前がうらやましー。 で、本題 ASの配列(Array)は割と重いので、使わなくてもいいんじゃない?? 単にラベル名にとばすだけでもいい感じ。Flashに慣れてないとわかりにくいかもしれんけど。 (つーか、個人的には>>>261のが奇麗とか思ったけどさ) っつーわけでさ、難しく考えなくても「どっかのスロットが揃えば」っていう処理でも、 いろいろ考えはあるわけさ。 好きなの使って、面白いもん作ってくれー。
暗号のようなベストだな。
まあまあ。
思ったとおりに動いて面白い物が出来たらそれでいいじゃん。
>>246 がんばれよー
>>263 まあ、そう言うな。
ASの世界は未だに混沌なのさ。
それだけに面白いよ。お前も飛び込めよフゥハハアアアア!!
266 :
246 :2006/01/07(土) 16:43:44 ID:iCWVHrvd
みなさん、ありがとうございます。 a = _root.hidari._currentframe; b = _root.naka._currentframe; c = _root.migi._currentframe; if (a == b && b == c && c == 1) { gotoAndStop(5); } if (a == b && b == c && c == 5) { gotoAndStop(6); } if (a == b && b == c && c == 9) { gotoAndStop(7); } else { stop(); } とりあえずこれで行けそうです。本当にありがとうございました。 私も、もっと基本的なことを勉強しとかないといけませんね・・・
同じif文を複数つなげるのは勧めできないよ。 修正するときにその数だけ直さなきゃいけなくなるし、よみずらいし なおしそこねたりするからね。 var t_num:Number = 0; if ((a == b) && (b == c)) { t_num=a; } switch(t_num){ case 1: gotoAndPlay("1atari");break; case 5: gotoAndPlay("5atari");break; case 9: gotoAndPlay("9atari");break; default:gotoAndPlay("continue"); }
>>266 if (a == 1 && b == 1 && c == 1) {
gotoAndStop(5);
} else if (a == 5 && b == 5 && c == 5) {
gotoAndStop(6);
} else if (a == 9 && b == 9 && c == 9) {
gotoAndStop(7);
} else {
stop();
}
自分なら単純にこうかくかなあ、数値は定数にするかも知れんけど
ifの方が柔軟に使えるからね
例えばチェリーみたいな小役の処理をいれたい時も変更が楽だから
_rootのタイムライン上に、 var my_key = new Object(); my_key.onKeyDown = function(){ trace("hoge"); }; Key.addListener(my_key); と書いて、trace("hoge")のところでブレークポイントを置いて ここを通ると、 *** セキュリティ Sandbox 違反 *** SecurityDomain 'file:///(中略).swf' が Player の UI コンテキストにアクセスを試みました。 っていうのが出る。ブレークポイントを置いてないと出ない。 この出力が出ようと出まいと、hogeが出力される(=動作にはまったく支障はない)。 これってほっといてもいいのかな? いま製作中のやつではこの違反が出るけど、確認のための最小セットでは この違反が出ないから気になるんだけど。
270 :
241 :2006/01/08(日) 00:23:54 ID:/gHDdHkD
>242 ありがとうございます。 >_root.pic_mc //どこから出てきたのこれ すいませんs_mcです。。。 >trace(this.a_mc._widht); //スペルミス あぁ・・ごめんなさい。。。 読み込みが済んでいないために0が返されるということでよろしいでしょうか。 この場合、onLoadCompleteが機能していないということなんでしょうか。
271 :
Now_loading...774KB :2006/01/08(日) 02:52:08 ID:nbBGBdhC
物体を乱数を利用することによって上下左右に自動で移動させようしています。 いろいろ試しましたが、全く動かなかったり、一方向にしか進まなくなったりします。 宜しくお願いします。 onClipEvent (enterFrame) { _root.si = Math.floor(Math.random() * 3); if (si ==0 ) { _y += 1; } else if (si ==1 ) { _y -= 1; } else if (si ==2 ) { _x += 1; } else if (si ==3 ) { _x -= 1; } }
>>271 とりあえずMath.random()の戻り値は0以上1未満な。
つまり、0,1,2,3の4種類をランダムに出したいなら、
Math.floor(Math.random() * 4);
>>271 siのパスがあってないんじゃないのかな。
274 :
Now_loading...774KB :2006/01/08(日) 03:37:33 ID:9/Udlts0 BE:35239542-
>>246 動作確認してないけどこうやってスクリプトにしとけば
配列にデータをぶち込むだけでいくらでもパターンをふやせるよ。
data = [
// 1枚目,2枚目,3枚目,そろっていたときに飛ぶ番号
[1,1,1,5],
[5,5,5,6],
[9,9,9,7]
];
var i;
var len = data.length;
for(i=0;i<len;i++){
if(_root.hidari._currentframe != data[i][0]) continue;
else if(_root.hidari._currentframe != data[i][1]) continue;
else if(_root.hidari._currentframe != data[i][2]) continue;
gotoAndStop(data[i][3]);
}
275 :
Now_loading...774KB :2006/01/08(日) 04:00:00 ID:9/Udlts0 BE:118932293-
>>272 1.0も入ってるよ。
確率的に絶対にでないけどな
>>275 1.0は入ってねえよって件のURL張って、ひとつのネタだよな?
>>275 ありゃ、レスがw
サイコロ100個投げたときに角々で連なって直立するようなもんだなw
レスついでだけど、
for(var i=0;i<data.length;i++){...}
がスタンダードだし、continueならelseはいらないな。
ぱっと見て解りやすいコードを書く方がみんなも見やすいし良いと思うぞ。
>>275 それ、ヘルプファイルの表記ミスだったよ。
279 :
Now_loading...774KB :2006/01/08(日) 15:19:37 ID:9/Udlts0 BE:26429832-
>>277 data.length
終了判定にこんなプロパティチェックもってきたら
処理1.5倍はおもくなるぞ。
…と某リファレンスに乗っておりました。
>>278 まじすか?ソースはヘルプなもんで
>>279 その1.5倍ってのはどこから出てきたんだ?
気になったので、うちの環境で試してみたら1.15倍にしかならなかった。
100回転位だと、気にするコストじゃない。
ただ、100,000回くらい回すなら、ローカル変数にしたほうがいいかも。
281 :
277 :2006/01/08(日) 15:34:21 ID:KJRrS+v4
>>279 staticでしょ?以前に、10万回ほどのif文ループでチェックしたけど、ほとんど差がないので、
読みやすい方を使ってる。1.5倍も差が出たらさすがに使わんよw
282 :
Now_loading...774KB :2006/01/08(日) 15:35:45 ID:9/Udlts0 BE:92503837-
>>280-281 そうか。まあうろおぼえなもんで。
いやもしかするとバージョン6以前のプレイヤーの話かもな
とりあえず遅くはなっただろ?
>>271 それだと毎フレーム4方向のどっちか1ドット移動するわけで
乱数が偏らないかぎり、ぷるぷる震えるだけだぞw
284 :
277 :2006/01/08(日) 15:43:06 ID:KJRrS+v4
>>282 うーん、その時は10回ぐらい試行したんだけど、ばらつきが誤差の範囲内だったから、
ほんとに遅くなってるかどうかはわからんwその程度の差でした。
オブジェクト指向は、若干の速度の低下には目をつぶって、読みさすさを優先するので、 ちょっと速度が落ちる分には、あまり気にしない。 ちなみに10万回ループさせて、 ローカル変数 285ミリ秒 プロパティチェック 328ミリ秒 その差、43ミリ秒だった。
286 :
Now_loading...774KB :2006/01/08(日) 16:03:38 ID:9/Udlts0 BE:277509479-
>>285 1.15倍か。うちの環境でもそんな感じだったよ。
漏れの場合、ASがあまりにも重過ぎるから速度を最優先してる。
>>286 10万回のループにつき0.043秒稼ぎたいのなら、別に止めはしないけど、
ループの度にいちいちローカル変数を書いてたら、ソースが冗長になって読みにくい。
読みにくいソースはメンテナンス性の低下になる。
array.lengthで済ませるのが一般的。
初心者も見ているスレなので、念のため。
>>271 >>273 も言っているけど、ifの中のsiのパスが違っていると思う。
_root.si に値が入っているのなら、_root.siを見ないと。
onClipEvent (enterFrame) {
_root.si = Math.floor(Math.random() * 3);
if (_root.si ==0 ) {
_y += 1;
} else if (_root.si ==1 ) {
_y -= 1;
} else if (_root.si ==2 ) {
_x += 1;
} else if (_root.si ==3 ) {
_x -= 1;
}
}
家から30メートルのコンビに行くために車使うようなもの
290 :
289 :2006/01/08(日) 17:45:50 ID:gcgw9X+W
>家から30メートルのコンビに行くために車使うようなもの 速度のためにオブジェクト指向設計を犠牲にする事ね
291 :
Now_loading...774KB :2006/01/08(日) 19:24:22 ID:9/Udlts0 BE:154171875-
>>287 マルチメディア系の人なのかな?
ゲームは毎フレーム処理しないといけないので
60フレームレートだと1割り込み0.01秒しかない。
そのうち描画で7割、スクリプト処理で3割CPUを裂くと
実際使えるのは0.003秒しかないんだよ
そういや、配列の走査って ・for ・for ... in ・while のどれが一番パフォーマンスいいの?
誰か知ったか野郎の
>>291 をどっかに隔離してくれよ。ウザい。
>>293 気にするな
覚えたてのことはついつい語りたくなっちゃう年頃なんだろう
もっとエロい人が出てきてやんわり本当のことを解説してくれて
結構、勉強になること多いし。
>>292 forとwhileは、デコンパイルするとどっちかに
置き換えられてた記憶があり、ほぼ同等のものかと。
for inはstringで扱っちゃうから問題外に遅いはず
ところで、今の流れって何の質問?
296 :
271 :2006/01/08(日) 21:33:10 ID:nbBGBdhC
どうも271です。皆様レスをありがとうございます。
>>273 ,288の指摘どおり、siのパスが間違っておりました。
_rootの記述を見逃しておりました。
スクリプトどうもありがとうございました。
>>295 特に質問とは関係ないところで、処理速度と作業性で、すったもんだがありました
ASのちょっとした速度効率なんぞは、全体の表示面積を縦1ドット横1ドット小さくすることで 挽回できる程度のもんさ。
くだらんな。見やすいソースが一番いい。
でもフラッシュゲームのコーディングなんてほとんど一人だし、見やすさって関係ないんだよな。
>>300 小規模ならそうかもしれないが、
最近はグループワークも増えてるよ。
うちでもオリジナルのクラス群を改善しながらライブラリ化してるし。
今後はAS3.0への対応とFlex導入あたりからこの流れは加速すると思う。
一人で開発してようと一日たつと もはや他人のソース 現に俺は構造化プログラミングで一万行以上書いてたら 訳ワカメになって挫折した経験があるよw それがきっかけでオブジェクト指向を本気で勉強した。
動けばいいという発想の奴と仕事はしたくないな。
とりあえず人間側の効率やAS側の効率やらの話の続きはム板かマ板で続けることにして、物凄い勢いで質問に解答しようぜ。
Flashでオブジェクト指向の是非を語るスレ あたりで立てていい?
308 :
Now_loading...774KB :2006/01/09(月) 20:09:26 ID:GOHIDN9X
携帯向けFLASHを作っています。 Flash lite1.1で on ClipEvent(key Down)やonClipEvent(enterFrame)の代わりには何を使えばいいのでしょうか。 XP,FlashMXpro2004使ってます
309 :
271 :2006/01/09(月) 20:28:34 ID:vKFwIrd7
どうも271です。
>>296 で解決したと書き込みましたが、
>>283 の指摘どおりプルプル震えるような
動きになってしまうところが気になってきました。
そこで
>>288 のスクリプトに付け足す感じでを乱数の数字が一秒ごとに変化するように
してみたいと考えております。そのためにはどのようなスクリプトを付け足せば良
いか、宜しくお願いします。
311 :
272 :2006/01/09(月) 20:50:46 ID:K2eGkyRn
>>309 レスしてもスルーされるみたいなので、レスしたくなくなる気分(´д`)
>>309 カウンタで判断するってのはどうだろう。
onClipEvent( enterFrame ) イベントごとにカウントして、カウンタがフレームレートと等しくなったら向きを変えるとか。
フレームレートが20fpsだとして、こんな感じとか。
var cnt = 0;
var x_move = 0;
var y_move = 0;
onClipEvent (enterFrame) {
if( cnt == 0 ) {
_root.si = Math.floor(Math.random() * 4);
if (_root.si ==0 ) {
y_move = 1;
} else if (_root.si ==1 ) {
y_move = -1;
} else if (_root.si ==2 ) {
x_move = 1;
} else if (_root.si ==3 ) {
x_move = -1;
}
}
_x += x_move;
_y += y_move;
cnt++;
if( cnt == 20 ) {
cnt = 0;
}
}
>>308 ボタンのkeypressイベントと
MCのループ。
>>309 一秒ごとに呼び出すならsetIntervalとかもある。
でも、ゆっくりになるだけでぶるぶるしてることには変わりないと思うけど。
>>271 こんなんでました
フレームアクションね
spd = 5;//移動スピード
Interval = setInterval (this , "muki" , 1000);
function muki () {
switch (Math.floor(Math.random() * 4)) {
case 0:
SX = spd;
SY = 0;
break;
case 1:
SX = -spd;
SY = 0;
break;
case 2:
SX = 0;
SY = spd;
break;
case 3:
SX = 0;
SY = -spd;
break
}
}
mc.onEnterFrame = function () {
mc._x += SX
mc._y += SY
}
315 :
Now_loading...774KB :2006/01/10(火) 00:11:22 ID:xzVvXagU
おながいです。どなたか助けてください。 ずーーーっと5時間近くやってるんですがわかりません。 外部テキストから読み込んだ16進数の値をムービークリップに読みこんで 外部からムービークリップの色を変えたいのですが、 [外部テキスト colorno.txt] &daycolor02=0x3A3A3A& [ムービークリップ1] onClipEvent (load) { this.loadVariables("colorno.txt"); System.useCodepage = true; } [上のムービークリップの中の中にいるムービークリッップ] onClipEvent (load) { thecolor = _parent.daycolor02; myColor = new Color(this); } onClipEvent (data) { myColor.setRGB(thecolor); } 本当は中の方のMCに直接「this.loadVariables」で読ませればできるのですが、 管理上、こうせざるを得ません。(大量にあるので上の方の階層で指示をまとめたい。) thecolorで指定するときに間違ってると思って色々やったのですが…。 お願いします!!!
>>315 パッと見、thecolor = _parent.daycolor02;をonClipEvent(data)に入れたら動きそうな気がする。
>>315 上の階層のonClipEventで読み込んでるデータが
下の階層のonClipEvent時にまだ読み込み完了してない可能性が高い。
なのでtraceして要確認。
もうひとつは
thecolor = _parent.daycolor02;
がStringになってる可能性があるので、
thecolor = Number(_parent.daycolor02);
にでもしてみましょう。
>>315 MCのなかにあるMCに書いてある
onClipEvent (data) { }
って呼び出されてる?
319 :
315 :2006/01/10(火) 01:33:44 ID:xzVvXagU
せっせと外部テキスト作ってたらこんなにレスが!!!
ありがとうございます。
>>316 そう思ってやってみたのですが、駄目だったのです。
>>317 すみません。まだASが付け焼き刃状態で…。本当に初歩な質問だと思うのですが、この場合のtraceってどうやるんでしょうか?orz
もうひとつの方法は今から試してみます!
>>315 呼び出され、てるとおもうのですが。
ここには、違うアクションもいれていてそっちは動いてるんです。
320 :
315 :2006/01/10(火) 01:44:58 ID:xzVvXagU
thecolor = _parent.daycolor02; を thecolor = Number(_parent.daycolor02); にしてみました。 だめですた…。 色々まだ試してみます。
もうその形はやめてloadVars使った方が良いと思うよ。 こんなのとか。(動作確認してないけど) [ムービークリップ1] onClipEvent(load){ var loadData = new LoadVars(); loadData.load("colorno.txt"); loadData.onLoad = function(s){ if(s){ for(var n in this){ if(typeof this[n]=="movieclip"){ this[n].myColor = new Color(this[n]) this[n].myColor.setRGB(thecolor) } } } } }
322 :
315 :2006/01/10(火) 02:39:45 ID:xzVvXagU
>>321 うわあ。なんかこの夜中にありがとうございます!!
これは、ムービークリップ1のクリップアクションとして書いて、
"movieclip"の部分に[中の中にいるMC]のインスタンス名を書けば
良いのですよね?
と思ってやってみたのですが。
[中の中のMC]は実は同じものが30個ほどありまして、それぞれ
d01~d30というインスタンス名なんです。
"movieclip"に"d[01]"と書いてみたのですが駄目でした。
this[n]というのはそういう意味ではないのでしょうか?
こんな感じです。
onClipEvent(load){
var loadData = new LoadVars();
loadData.load("colorno.txtt");
loadData.onLoad = function(s){
if(s){
for(var n in this){
if(typeof this[n]=="d[01]"){
this[n].myColor = new Color(this[n])
this[n].myColor.setRGB(thecolor)
}
}
}
}
}
323 :
315 :2006/01/10(火) 03:10:57 ID:xzVvXagU
すみません。 上のレスおもいっきし勘違いです…。 "movieclip"の部分はそのままだな、ということはなんとなく…。 が、やはり私には高度すぎてどう書けばいいのかすら分からずorz。 this[n]のthisを書き換え?とか、中の中のMCをいじらなければ? とかぐっちゃぐちゃになってきますた。 お風呂につかって出直してきます…。
>>323 これじゃだめ?
[ムービークリップ1]
onClipEvent(load){
var loadData = new LoadVars();
loadData.load("colorno.txt");
loadData.onLoad = function(s){
if(s){
for(i=1; i<31; i++){
var obj=eval("d"+i);
trace(obj);
myColor=new Color(obj);
myColor.setRGB(loadData["daycolor02"]);
}
}
}
}
因みにインスタンス名をd1〜d30にしないと動かないかな
traceを試しに入れといたんで、ctrl+enterしてみれ
325 :
Now_loading...774KB :2006/01/10(火) 08:03:17 ID:TTvP2cOA
>>323 ごめん、眠くてミスってた。
正しくはこうだね。
[ムービークリップ1]
onClipEvent(load){
var loadData = new LoadVars();//loadVarsオブジェクトをloadDataとして定義
loadData.load("colorno.txt");//loadDataにcolorno.txtをロード
loadData.onLoad = function(s){//ロード完了したら引数sにtrueを。
if(s){//引数sがtrueなら処理
for(var n in this){//自身の中にある変数、movieclipを全て走査
if(typeof this[n]=="movieclip"){//走査した変数がmovieclipならば
this[n].myColor = new Color(this[n]);//そのmovieclipにColorオブジェクトをmyColorとして定義
this[n].myColor.setRGB(loadData.daycolor02);//myColorにloadData内のdaycolor02を設定
}
}
}
}
}
Flash8以降Colorクラスは非推奨、代わりにColorTransformクラスをつかう。 これから書くなら後者での方が良いぞ。
327 :
308 :2006/01/10(火) 09:27:51 ID:EpAv1nX5
>>313 ありがとうございます。とにかくがんばってみます。
ある条件が一致した場合に、スペースキーをタブキーと同じ動作にしたいのですが、 これを簡単に実現する方法はありますか? Selectionクラスを使って、手で実装するしかないですか?
Flash8です。 色々な極座標をつかってMCを動かしたいのですが知識が全くないので何からすればいいのか分かりません。 例えば、強引に螺旋をつくるなら、円運動をさせながら半径を大きくしていけばいいのですが、 極座標のアルキメデスの螺旋式を、どうアクションスクリプトで書けばいいのかさっぱりです。 よろしくお願いします
>>329 まず円運動をスクリプトで書けるのか?
とりあえずx座標とy座標に分けて考えなきゃダメだぞ
332 :
Now_loading...774KB :2006/01/10(火) 16:09:18 ID:f9wjuTtp
内包されているMediaPlayBackのコンポーネントを徐々にフェードインして だしたいのですが、ムービクリップと同じように、アルファをアニメーションできる項目が なかったので、アクションスクリプトを以下のよう組んでみました。 自身のオブジェクトアクション// onClipEvent(load){ _root.video._alpha=0 while(true){ if(_root.video._alpha > 100) break _root.video._alpha++ } } video//コンポーネントのインスタンス名です。 結果、機能しなかったんですが(最初からコンポーネントが表示されています。)、なにか間違っているのでしょうか? よろしくお願いします。 flash8pro
333 :
329 :2006/01/10(火) 17:42:05 ID:X2H19CGQ
>330,331 どうもです。CGIすこしかじった程度で、他の言語でも掛けません アルキメデスの螺旋ですが、「r=Θ」(半径=角度)ですよね? どう考えていけば、 _x=〜 _y=〜 ってなるんでしょう? ちなみに、いま使ってる螺旋運動です Flash参考書を見て数学の教科書と睨めっこして理解しただけです。 onClipEvent (load) { //回転の中心 c_x = 100; c_y = 100; //半径と増加量 r = 1; IncR = 1; //角度と増加量 radi = 0; IncRadi = 5; } onClipEvent (enterFrame) { radi += IncRadi; r += IncR; radian = radi*Math.PI/180; this._x = c_x+Math.cos(radian)*r; this._y = c_y+Math.sin(radian)*r; }
334 :
329 :2006/01/10(火) 18:05:30 ID:X2H19CGQ
書いてて気がつきました r=Θなんだから、>333のスクリプトは r==radi、IncR==IncRadiになるように考えて、 onClipEvent (load) { //回転の中心 c_x = 200; c_y = 200; //半径と増加量(角度にも流用) r = 1; IncR = 1; } onClipEvent (enterFrame) { r += IncR; radian = r*Math.PI/180; this._x = c_x+Math.cos(radian)*r; this._y = c_y+Math.sin(radian)*r; あっという間に遠くへ飛んでいってしまうなぁ これでいいんでしょうか?
>>332 whileなどのループ内では画面の再描画は行われないので
onEnterFrameかインターバルを使ったイベントで画面を書き換えよう。
onEnterFrameを使って「1フレームづつアルファの値を変える」みたいな感じ。
>>329 FPS30のサイズ550*400
rot = 0;
wd = 0;
cut = 10;
onEnterFrame = function(){
rot += 5;
wd += 0.3;
rot_x = Math.cos(rot*Math.PI/180)*wd;
rot_y = Math.sin(rot*Math.PI/180)*wd;
mc1._x += (275+rot_x-mc1._x)/cut;
mc1._y += (200+rot_y-mc1._y)/cut;
}
stop();
計算とかAS全然駄目な奴が勘で作るとこんな感じ。
337 :
331 :2006/01/10(火) 19:30:34 ID:tIRk7UeA
>>329 アルキメデスの螺旋じゃなくて、円を発展させる感じで考えたほうが楽かも
329ふうにonClipEventとして書くならこんな感じ
onClipEvent (load) {
r = 10
rc = 0
}
onClipEvent (enterFrame) {
rc++
kakudo = (kakudo + r >=360) ? 0 : kakudo + r;
radian = kakudo * Math.PI/180;
_x = Math.cos(radian)*rc + Stage.width/2;
_y = Math.sin(radian)*rc + Stage.height/2;
}
周間の距離が一定になってるはずです
334で書いたのは回転角度と回転半径が
どっちも『r』だからだめなんじゃないかな?
あと"Stage.width"、"Stage.height"でステージサイズの幅と高さを取得できるから
回転半径をど真ん中に置きたい場合にはステージサイズに影響されないから使える
338 :
Now_loading...774KB :2006/01/10(火) 23:22:48 ID:w4gMWtBf
デバイスフォントの大きさが同じサイズ指定してもMacとWindowsとで違うので、 実行環境がMacとWindowsかをActionScriptで取得して、フォントサイズを 条件分岐したいと思ってます。 実行環境がMacかWindowsかを取得するにはどのコマンドを使ったらよいでしょうか?
339 :
315 :2006/01/10(火) 23:22:59 ID:+ecfbtce
>>324 >>325 みなさんありがとうございます!
こんな勉強不足の人間のために…。
やってみましたが、全滅ですた。ああ。
なんか、違う方法とってみます。
すみませんでした。
でも勉強になりました!
>>338 つ System.capabilities.os
341 :
315 :2006/01/10(火) 23:49:54 ID:+ecfbtce
去っておいて、すみません。 最後に一つだけ。 どうもMC1の2フレーム目にMC2(dd02)がいて、その中にMC3(d02)がいるという構造が駄目な気がしてきました。 MC1のクリップアクションからMC3(d02)に this.dd02.d02.loadVariables("colorno.txt"); という感じで渡すにはどうすればいいのでしょうか? これはすべてが1フレーム目にいる場合に通用するようなのです。 たとえば this.dd02(2).d02.loadVariables("colorno.txt"); という感じで指定できないでしょうか? お願いします!
342 :
Now_loading...774KB :2006/01/10(火) 23:57:37 ID:TTvP2cOA
>>341 そりゃ当たり前だよ。
別のフレームにいるならその前にそのフレームに移動しなきゃ駄目。
とりあえず
this.gotoAndStop(2);
this.dd02.d02.loadVariables("colorno.txt");
とでもやれば出来そうだけど、
そもそも、そのやり方から離れた方がいいんでは…。
343 :
315 :2006/01/11(水) 00:13:52 ID:E8I3OBqt
>>342 ありがとうございます!できました!
やっぱ当たり前でしたか。まだまだ分かって無くて。
皆さんに教えていただいた、loadVarsはまだ自分では理解できないので
いったんloadvar...でやってから勉強しつつ再チャレンジしてみようと
思います!!
やっぱスマートなスクリプトの方がいいですよね。
344 :
338 :2006/01/11(水) 00:16:19 ID:deOBJOsm
>>340 ありがとう!取得できました。助かりました。
>>325 横から質問すんません
これを実際に試すと
for(var n in this)のthisが、traceするとloadDataになって
内包されたMCは返されないんですけど、flash8だと平気ってことですか?
ハロー(注意報)。 getTimerの精度ってどこまで保障されてるんでしょう? どの環境でも1ms刻みの数字が返ってくるものと考えていいんでしょうか。経験的にどうっすか。 今作ってるゲームで、高フレームレートと正確な実行速度が欲しいので Flash自体のフレームレートは100fpsにして、 フレーム内ではgetTimerの変化ぶん進めるようなことをやってるんですが、 もしgetTimerの精度が低い環境があると動きがカクついてしまうなと。 そういうのJavaアプレットやiアプリで何度も経験してまして。 一応、手元の3台のWindows PCのIEでは60fpsから90fpsでなめらかに動いているようなんですが。 wmodeの変更は無しです。カーソルキーを使うし、完全に正しい実行速度にはならないので。
>>345 Flash8どーのこーのではなく、内包されたMCが返ってくるようにすればいい。
>325のASの for( var n in this) { } の中身を
for (var n in _root.my_mc) {
if (typeof _root.my_mc[n] == "movieclip") {
var myColor = new Color(_root.my_mc[n]);
myColor.setRGB(Number(loadData.daycolor02));
}
}
にする。_root.my_mcはMCを内包しているMC(大元のMC)のインスタンス名ね。
>>346 過去ログ見ると
内部的には結構信頼できると思うけど、
値を参照→表示
とかに時間がかかるのであまり信頼できない。
らしいよ。
349 :
345 :2006/01/11(水) 01:55:28 ID:6z+myDoE
>>347 すいません。質問の仕方が悪すぎました。
「このthisがFlash8ならムービークリップを返す」か否かを聞いてみたかったんです。
flashmx2004でターゲットパスを挿入でASを書いたMCを指定しても、
相対パス指定だとthisと表示されるので動くはずなのに、実際は違うものが返されましたが、
詳しく解説してくださっている部分はMCを返す表現をしていたので、
自分の設定やなにかで変わるのか、それともヴァージョンによる違いなのかを
確認したかったのです。
分かりづらくてすみません。
350 :
347 :2006/01/11(水) 02:05:34 ID:AZQujnRA
>>349 それはすいません。いや、すいますいません。
loadData.onLoad = function(s){} 内に
thisを書いてるからloadDataが返ってくると予想。
Flash8持ってないけど同じようになると予想。
351 :
Now_loading...774KB :2006/01/11(水) 02:47:07 ID:FYB2KsDf
質問です。 swfに外部swfを読み込む際に、読み込み時に、下のムービーを消さずに 再生したいのです。 例)池の上に魚を読み込むような感じ。 このとき、池が消えないように、魚を外部から読み込みたい。 loadMovieNumで、stage_mcに外部swfを読み込んだのですが、 何の反応もしません。 簡単なもので、以下のように実験しました。 ボタンとstageのMCを用意して、 ボタン_mcに on(release){ _parent.stage.loadMovieNum("A.swf",10) } ちなみに、loadMovie("A.swf") は、うまくいきましたので、パスは間違っていません。 なにか、ごく基本的なこと見落としてしまっているのでしょうか? ちなみに、WinXP,MXPro2004,Player7です。 よろしくお願いします。
on(release){ _parent.stage.loadMovie("A.swf"); } ができてるってこと?
追記: つかloadMovieやloadMoviNumと_mc.loadMovieは違うぞ。 それぞれの引数とか使い方をヘルプでチェック。
354 :
Now_loading...774KB :2006/01/11(水) 10:02:02 ID:m5jnDU/k
351です。 ヘルプやら参考サイトにかじりついてやっとこさloadMovieNUMを理解できました。インスタンスは必要なかったのですね。 loadMovieNUM(swf,1)のみで読み込めました。アドバイスくれた方に感謝です。ありがとうございました。
355 :
329 :2006/01/11(水) 12:14:53 ID:CS1kKpg7
>336,337 ありがとうございます。螺旋は出来ました。 カージオイド曲線とか花びら見たいのも挑戦してみます。 this._x = c_x+Math.cos(radian)*r; this._y = c_y+Math.sin(radian)*r; これを基本にして、各極座標の条件に合うようにいじればいい気がしてきました
356 :
みゆ :2006/01/11(水) 15:34:53 ID:t6rDFzfA
ムービクリップA内にあるボタンAから、 ルートにあるものを操作させたいのですが、反応しません。 以下がボタンAのASです。 on (press) { _root.video._alpha=0 } ボタンAを押すとムービクリップAが消えるようにしたいです。 初歩的な質問かもしれませんが、よろしくお願いします。
on (release, releaseOutside) { _root.video._visible = 0; }
というかインスタンス名ちゃんとvideoになってるの?
>>356 非表示にしたいだけなら_visible使いなよ
357が書いててくれたね。スマン
環境 WinXP FLASH8 ムービークリップで右から左へ動くようなアニメーションをさせています。 この動かす対象を変更したいです。 具体的にいうと ムービークリップ→プロパティ→シンボルの入れ替え で対象のインスタンスをライブラリの入れ替えしたいです。 どのような関数を使用すればよいのでしょうか? よろしくお願いします。
362 :
Now_loading...774KB :2006/01/11(水) 17:25:58 ID:WDJXuQFC
質問させてください。 ブラウザが閉じられたり、ページが移動したりしたときに、 それをFlashムービーが感知して処理を行うことはできますか? 例えば、ブラウザが閉じられたときにFlashムービーから CGIに値を送信する。というような処理です。
363 :
みゆ :2006/01/11(水) 19:25:42 ID:t6rDFzfA
解決しました! alphaは、なぜか効かないみたいですね。 そういうものなのかな。。 ありがとうございました。
>>361 右から左に動く空のMCを作成して
そこにattachMovie
>>362 Flashだけでは無理かな。
JavaScript使えば出来そう。
>>362 別窓開いてLocalConnection使うとか
366 :
Now_loading...774KB :2006/01/12(木) 01:26:52 ID:PlCKlno8
WIN FLASH5/MX2004使用です。 NPCと対戦するゲームで、自分の番→NPCの番→自分…と順繰りにさせるには、 どういった処理をすれば良いでしょうか? 頭をフル回転させてみたんですが カラMCに、プレイヤーに順繰りに変数を渡していくスクリプトを書き ゲームを動かすスクリプトの詰まったMCへその変数をぶっこんで、プレイヤーごとに動かして行く …というどんくさい処理しか思い浮かびませんでした。 ババ抜きや人生ゲームのような、動きは一定で複数人のNPCがいる類いのゲームです。 スクリプト自体でなくてすみません。お知恵をかして下さい。
367 :
Now_loading...774KB :2006/01/12(木) 01:34:19 ID:r+Vjg2t+
>>366 ゲームを作れるレベルにあって、
その程度を組めないってのは想像出来ないんだけど…。
onEnterFrame, setInterval, 又はfor等で一気に処理にしても、
その処理が終わった時点で中断or停止してから
自分の操作を再設定でいいんじゃないの?
368 :
366 :2006/01/12(木) 01:37:43 ID:PlCKlno8
補足です >カラMCに、プレイヤーに順繰りに変数を渡して行くスクリプトは ゲームを動かすスクリプトの1プレーヤー分の処理が終了したら カラMCにプレイヤー01の番が終了したとフラグを立てる (カラMCの中の処理)→01終了のフラグが立ってたら、 ゲーム部のスクリプトを次のプレイヤー02で開始させる 以降、02終了フラグが立ってたら03、03終了が立ってたら元に戻って01… 何かもどかしいというか、多分変ですよね。ご指導お願いします。
369 :
Now_loading...774KB :2006/01/12(木) 01:40:14 ID:25zAKlwq
自分の番で発生するイベントハンドラをトリガーにしてNPCの処理とかすればいいんでねーの?
370 :
366 :2006/01/12(木) 01:41:36 ID:PlCKlno8
>367 その一気に処理するというのがどうしたらいいか、よく判らなかったもので…。 そうですね、要は繰り返させればいいんですよね。ヒント掴めました。ありがとうございます。
371 :
366 :2006/01/12(木) 01:44:29 ID:PlCKlno8
>369 連レスすみません。 自分の番→NPCの処理をfor辺りでループさせる→止める→自分の番… こんな感じでしょうか。 もっと勉強してきます。ありがとうございました。
すみません。ある程度探しましたが、なかったので質問させていただきます。 _x==50になるまで_x ++;を繰り返し、50になったら次に移動 というASはどのようにすればできますか?
>>372 何がやりたいかよく分からないけど、こういう事?
//フレームを止める
stop();
mc.onEnterFrame = function() {
if (mc._x < 50){
mc._x++;
} else {
delete mc.onEnterFrame;
//次のフレームに移動
nextFrame();
}
}
説明不足ですみませんでした。 アクションゲームなどの足場などの当たり判定のところで、今までは onClipEvent(enterFrame){ _y+=2;//実際には違うがこのような感じに重力を設定 for (i=0;i<=5;i++){ if (_root.stage.hitTest(_x,_y,true)) {_y--;}//押し戻し } } とforを使って押し戻しを繰り返すことでやってきましたが、 forだと無駄な場合も出てきてしまうので、ifのhitTestがtrueだったらもう一回ifをやり、 falseだったら繰り返さないという風なことはできないかと考えました。
whileでいいんじゃね
forの間は画面再描画は無いから、_y-=5;と同等になるのでは? hitしたら足場の上に戻すという単純な方法でいいんじゃないかな。
みんなサンクス。とりあえずwhileを使うことにする。 なんかC言語のとこを参考にしたが、 while(_root.stage.hitTest(_x,_y,true)) {_y--;} でいいのかな てかifとwhileが変わっただけやんwこんなの知らなかったなんて恥だなorz ありがとでした。
>>379 普通MCの座標を動かすのにforとかwhileとか使わないと思うけど。
上からMCが落ちてきて地面にぶつかったら(y座標が規定値を超えたら)押し戻す処理なら
onEnterFrameとif文でできないかな。
複数のMCのX,Y座標を配列に入れて一度にforで処理するのはわかるが
ひとつのMCをチェックするのにforやwhileを使う必要は無いでしょ。
>>376 のスクリプトで言うとなぜ1フレームで6回処理する必要があるのか?
whileにしたところでhitしたときは1回しか処理されないし。だったらifでいいじゃんと。
>>380 の言うようにenterframe,ifで問題なし。
382 :
Now_loading...774KB :2006/01/13(金) 12:09:04 ID:ywz++GGq
まだまだ未熟者です。 突然ですが、書き出しして、問題なくフラッシュを見ることはできるのですが、 タイムライン上でプレビューしようとすると、5フレームぐらいで止まるんですが なぜでしょうか? わかる方教えてください。 ちなみに、自分はMCを使わずにグラフィックシンボルで作っています。 ソフト:flash MX
383 :
382 :2006/01/13(金) 12:09:40 ID:ywz++GGq
すいません、ageました、、、
384 :
382 :2006/01/13(金) 12:10:37 ID:ywz++GGq
すいません、誤爆しますた。。。
いまポトリスのようなゲームを作っているんですが、 弾が地面に当たると地面が削れるようにしたいんですが、 どうすればいいんでしょうか? よろしくお願いします。
386 :
385 :2006/01/13(金) 15:14:39 ID:Ps1ru+2P
すいません、環境書くのを忘れました flash mx professional 2004です。
>>385 毎フレーム、弾のMCと地面のMCをhitTestで接触判定して
接触していたら地面MCを消す。
スクリプト書けというなら、
このスレのほとんどの奴がふざけるなと言うと思う。
>>385 現状で、地面はどういう風に書いてるの?
グリッドで管理してる?それともふつうに書いてる?
前者だったら、どのグリッドに着弾したかを判定して、消せばいいだけで、
後者だったら、Flash8以降であれば、ビットマップデータに変換しておいて、
着弾周辺のピクセルを消す処理になるよ。
8なら割と楽だけど、2004以前だと厳しい処理かもね。
2004で後者なら、消すんじゃなくて、着弾地点に背景色と同じMCをattachして
見た目削れてるようにするのが楽なんじゃないかな?増えてくると厳しいけど。
389 :
385 :2006/01/13(金) 16:31:53 ID:53v7uFFH
390 :
385 :2006/01/13(金) 16:32:34 ID:53v7uFFH
すいません、誤爆です
>>380 ,
>>381 問題大ありです。
説明していないところがあるので、それではできなくなります。すみません。
■ ■
■■■■■
このような感じのステージ画像が_root.stageの中身となります。
この状態では画像と画像のhitTestは使えないので、片方を点にしました。
それにより、一つの画像だけで段に乗るということができます。
そして地面、天井、壁が同じというわけではないので、
規定値を越えたら・・・ということはできません。
そして重力もenterFrameで
juu+=1.5; _y += juu/4; if(地面に降りたら){juu=0};
という風にやっており、場合によっては1以上めり込んでしまう場合があるので、
forやwhileを使う必要があったのです。
地面だけの場合はそれでも必要ありませんでしたが、
複数場所があるのでそれではダメです。
長文失礼しました。
重力とかの加速度とあたり判定は無関係でしょ。 ヒットポイントは一つだけなのかな? キャラクターに何カ所かあたり判定ポイントを設定したりするけど。 いずれにしても、hittestをループで戻るまで呼ぶなんて、俺は絶対やらんな。 ヒットしたらそれの座標を計算して戻してあげればいいだけ。
>>391 えーと、それは一枚の画像をバックに置いて
座標値で地面を決めているということ?
だったら地面座標よりMCが下に行った場合は、
MCのy座標をマイナスして地面座標に近づけるという方法ではなく、
MCのy座標を地面座標にすればいいだけじゃないの?
ちなみにParaFlaです。
>>392 ふむ、計算ですか。
現在は地面のy座標は3つ(実際には段がもう一つ上にある)なので、
これはそっちのほうがいいかもしれない…
ですが、ナナメがモーフィングさせたときにそれでは対応できないか・・・
>>393 画像そのものが当たり判定になってます。
キャラの足のところの点が地面の画像に当たると押し返す・・・みたいな
地面の座標は考えて描いたので分かりますが…
ああ、地面がうねっていたりした場合に、 MCと地面のY座標差が判らないってことね。 それなら俺もループ処理ぐらいしか思いつかないな。 8ならビットマップで当たり判定とれるが、paraflaか・・・。
どうしてもその方法でっていうなら、地面の座標を 今回と前回のMC座標との間で2分法を使って探索すれば ある程度は計算オーダーを稼げると思うよ
>>395 一応ParaFlaでもフィルタとか影とか8は使えるのでもしかしたらできるかもしれませんが…
8はよくわからん(´・ω・`)
>>396 2分法は詳しいことは知らないが、
今の当たっているときと、1フレーム前の当たっていないときの座標を取り、
その間の地面の座標を求め、_yに入れるということ?
ふむ、それならよさそうだけどやり方がorz
>>397 var a = 前回のY座標
var b = 今回のY座標
var rimit = 10; // 最大探索回数
var eps = 0.1; // 収束条件
var m;
do {
m = (a + b) / 2;
if (_root.stage.hitTest(x,m,true) == true) {
b = m;
} else {
a = m;
}
if (--rimit < 0) { break;} // 探索打ち切り
} while (Math.abs(b - a) >= eps);
y = a; // 結果
ちなみにこれX座標については全く考慮してないから。ただ上に押し上げるだけ。
でもこれで早くなるかどうかは実際に動かしてみないと分からん。
X座標も変化させたいならMCの移動関数から導くとか直線補完したりしてくれ。
2分法については詳しくはググればいくらでも出てくる。
399 :
Now_loading...774KB :2006/01/16(月) 18:26:46 ID:P+/bYnKS
下記の条件でFLVファイルを読み込んでいるのですが、completeイベントでの処理が発生しません。 いろいろ試してみましたがNGなので、質問させていただきます。 どなたか原因に心当たりのある方がいましたら、レスしていただけると助かります。 Flashバージョン:Flash8 Professional(Windows) FLVエンコードソフト:Flash8付属のVideo Encoder(Flash作成と同一マシン) FLV出力設定は、Flash7標準品質とFlash8標準品質の両方 FLVファイル名は「sample1.flv」です。 コードは下記です。 コードについては、Flashのヘルプをほとんどそのまま使用しています。 import mx.video.*; var listenerObject:Object = new Object(); listenerObject.ready = function(eventObject:Object):Void { my_ta.text = "fin"; }; my_FLVPlybk.addEventListener("ready", listenerObject); my_FLVPlybk.contentPath = "sample1.flv"; 補足としてですが、completeイベントでのイベントは動かないのですが、readyイベントに変えてみると再生の初めに正常にイベントが発生しテキストエリアにfinと表示されました。 以上、わかりにくい部分があるかもしれませんが、よろしくお願いいたします。
400 :
399 :2006/01/16(月) 21:08:29 ID:VIhD7eZ/
ちなみに、FLVファイルの再生時間は60秒ほどで、ローカル環境で試しています。
Flash MX 2004を使っているのですが、if文の分岐で「(ムービークリップ名:selectMC)が3フレーム目の時だけ働く」というのはどういったif文を書けば良いのでしょうか? ASに詳しい方、是非ともよろしくお願いします。
onEnterFrame=function(){ if(selectMC._currentframe == 3){ this.play(); } } とかそんな感じ。 何が働くのか良くわからないから this.play()にやりたいこといれてくれ。
>>402 ありがとうございます。
ちなみに、「selectMC」が3フレーム目で、「Leftキー」を押したとき
という条件だと、
onClipEvent (keyDown) {
if(Key.isDown(keyLEFT) && (selectMC._currentframe == 3)) {
上記の時行うこと}
}
といった記述方法で間違いないでしょうか?
試して見たのですが、どうにも働かず…。
なんども申し訳ありませんが、よろしくお願いします。
質問です。 あるときに画面のどこでもいいからクリックしたら特定の処理をしたい場合に 画面サイズのMC(base)をつくって以下のASを実行させたのですが base.onPress = function(){ //処理終了 this.onPress = null; this._visible=false; } 次にbase._visible = trueにしたときに 頼みもしないのにbase上のマウスカーソルが指の形のままになってしまいます。 (クリックしても反応はなし) onPress = function()を解放してもマウスがRollOver反応のはなくならないのでしょうか? XPでFLASH8(パブリッシュ設定は6)使ってます。
keyDownがちゃんと動いているか onClipEvent (keyDown) { if(Key.isDown(keyLEFT)){ trace("OK"); } } とかで一つづつ動作ためしていくとよろし 多分、ASかいている場所が違うMCで、パスが異なっている。 _root._selectMC._currentframe == 3 で行けるかな。
>>404 useHandcursorかな?
Flashでつくられたサイトでクリッコして画面が変わっても
指の形は残っちゃう仕様だからそっちかも
マウスカーソル消すか、リフレッシュして
再描画すれば消えるかも。今、試す環境無くてスマン
>>405 本当に何度も申し訳ありません。
色々教えてくださったにも関わらず、結局出来なかった私をお許し下さい。
一応、作成途中のflaファイルをUPしますので、宜しければご指南の程よろしくお願いします。
ttp://www.uploda.org/ 上記「upローダー」の288371番です。
計算した値を少数第2まで表示させたいのですが、 どうしたらよいですか?
409 :
Now_loading...774KB :2006/01/17(火) 00:54:26 ID:Qufq7UNr BE:39644633-
>>408 100かけて小数切り捨てて100で割ったら求まりますよ〜
>>407 onClipEvent (keyDown) {
if (Key.isDown(key.LEFT)) { //←「.」が抜けてる。
trace("OK");
}
}
教えてもらったASがどういうことをやっているのか考えたらわかる。
onClipEvent(enterFrame) と onEnterFrame の違いについて考えてたんだけど、 onClipEvent(enterFrame) が Flash Player 5 で、 onEnterFrame が Flash Player 6 で、 onEnterFrame のほうが、いろんなところで呼び出される関数を切り替える自由度があるよね。 つまりその自由度のために onEnterFrame が生まれたってことで、 onEnterFrame のほうを使用するのが推奨されてると考えていいんだよね?
>>411 onClipEventは同じシンボルをASだけ変えて配置するのに便利。
どちらもアリ。
413 :
Now_loading...774KB :2006/01/18(水) 01:47:00 ID:pnhnj0Ef BE:52859243-
>>411 インスタンスを
静的に作るならonClipEvent(enterFrame)
動的に作るならonEnterFrame
on〜はイベントドリブンを実装したという感じ。 ASというoopを目指してる言語とはちょっとちがう気がする。 自分としては、リスナーやらいろいろ使える方がいいし、 どうせ学ぶんなら進化していく方を選ぶな。
415 :
411 :2006/01/18(水) 02:06:34 ID:NHWBm/uJ
>>412 ごめん、状況がよくわからない。
よければ、onClipEventでのコードとonEnterFrameでのコードを書いて見せて。
>>413 そう使い分けると、どうなるの?
それがあなたのポリシーって話なのか、そうすると保守性がよくなるのか、
そうすると速度的に有利だとか、そのへんの話が見えないよ。
>>411 多分5の頃はカンタンプログラミング寄りの設計で
6から潮流にあわせたoopを目指した結果だと思うが。
速度はたぶんコンパイルすると同じ処理になるから
変わらないはず。試してないけど。
個人的にはあるMCが独立した動きをして他に影響しない場合、
親の変数を見て色が変わるだけとか、のときのみ
気楽にイベントハンドラで適当に書いてる。
つうか偉そうだな喪前
attachMovieでMCを読み込み、その読み込んだMC全てに同じスクリプトを実行させたいならフレームアクション。 最初からステージに同じMCを複数配置し、その全てに個別のスクリプトを実行させたいならクリップアクション。 フレームアクションで全てを別々にコントロールすることもできるがその辺は好みや状況に応じて。
my_str = "名前,1000"; var my_array = my_str.split(","); my_array[1] += 500; trace(my_array[1]); 「1500」という結果を期待してこのようなコードを書いたのですが、 「1000500」のように、ストリングスの足し算みたいになってしまいます。 2行目と3行目の間に Number(my_array[1]); を追加しても結果は同じでした。 どうかアドバイスをよろしくお願いいたします。
Number();は引数自体を変える訳じゃないよ。 戻り値が数値となるわけだかから、元の配列を使いたいなら、 my_array[1] = Number(my_array[1])+500; な、感じかな。
>>418 my_str = "名前,1000";
var my_array = my_str.split(",");
my_array[1] = Number(my_array[1])+500;
trace(my_array[1]);
my_str = "名前,1000";
var my_array = my_str.split(",");
my_array[1] = Number(my_array[1]);
my_array[1] += 500;
trace(my_array[1]);
>>419 >>420 そういうことだったんですかー!
勉強になりました。
どうもありがとうございました。m(_ _ m)
422 :
Now_loading...774KB :2006/01/18(水) 19:15:30 ID:Tshyp6qg
ソフト=FlashMX2004, OS=Win98SE 2点質問があります Q1)検索対象のTxt(txt1)があり、テキストフィールド(変数:sw)内に文字列 を入れてtxt1内を検索し、swの位置をtxt1.indexOf(sw)で求めようとしています。 一応成功はしたのですが、swが大文字・小文字に関わらずヒットします。そこで、 例えばABCとAbcを区別して検索する方法がありましたら教えて下さい。 Q2)過去にダイナミックテキストの欄(フォント:MS Pゴシックの24pt)を一旦 作り、これを再利用したのですが、表示される文字が到底24ptとは言えず、どう 見ても10pt位にしか表示されません。欄を拡大すれば解決しましたが、このような 現象はよく発生します。対策がありましたらお教え願います。
>>422 大文字小文字に関わらずヒットする例を知りたいが。
>>422 Q2)
これ俺も苦労したんだよ〜。
そのとき調査した結果をコピペしてあげよう。
自由変更ツールやプロパティ入力などでテキストボックスの幅・高さを
変更すると、その比率が文字の幅・高さにかかってしまうようなのだ。
埋め込みナシ → 高さの比率が、文字の大きさにかかる
埋め込みアリ → 幅・高さの比率が文字の幅・高さにかかる
なので、テキストフィールドは、テキストツールでのみしか触らない。
これが鉄則。
>>424 String.toLowerCase()
427 :
422 :2006/01/18(水) 22:04:42 ID:ROR1AeF4
>>424 大文字小文字に関わらずヒットする例を知りたいが。
うっ! なんか不安になってきた。Q1)については結果を再確認します。
>>423-426 Thxです。
428 :
422 :2006/01/19(木) 04:46:08 ID:dv+Tiuvy
>>424 やっぱり、大文字小文字を識別してヒットしていました。
なのでQ1)はナシです。
429 :
Now_loading...774KB :2006/01/19(木) 16:25:24 ID:Jzk9fXBc
「スタートページに登録ボタン」を作るにはどういう記述をすれば良いのでしょうか。 「お気に入りに追加」ボタンのように on (release) { getURL("javascript:window.external.AddFavorite('URL','サイト名')"); } と簡単にはいかないようで。。 setHomePageをキーワードとしてググると、海外サイト情報ばかりで 下記のような記述が出てきますが理解不能です。 on (release) { getURL("javascript:void(document.links[0].style.behavior='url(#default#homepage)');void document.links[0].setHomePage('URL/');", "_self", "POST"); } どなたかお助け下さい。
>>429 javascriptで作れる?
出来たらそれをgetURLするだけ
431 :
429 :2006/01/19(木) 19:36:31 ID:Jzk9fXBc
レスありがとうございます。 やってみましたが、動作しません。。。 on (release) { getURL("javascript:window.style.behavior='url(#default#homepage)'; window.setHomePage('URL')"); } windowの部分を window.document.all('ID') としてもみましたが駄目です。 何がいけないのでしょうか。
んな迷惑なボタン作んな。
ちょっとはまり気味なので質問させてください。 ゲームを作っているのですが、自キャラと壁の当たり判定をhitTestを使って以下のようにしているのですが ●自キャラ(MC_char) on(EnterFrame){ // 右に進む場合 _root.backup_x = _x; _root.backup_rx = _root._x; _x += 4; _root._x -= 4; } ●壁(MC_wall) on(EnterFrame){ if(this.hitTest(MC_char._x,MC_char._y,true)==true){ MC_char._x = _root.backup_x; _root._x = _root.backup_rx; } ※右方向以外の3方向は省略 以前は、ASの実行順番が「壁→自キャラ」になっていました。 そのときは普通に動いていたのですが、 レイヤーの関係で実行順番を「自キャラ→壁」にしたところ、壁に当たった場合、そのままくっついてしまう現象が起きました。orz (壁に当たった後、壁と逆向きに動いても、hitTestの反応がtrueになり続ける) なぜこんなことになるのかわかりません。助けてください。 OSはXPで、FLASH8を使っています。
追記 _root._xを動かしているのは、自キャラを動かさずに画面スクロールだけさせるためです。
435 :
329 :2006/01/20(金) 12:27:21 ID:0tR9PI6j
Flash8でラジオボタンコンポーネントです。 ラジオボタンを押したときに何も出力されないのですが、何が行けないのでしょうか? よろしくお願いします。 firstValue = radioGroup.getValue(); trace(firstValue); radioGroup.setChangeHandler("kType"); function kType(){ trace("kType"); }
>>434 デバッガでステップ実行してみる。
>>435 まずは、RadioButton コンポーネントのヘルプを見て、そこから始めてみそ。
>>435 var listenerObject:Object = new Object();
listenerObject.click = function(eventObj:Object) {
trace(radioGroup.selectedData);
trace(radioGroup.selection);
};
radioGroup.addEventListener("click", listenerObject);
438 :
329 :2006/01/20(金) 14:44:25 ID:0tR9PI6j
click でいいのね。 actionscript辞典もってるんだがこれが古いのかw ヘルプもみてみます。ありがとうございました。
439 :
Now_loading...774KB :2006/01/20(金) 16:53:38 ID:F+LsHGwA
labelコンポーネントのFontSizeを ActionScriptで変更するにはどうすればいいんのでしょうか? 「ラベルのインスタンス名」.fontSize = 100; とかやってみても、変わりません、、 宜しくお願いします。
v2コンポーネントなら、 ラベル名.setStyle("fontSize",100) でどうでしょ
>>439 コンポーネントの大きさが小さいとか。24とか32でやってみ。
442 :
Now_loading...774KB :2006/01/21(土) 01:42:13 ID:hj7DwfdM
Flash8使ってるのですが、↓ここのサイトの
http://www.3enhancedesigners.com/tutorials/flash/pulldownmenu/pulldownmenu1.asp コレをつくったのですが、ボタンを押してもメニューが出てきません
こんな感じのメニューにマウスを乗せるとリンクボタンがスクロールして出てくる物を作りたいのですが
1フレーム目にメニューボタンを置き、2フレーム目以降にスクロールしてるモーションを作り、
適当なところ(15フレーム目くらい)で止めて、
メニューと出て来たリンクボタンからマウスが離れると1フレーム目に戻る物を作りたいのですが、
1フレーム目で、
stop ();
メニューボタンに
onRollOver{
� � this.gotoAndStop(15);
}
2〜15フレーム目
何もなし
16フレーム目
stop ();
gotoAndPlay(1);
って、全然だめですよね。初めてAS弄ってみたんですがサッパリ分かりません。
何か良い方法はありませんか?お願いいたします
スレ違いでしたら誘導お願いします。
>>442 ボタン内部のタイムラインには何も書かなくていいです。
以下のスクリプトをボタンの置いてあるタイムラインに書いてください。
//ボタンの再生を止める。
btn.stop();
//マウスオーバーで2フレーム目から再生
btn.onRollOver = function() {
btn.gotoAndPlay(2);
//1フレームごとに実行
btn.onEnterFrame = function() {
//もし、ボタンの再生フレームが16フレーム目なら・・・
if (btn._currentframe == 16) {
//ボタンの再生を止める。
btn.stop();
//1フレームごとに実行する処理を消去
delete btn.onEnterFrame;
}
};
};
444 :
443 :2006/01/21(土) 07:32:08 ID:vSkfT/Nv
続き /* //マウスアウトで1フレーム目に徐々に移動するならコメントはずす。 btn.onRollOut = function() { //1フレームごとに実行 btn.onEnterFrame = function() { //もし、ボタンの再生フレームが2フレーム目より後なら・・・ if (btn._currentframe>=2) { //ボタンの再生フレームを1つ前に移動 btn.prevFrame(); } else { //ボタンの再生フレームが2フレーム目の前なら1フレームごとに実行する処理を消去 delete btn.onEnterFrame; } }; }; */ /* //マウスアウトで1フレーム目に直ちに強制移動するならコメントはずす。 btn.onRollOut = function() { btn.gotoAndStop(1); }; */
445 :
442 :2006/01/21(土) 08:28:05 ID:hj7DwfdM
>>443-444 ASありがとうございます.でもなんかマウスのせなくてもスクロールしちゃって
離れても止まんないです。何が悪いんだろう。。。
ボタンの置いてあるタイムラインってことはレイヤーは違くても大丈夫ですよね?
あと、
>>444 からは、強制移動する事にしたので
btn.onRollOut = function() {
btn.gotoAndStop(1);
};
だけを
>>433 に続けて書き込めばいいんですよね?
なんでうまくいかないんだぁorz
>>445 ボタンのインスタンス名をbtnにすれば大丈夫。
もしくは自分で好きな名前をつけてスクリプトのbtnの部分を書き換えればいいよ。
447 :
329 :2006/01/21(土) 10:17:39 ID:nMJfzH3U
Flash8使ってます ドキュメントプロパティで、背景色やステージサイズを変更できますが、 スクリプトで背景色を変えることって出来るでしょうか? よろしくお願いします
>>447 ASでステージの色は変えれない。
MCをステージに配置して色を変える。
449 :
329 :2006/01/21(土) 12:24:52 ID:nMJfzH3U
そうでしたか。ありがとうございましたー
Flash 8 です。 setPixel32をつかって円を描くことってできますか?
Flash8で、Flash8/ActionScript2.0用にパブリッシュしています。 MXから8に移行したのですが、ビットマップにボカシがかかって汚くなってしまいました。 最低画質に設定すれば良いのですが、それだとベクトルデータの方が汚くなります。 ビットマップは、アニメーションGIFを取り込んで状態で、 各フレームに1枚ずつ配置されたムービークリップです。 どうにかこのムービークリップだけ低画質にする方法はないでしょうか?
>>452 _qualityプロパティはどう?
mc._quality="LOW";
とか
454 :
Now_loading...774KB :2006/01/21(土) 16:41:41 ID:7KXQ3KPw
ソフト=FlashMX2004、 OS=Win98SE Q)ダイナミックテキストの消去法&書き換え法 テキスト名指定欄(変数:txtName)とダイナミックテキスト欄(変数:txt1) を用意し、ボタンアクション1として on (press) { System.useCodepage = true; this.loadVariables(txtName+".txt"); } でダイナミックテキスト欄に目的の文章を表示しました。次いで内容をクリア するため、ボタンアクション2として on (press) { txtName = ""; txt1 = ""; } を実行後、新たに別のテキスト名を指定してボタンアクション1を実行すると、 前の文章に新しい文章が後続する形で(連続する形で)表示されます。 そこで質問ですが、新しい文章のみがtxt1の内容になるには、ボタンアクション2 をどのように改造すればいいでしょうか?
>>454 どうやってダイナミックテキストに表示してる?
読み込んだ値入れるときに+=とか使ってない?
458 :
452 :2006/01/21(土) 18:31:41 ID:Vr9PXI1X
>453 その方法だと、個々のムービークリップに対して実行しても全体の画質が変わってしまいます。
Flash8使ってます onClipEvent (enterFrame) { if(Key.getCode()==27){ _root.gotoAndPlay("kekka"); } } Escキーを押すと「kekka」画面にいくようにしたいのですが 2004でやったときとういかplayer7でパブリッシュしたときにはちゃんと実行 させるのですが 8でやるとキーを押しても画面が変わりません どうすればよいでしょうか?
461 :
454 :2006/01/21(土) 19:17:04 ID:BwOdtkQg
>>455 +=は使っていないです。
>>457 import_00_fla6.fla を参考に、System.useCodepage = true; を
メインレイヤーのタイムライン1に移動しましたが効果はありませんでした。
>>461 テキストフィールドに変数を使うのを止める。
textプロパティを使う。
おそらくそれで解決する。
あとね、MC.loadVariables()は使わずに、LoadVarsオブジェクトを使うといいよ。
464 :
456 :2006/01/21(土) 21:40:23 ID:CU/7IwhG
465 :
452 :2006/01/21(土) 23:41:36 ID:Vr9PXI1X
>459 この絵では目立たないんですが、100%の表示が乱れてしまいます。 スムージングも切って、開発環境では普通に見えるんですが、実行すると駄目です。
>>462 textプロパティを使う。 LoadVarsオブジェクトを使うといいよ。
ありがとうございます。試してみます。
>>463 読み込むテキストの中身どうなってる?
ダイナミックテキスト欄の変数がtxt1なので、単に txt1=文章・・・文章
です。文章の最後は//で終わっています。
467 :
Now_loading...774KB :2006/01/22(日) 01:43:34 ID:xpSVgq5+
ASでコメントを書いてるとだんだん表示がおかしくなってくる 半角文字うった後に全角文字をうつと前の半角の文字が消える(半角文字が全角文字に隠れる) 多分フォントの設定なんでしょうけど、フォントを変えてもなかなか解決しません。 解決方法を教えてください
468 :
454&461 :2006/01/22(日) 02:17:24 ID:a4o5WvHV
(ダイナミックテキストの消去法&書き換え法 の続き)
>>462 さんのアドバイスを元に下の様にしました。まず、フレーム
アクションは
System.useCodepage = true;
loadV = new LoadVars(); //オブジェクトloadVの宣言
loadV.onLoad = function() {
txt1_ins.text = loadV.text; //txt1_insはダイナミックテキストのインスタンス
};
として、読み込みのボタンアクションは
on (press) {
loadV.load(txtName+".txt");
}
です。
テキスト名を指定し、読み込みボタンを押しましたが、今度は何も表示
されません。間違いをご指摘願います。
>>468 txt1_ins.text=loadV.txt1;じゃないかな。traceしてみるとどこが悪いかわかるよ。
>>468 >>466 の通りなら読み込んだテキストにtextっていう変数ないんじゃない?
そうでないならターゲットが違うとか?
問題あった時はtrace()入れてどこで躓いてるかチェックするといいよ。
>>469 , 470
そうだ、困った時にはtrace()だ
472 :
Now_loading...774KB :2006/01/22(日) 16:30:07 ID:i5vHY3HW
loadMovieで読み込んだ画像を BitmapDataとして扱うにはどうしたら良いのでしょうか?
draw
474 :
454&461 :2006/01/23(月) 01:21:42 ID:QtLWtaJx
(ダイナミックテキストの消去法&書き換え法 の続き -2)
>>469 , 470 さんの指摘を元に以下の様にしたところ、ボタンアクション1で表示
されるようになりました。しかし、一旦ボタンアクション2で消して再度テキスト
を指定すると、前の文章に付け加えられる形で表示されます。
フレームアクション
System.useCodepage = true;
loadV = new LoadVars(); //オブジェクトloadVの宣言
loadV.onLoad = function() {
txt1_ins.text = loadV.txt1;
trace("loadV.text= "+txt1_ins.text); // loadV.txt1のチェック
};
ボタンアクション1(表示)
on (press) {
loadV.load(txtName+".txt");
}
ボタンアクション2(消去)
on (press) {
txtName = "";
txt1 = "";
txt1_ins.text = undefined;
trace("txt1_ins.text= "+txt1_ins.text); //txt1_ins.textのチェック
}
ボタンアクション2では、txt1_ins.textのチェックのtraceでは中身無し
になっています。後続されるというのは、消し方に問題があるのでしょうか?
(ボタンアクション2のASに問題あり?) 間違いをご指摘願います。
>>474 そのASでやってみたけど、問題なかった。
ボタン1を何回も押したらどうなる?
txtNameの値を変えなかったらどうなる?
テキストの中身をtxt1=a とか簡単なヤツにしたりしてみれば?
もぅflaをupしちゃえば??
>>475 同様、問題なかった。
ちなみにTEST時のスクリプトは以下。
/*
test_text.txtの記載内容
txt1=これはテストです。
*/
System.useCodepage = true;
txtName = "test_text";
loadV = new LoadVars();
loadV.onLoad = function() {
txt1_ins.text = loadV.txt1;
trace("txt1_ins.text= "+txt1_ins.text);
};
//ボタンアクション1(表示)ボタンインスタンス名btn1
this.btn1.onPress = function() {
loadV.load(txtName+".txt");
};
//ボタンアクション2(消去)ボタンインスタンス名btn2
this.btn2.onPress = function() {
txt1_ins.text = undefined;
trace("txt1_ins.text= "+txt1_ins.text);
};
477 :
Now_loading...774KB :2006/01/23(月) 13:37:04 ID:20vU18q1
FLASH8のフィルター機能って、loadMovieで読み込んだ外部画像にも適用できますか?
>>477 コンテナMCにloadMovieする子MCを作って、フィルターはコンテナの方に
かければいけると思う。
479 :
Now_loading...774KB :2006/01/23(月) 15:34:01 ID:20vU18q1
>>478 解決しました!ありがとうございます。
読み込むMCにかけてました。
Flash 8 Pro Windows XP ムービークリップのプロパティにあるカラー:明度を アクションスクリプトから変更するにはどうすればよいのでしょうか? よろしくお願いします。
>>475 , 476
うーん、何でだろう。消すことは可能なのですが、前の文章が居座っています。
どっかに余計スクリプトがないかチェックしてみます。
482 :
Now_loading...774KB :2006/01/23(月) 18:07:17 ID:TI/Fuquq
ソフト: FlashMX2004 課題: MCを線上に配置させる インスタンスXY(描画エリア)で、線の定義を _root.XY.lineStyle(2, 0x0000ff, 100); として _root.XY.onEnterFrame = function() { x++; rX = x*3; rY = -nrt*3/x; //線の関数。nrtは変数(例:100) _root.XY.lineTo(rX, rY); }; で線を描き、MC(例えば▲マーク)をこの線上のみで移動できるようにしたいと 思っています。←モーショントゥイーンの線に沿って移動する感じ このようなことは可能でしょうか? なお、MCが配置される線は関数で与えられる ので、モーショントゥイーンであらかじめ線を固定するのは不可です。
ソフト:Flash8(Pro)
OS:WindowsXP
txt外部読み込みの外部変数を使って
URLを取得して、クリックすると
その外部変数に代入したURLに飛べるようにしたいのですが、
下のASじゃだめでした。
on (release) {
getURL("_root.url", "_blank");//_root.urlはURLが代入された外部変数
}
txt
&url=
http://......./index.html となっています。問題はなさそうなのですが…
何がおかしいのか分かりません。教えてください!
よろしくお願いします。
>>482 課題って・・・宿題なら自分でやんなきゃだめだよ。
>>483 変数名はurltextに変更して、
getURL(_root.urltext , "_blank");
485 :
482 :2006/01/23(月) 18:45:31 ID:g47s+8gr
>>484 いや、宿題の意味の「課題」じゃなくて。。。。
それでは、書き替えます
目標: MCを線上に配置させる
いや外部テキストに記述してる変数名も変えてやってみてくれない? たしかurlってのはプロパティかなんかであったような気がしたから避けたほうがいいかと思う。
488 :
482 :2006/01/23(月) 19:55:32 ID:VgdCWAyZ
すみません、482にアドバイス頂けますか?
>>488 できるよ。
普通にhitTestでカーソル動かせばいい。
そこまで書けたなら後はヘルプみながらでも
ネットで調べても作れるでしょ。
>>489 すみません、hitTestとカーソルの関係が分かりません。
カーソルとは文字入力のカーソルとは違うのですか?
>>483 変数は「"」で囲ってはだめ。
trace(_root.url)で読み込んだ値が正しいか確認。
>>482 rX = x*3;
rY = -nrt*3/x; の2つの式を変形させて
Y = -_root.nrt*3/(X/3);とする
▲をマウスで動かしたときのx座標をXに代入すれば
Yが求まるからYを▲のy座標として代入する。
つまり▲を左右に動かしたらy座標が勝手に決まるから線上を動くことになるんでない?
>>490 関数がわかってるなら、そのまま線引けばいいし、そのままMCの座標きめれば
いいのでは?
媒介変数xの境界条件(どっからどこまで)とかは注意だけど。
特に初期値とか、割り算絡んだときの0除算とか要注意。
#include で読み込んだ外部asファイルにブレークポイントを置いてデバッグすることってできないのでしょうか?
>>492 , 493
Thxです。やってみます。
あー、痰が絡んで喉が痛い。。。。
>>494 外部asファイルを読み込んで、ブレークポイントつけるとか。
>>495 私も鼻水ずるずるです、風邪気をつけなきゃね。
>>497 鼻炎持ちですが、鼻水止めに「ナザールブロック(佐藤製薬)」(←薬局のお勧め)を
使っています。
点鼻薬は、ここ1〜2時間だけでも鼻水を止めたい!時に便利。
(スレ本題とは関係無いですがカキコ)
499 :
494 :2006/01/23(月) 23:33:32 ID:UaLoiz2K
>>496 それって、アクションウィンドウの右上から、「スクリプトの読込み」ってやるってことですよね?
外部asファイルにしたいのは、「編集中はFlashMXのくそエディタから解放されたい」というのが
あるから、それだと読込み・書き出しを何度もしなくちゃならなくてイマイチ……。
>>499 デバッガ使う場合って、ホントにわかんないときだからなあ。
全部のas読まなくても、該当するas読み込んでブレークポイント付けて
元flaでムービーデバッグでそこでとまらないか?
あ、ごめん、ファイル-->開く、ね。
502 :
494 :2006/01/23(月) 23:59:03 ID:UaLoiz2K
ファイル-->開く で開いたasファイルにはブレークポイントつけらんないっぽいです。
>>502 8ならできるんだが、うーんmxだとわからん、スマン。
504 :
494 :2006/01/24(火) 00:28:07 ID:Th+G6CKf
がーん。8ならできるんすかー。 残念……。 ゲーム系作ってて、俺自身のFlash暦は短いせいでブレークポイントは 使いまくりなので、外部編集はあきらめます……。
XPathを使うためにDataBindingClassesをインポートしたA.swfを B.swfにてloadMovieすると、インポートしたクラスがうまく動かないようです。 A.swf単体で動作させたときに正常に動作することは確認しました。 どなたかアドバイスをよろしくお願いいたします。
書き忘れましたが、B.swfでも同じクラスをライブラリに追加し、importしています。
flash8Basicで作ってます。 テキストをムービークリップに変換し、 スペースキーで表示非表示を切り替えたいです。 onClipEvent (keyDown) { checkCnt = 1-checkCnt; if (checkCnt == 1 && Key.isDown(Key.SPACE)) { _root.txt._visible = false; } else if (checkCnt == 0 && Key.isDown(Key.SPACE)) { _root.txt._visible = true; } } 目的のムービークリップのインスタンスに対し 上のようなスクリプトを置きましたが、 どうも反応しません。どうしたらよいでしょうか。
>>507 試してないけど
onClipEvent (keyDown) {
if ( Key.isDown(Key.SPACE)) {
_root.txt._visible = !_root.txt._visible;
}
}
FlashMXです。 いくつかの子MCを持つ親MCがあったとして、子MCもろとも 重なり順が変わる事を期待して親MC.swapDepths(数字) しましたが思った通りになりません。そういう仕様なんでしょうか? 入れ子状態なMCをひとかたまりと見なして深度を管理する良い 方法がありましたら教えて下さい。
510 :
507 :2006/01/24(火) 06:46:58 ID:9Hd9wWbU
>>508 できました!ありがとうございました。
感謝します。顔謝します。
>>509 for inで子MC個々に変えるぐらいしか思いつかないな。
子MCがindexで参照できるならそっちを使って。
いずれにしても、一気に変えるときは他のMCとの競合に注意だね。
質問、とは少し違うのですが。 いままで他の言語(C等)を使っていてASは初めてなのですが on〜 = function(){・・・} が、手軽にタスク処理なんかを増やせるのですごい重宝しています。 そしてASに興味が出てきました。 こういったASならではのおすすめの使いがってのある方式って他にないでしょうか? 当方、MX2004を使っています。
>>512 ASならではかどうか知らないけど、
リスナーとかどうだろう。
someListener = new Object();
someListener.onKeyDown = function () {
if(Key.isDown(Key.UP)){ MC._y -= 1 };
if(Key.isDown(Key.DOWN)){ MC._y += 1 };
if(Key.isDown(Key.LEFT)){ MC._x -= 1 };
if(Key.isDown(Key.RIGHT)){ MC._x += 1 };
};
Key.addListener(someListener);
下らんことを蒸し返さなくていいよ。
>>516 うん、蒸し返すつもりは無いけど、いきなりこっちに来てってやられるとな。
>>514 >>517 ありがとうございます。
というか、検証してたらそもそもクラスの問題ではなく、A.swfのルートで宣言した配列が
B.swfにloadMovieするとundefinedになるようでした。
教えていただいた情報を頼りに_lockrootを設定したのですが、
なかなかうまくいきません。
なんでだろ。
521 :
329 :2006/01/24(火) 12:26:55 ID:zfxLHnoc
Flash8です。 ダイナミックテキストフィールドに1〜10桁の数字をランダムに表示していますが、 桁が増えるとテキストフィールドに入りきりません。 フォントのサイズを自動で変更したいのですがよい方法はあるでしょうか? 今やっているのは、 2桁の場合→サイズ30 3桁の場合→サイズ32 と、予め決めています。
新しい発見をした。
A.swfでloadしたXMLが、B.swfの中で再生されると文字化けしてしまう。
コレが原因だった。
<A.swf>
doc = new XML();
doc.load("
http://www.example.com/test1.xml ");
doc.onLoad = function(success) {
trace(doc.toString);//←問題ナス
}
<B.swf>
dummy_mc.loadMovie("
http://www.example.com/A.swf ");//←ここでは文字化けXMLがtraceされる。
このトラブルって結構ありそうだけど、ググっても見つかりません。
アドバイスよろしくお願いいたします。
523 :
329 :2006/01/24(火) 12:28:08 ID:zfxLHnoc
↑ よろしくお願いします。
>>522 俺も似たようなことをやっているので気になって確かめてみたが、
俺のローカル環境ではそれをやっても文字化けはおきなかった。
多少相対パスが怪しい状況にしてても問題なかった。
おまえさんも、まずは3ファイルをローカルの同一フォルダにおいてる状況から
確認してみたらどうだ?
ちなみに、A.swfにあたる俺のファイルには、
System.useCodepage = true;
を書いている。
>>521 field.txt = 123;// まあなんか数字をセットする
ln = field.txt.toString().length;// 桁数
size = 20;// デフォ
if (ln == 2) size = 30;
if (ln == 3) size = 32;// 桁数に応じてサイズ値を変更。
tf = new TextFormat();
tf.size = size;
field.setTextFormat(tf);// フォントサイズを設定。
こんな感じでええんじゃないの?
526 :
329 :2006/01/24(火) 13:53:23 ID:zfxLHnoc
>525 そうそう、今はこの仕様にしてるんです。 1桁増える毎に、一定ピクセル増加する用に直してみます スクリプトありがとうございました
>>511 ありがとうございました。for in調べてみます。
528 :
480 :2006/01/24(火) 16:09:01 ID:7YgpZGrn
マニュアルを調べてのですがやっぱりわかりませんでした。 この処理はアクションスクリプトではできないのでしょうか? よろしくお願いします。
>>528 rgbで明度といわれても困る。透明度なら_alphaを変えればいい。
hsv色空間での明度ということなら、hsv<-->rgb変換しないとできんがな。
>>528 アクションスクリプトで明度は変更可能
rgbのパーセントとオフセットの明度との関係知ってる?
まぁ簡単だから調べてみ
あとは簡単。ASで明度を計算しちゃいましょう
1、colorオブジェクト作る
2、指定した明度に対応する拡張効果(ra,rb,ga,gb,ab,bb)を出力する関数でも作る
3、setTransformでMCに色を設定して完了だ
ちなみに前の色からだんだんと明度を変化させたいとかなら
getTransformでMCの色の拡張効果を取得出来るからそれ使う
>>529 >>530 ありがとうございました。
MCの色を変更するのでMovieClipクラスのメソッドやプロパティ
ばかり調べていました。
colorオブジェクト使用すればできました。
ありがとうございました。
>>524 ありがとうございます。
System.useCodepage = true; 関係で何かエラーが起きてたようです。
話が相当ややこしくなるのではしょりますが、
System.useCodepage = true;を書くところによって文字化けが起こったり直ったりするので
loadMovieでいろんなswfを読み込むときは、記述の位置を試行錯誤しようという教訓を得ました。
文字エンコード関係はホントややこしいわよね。
目標: MCを線上に配置させる → 成功しました。ありがとうございます。
534 :
Now_loading...774KB :2006/01/25(水) 15:46:50 ID:K0gGqMvE
質問させていただきます。 当方の環境MX2004です。 ムービークリップにloadMovieでswfを読み込むと swf側のNOWLODINGが一瞬表示されるだけで機能しません。 どなたか助けてくださいorz
536 :
Now_loading...774KB :2006/01/25(水) 18:56:31 ID:9sp8tSXj
教えてくれ 10進数、もしくは16進数から2進数への変換方法を! parseIntで10進数に変換するってのは調べた=3
toString
>>536 ほれ
aa=0xFF;
trace(aa.toString(16));
trace(aa.toString(8));
trace(aa.toString(2));
あ、かぶった、スマン。
わかりません 先生!
わかりました 先生! てかtoStoringでヘルプ見てもそんなの載ってなかったお まくろめでぃあ氏ね! そして先生方ありがとう!
AS使えてる人に質問〜。 attachやduplicateでMC増やしたり、new でオブジェクトとか増やしたときに 消さないでそのまま放置でハングったことある? やっぱり作ったものはちゃんとremoveなりdeleteなりしてますか?
いらなくなったら消すよ
544 :
Now_loading...774KB :2006/01/26(木) 00:49:23 ID:312438en
>>542 やってみりゃわかるけど増やし続ければハングするよ。
>>544 消さないで 同じ名前で別のMCを上書きし続けるってのは大丈夫だよね?
>>513 ちょい亀レス。
レスサンクスです。
リスナーですね。調べて見ます^^
547 :
Now_loading...774KB :2006/01/26(木) 13:06:05 ID:Tgdu1VHj
初めて質問させて頂きます。 当方の環境はFLASH MX2004です。 Webサイト作成中です。ボタンを押して別のシーンに飛ばすのですが、 飛ぶ前に元の画面のメニュー以外をゆっくり暗くしていって最終的に真っ暗になってから次のページにいかせたいのですが、うまくいきません。 ちなみにその元のページは静止していなくてモーショントゥイーンで動いています。 アドバイスお願いいたします。
>>547 具体的にどうやっていて、どのように意図と食い違っているのかを書かんと
「暗くなってから、移動させれば?」くらいしか言えん。
>>547 ボタンを押した時に変数を設定
と同時に、黒いシンボルのアルファ値が徐々に上がるアニメーションを再生
真っ黒になった瞬間に変数先にジャンプ
たぶんコレが一番簡単
>>547 使いやすいかどうかは分からないけど自分のやり方
フェードアウトしたいサイズに黒四角を作成してムービークリップシンボルにする
そのMC内で更に黒四角をグラフィックシンボルにしてアルファ0→100のモーショントゥイーンを作成(フレームの長さは任意)
最後のフレーム(別レイヤー)をキーフレームにして
_root.func() //実行したいコマンド
this.removeMovieClip();
と入れる
次にそのMCをリンケージでfoutとでも名付け、フェードアウトに入るタイミングで
attachMovie("fout","fout",100)を実行
//100(深度)はフェードアウト部分にattachで作成したMCがある場合そのMCの深度よりは大きくする
これでフェードアウト→ページ飛び?を処理させてます
その他MC内部を更にMCにして黒、白と四角の色を変えて黒フェードアウト、白フェードアウトとかやってます
551 :
Now_loading...774KB :2006/01/26(木) 16:41:54 ID:Tgdu1VHj
>>550 ボタンには何も書かなくて良いのでしょうか?
>>547 function fadeout() {
xmin = 0; //暗くしたい画面領域のX座標左上隅位置
ymin = 30; //暗くしたい画面領域のY座標左上隅位置
xmax = 500; //暗くしたい画面領域のX座標右下隅位置
ymax = 400; //暗くしたい画面領域のY座標右下隅位置
alphaNum = 0;
_root.onEnterFrame = function() {
alphaNum += 5;
_root.createEmptyMovieClip("fadeoutMC", 100);
with (_root.fadeoutMC) {
beginFill(0x000000, alphaNum);
lineStyle(1, 0x000000, alphaNum);
moveTo(xmin, ymin);
lineTo(xmax, ymin);
lineTo(xmax, ymax);
lineTo(xmin, ymax);
lineTo(xmin, ymin);
endFill();
}
if (alphaNum>=100) {
delete _root.onEnterFrame;
_root.fadeoutMC.clear();
}
};
}
//ボタンの設定
btn1.onRelease = function() {
fadeout();
_root.gotoAndPlay("movie1");
};
553 :
Now_loading...774KB :2006/01/26(木) 20:57:12 ID:dOUQFa58
ソフト:FlashMX2004_ver7.2 ドラッグした場合、曲線のMC(インスタンス名:clnAB)の上を動く(常に 曲線上にある)MC(このインスタンス名:point)のASを書いています。 これは、clnABからある程度離れたら元に戻れば良いと思い、pointイン スタンスのASとして下を試しましたが、これではclnABの中心からの距 離の評価になってしまいます。 onClipEvent (enterFrame) { this.onPress = function() { this.startDrag(); }; this.onRelease = function() { this.stopDrag(); }; if (this._x-_root.clnAB._x>10 || this._y-_root.clnAB._y>10) { this._x = _root.clnAB._x; this._y = _root.clnAB._y; } } どのように改造すればいいでしょうか?
>>553 どうなるのが正解かわからないけど、
onEnterFrameの中にonPress,onReleaseを書く必要はないと思う。
555 :
553 :2006/01/27(金) 01:47:50 ID:sfKB1Tk0
>>554 onPress,onReleaseは、_rootのフレームアクションとして外に出しました。
本題の方はどうでしょうか? hitTest()で、曲線MCに付いているかどうかを監視
する手を考えましたが、元に戻す時の動き幅を固定することになるので、これは
断念しました。
アドバイス願います。
>>555 曲線MCじゃなくて曲線を2次関数なり3次関数なり数式にしないとダメじゃないかな?
557 :
553 :2006/01/27(金) 03:44:39 ID:sLg7KNw3
>>556 数式にしないとダメじゃないかな?
う〜ん、数式の場合は、前に試して(482&488&533)成功しているのですが、
今回は前回の様にパラメーター毎にグラフを描画するのではなく、形を固定
したいと思っています。
固定する理由は、同様のグラフが他に隣接して3つあり(曲線4つでループを
形成している)、数式よりは見やすさやループの形のもっともらしさを優先す
るため、「線を変形したもの」に吸着するようにしたいと思っています。
どないでしょう?
558 :
Now_loading...774KB :2006/01/27(金) 11:13:01 ID:2rZt3eLW
>>552 それをいったいどこに書けばいいの?orz
ボタンに書いたらエラーばっかだし...
質問です。 自作クラス内のLoadVarsクラスで読み込んだ外部ファイルの値を、 自作クラスのプロパティに入れたいのですが、どのような方法があるのでしょうか。 class Hoge{ var my_lv:LoadVars; function Hoge(){ my_lv = new LoadVars(); my_lv.onLoad = function(success) { if (success) { var hoge_a = this.a;//これをHogeのプロパティにしたい } } //呼んだら読み込むメソッド function load_lv(){ my_lv.load(test.txt); } }
こんな? class Hoge { var my_lv:LoadVars; var _a:String; function Hoge() { my_lv = new LoadVars(); my_lv._parent = this; //ここで親クラスへの参照をセット my_lv.onLoad = function(success) { if (success) { this._parent._a = this.a; //親クラスの値を変更 } }; } //呼んだら読み込むメソッド function load_lv() { my_lv.load("test.txt"); } }
外部テキストを使用するswfを同時に2つloadMovieする場合、 System.useCodePage = true; を両方のswfに記述してあっても大丈夫でしょうか? それとも片方だけで良いのかな? ヘルプには「useCodePageは1スクリプトに1回までを推奨」とあるのですが、 loadMovieしてる場合はどうなるのでしょうか。
両方に書かないで読み込む親のムービーに書けって事じゃない?
>>562 親のムービーに書くこともしたのですが、
どうやらuseCodePageが有効にならないようで、文字化けしてしまいます。
そういう仕様なんですかねえ。
そんな馬鹿な仕様にするわけないっしょ。 こっちで試してみたら親の最初のコードとして書くだけで良かったよ。 読み込まれる側で「useCodepage」(「useCodePage」じゃ駄目だよ) を検索してみればどこかで変更してるところあるんじゃないのかな。
>>564 ちょ、おま、
○:useCodepage
×:useCodePage
の違いに気づいてるのに、なんで「どこかで変更してるところあるんじゃないのか」なんて
トボけた指摘してんだよ。
どう考えても、Pの大小のせいで、意図どおり設定がされてなかっただけだろ!
スコアー計算で、小数がついてしまうことがあるのですが、 これを四捨五入等として整数に直す方法とかあるんですかね? あったら教えてください。(四捨五入じゃなくても結構です)
マス・大山
569 :
566 :2006/01/27(金) 17:57:57 ID:Amg9P5ex
>>567 ありがとうございます!四捨五入で反映できました。
>>547 ボタンは普段使ってないから自信ないんだけど
on(press){
if(sw == undefined){
_root.attachMovie("fout","fout",100);
sw=0;
}
かな。swは2回以上押した時また同じ物が生成されるのを防ぐためのスイッチ
>>558 ボタンを置いてあるMCだかルートだかのタイムラインでいいと思うけど、
>>552 のスクリプトはそのまま書いてもだめだよ。
インスタンス名やパス、フレームラベルに気をつけて書き直さないと。
ちなみにfadeout();の中に飛び先を設定しないと
飛んだのが見えちゃうよ。
572 :
Now_loading...774KB :2006/01/27(金) 19:12:02 ID:GTN6YSVG
>>564 >>565 ごめん。レスの時はスペル勘違いしてたけど、flash上ではきちんと書いてます。
ちゃんと色変わってます。
いろいろいじってて気づいたんですが、
実際にサーバーにうpしてブラウザから動作確認すると、文字化け直ってました。
でもflashからプレビューしたときには文字化けするんですよ。何故だ。
>>560 _parent!!
そうか、こういうときに使うんですね。
自分が考えていたものとはまるで違う実装方法だったので、驚きました。
結果、無事できました。ありがとうございます。
面倒だからUTF-8にすれば?
>>574 片方のswfではXMLを読み込み、もう片方ではCGIを読み込んでるのですが
そのCGIがメール送信のルーチンを持たせてあるため、
useCodepage=trueにすると送信メールが文字化けしてしまうのです。
どうして文字コードを統一しないのだ。
576 :
Now_loading...774KB :2006/01/27(金) 21:10:00 ID:UPR5Wxrt
すいません、質問します 7 8 9 ×○○ ×=7使用済み ○=8、9使用可能 で、ランダムで7〜9を選択し、ランダムで出た数値が×状態だった場合、 それ以外の7〜9の範囲で使用可能な物の中からランダムに選ぶ のような事をしたいのですが、どのようなスクリプトを書けば良いのかわからないのです 何卒、どうか教えてください。。
>>576 whileで×じゃなくなるまで回せば?
>>577 ,578
ご教授ありがとうございます。
whileと配列、どちらも未知の領域なので調べながらやってみます
本当にどうもでした!
580 :
Now_loading...774KB :2006/01/28(土) 15:22:11 ID:jzSkRhTo
現在、アクションゲームを製作しているのですが、 キャラクターデータを8方向*4〜8コマ程度のbitmapで作成しています。 で、2キャラクター分の画像を書き出した所、 全部で716枚になっていました。 これを管理する方法ですが、Flashのライブラリに入れるか、 それとも外部ファイルにして読み込んでBitmapDataにキャッシュするのか、 どちらが適当なのでしょうか? Flashのライブラリに入れるパターンでは リンケージ登録やフォルダ分けが結構な手間なので、 今後キャラクターデータが増えた時に大変そうなのと、 パブリッシュに時間が掛かるのが難点です。 もうひとつの外部ファイルにして読み込むパターンは 大量ファイル読み込みがサーバへの負荷にならないかが心配です。 ※それともファイル数はあまり関係無い? 他の方々はどうやって作っているか、アドバイスがあればお願いします。
581 :
Now_loading...774KB :2006/01/28(土) 17:54:19 ID:2opiCzCr
初心者版かどっちかなんやんだんですけど こちらに書きます ボタンを作ってその上にマウスがある間、そのMCを再生する。 マウスをどけたらそのフレームでとまる。 10フレームまで行ったらとまる。 という処理をしたいのですが ボタンに on (rollOver) { while (this._currentframe<>10) { this.nextFrame(); } } と書いてみました。 でもロールオーバーするといきなり10フレームへ飛んでしまうんです。 ないがいけないのでしょう? どうすれば、そのような処理になるのでしょうか? お願いします。
>>581 ループの間は画面描画は行われないからフレーム位置だけ10になって
止まって、その後、描画されてるから。
583 :
581 :2006/01/28(土) 18:25:33 ID:2opiCzCr
>>582 ありがとうございます
なるほど〜そういうわけですか
てことはどうすれば・・・・OTZ
今思いついたのは
マウスカーソルの位置を調べて
範囲内ならplay
範囲外ならstop
10まで行ったらストップ
とif文かswitch文で分岐させるか・・・
もっと簡単な方法あります?^^;
むーしかし難しいですね。
プログラム初めてだから悪戦苦闘しています。
でも、思いどうりに動いたときはうれしくて、楽しいです。
>>580 外部ファイル読込みパターンがいいよ。
読込みの鯖への負担っていうのは、大量ファイルを同時に読み込んだときに問題になるわけで、
ひとつずつ順番に読み込んでいけば問題ない。
あと、雰囲気からするとBMP単位でファイルを読み込もうとしてるみたいだけど、
キャラ単位でまとめたswf(ようするに、モナー用データmona.swfやらギコ用データgiko.swfやら)を作って、
それを外部読込みして、gotoAndPlay()でどのパターンのアニメーションを再生するかを指示すればいい。
そうすればアニメーション部分とシステム部分を分離して開発できるからね。
>>583 this.onLoad = function() {
MC.stop();
};
btn.onRollOver = function() {
MC.play();
MC.onEnterFrame = function(){
if(MC._currentframe == 10){
delete MC.onEnterFrame;
MC.stop();
}
}
};
btn.onRollOut = function() {
MC.stop();
};
back.duplicateMovieClip("back2", 1); back2._x = -back._width; speed = 1; this.onEnterFrame = function() { back._x += speed; back2._x += speed; if (back._x>back._width) { back._x = back2._x-back._width; } if (back2._x>back2._width) { back2._x = back._x-back2._width; } }; という背景ループのASサンプルを自分の作成したものに適用したいのですが、 ・2度目のループの際に、レイヤーが上にあるものより更に上を通過する という理由で上手くいきません。 サンプルでは背景画面全てが、ループされてましたが、 自分は 1シンボル のみをループさせようとしています。 各行の意味すら解ってないので、どこを変更したらいいか 教えてもらえませんでしょうか。お願いします。 macOSX fashMX2004
587 :
583 :2006/01/28(土) 20:00:02 ID:2opiCzCr
>>585 さんありがとうございます
そうか、そうですよね。
いや、何でループを使おうかと思ったってマウスカーソルの位置によって
再生したり逆再生したりしたかったんです。
でいろいろ調べたらprevFrame()つかえみたいに書いてあったから
ループを使ったんです。
でも描画されないんじゃつかえませんね。
押すたびに一コマじゃなくて、滑らかな逆再生はどのように書いてますか?
キーボード入力で、AltキーとCapsLockキーってもしかして事実上使えないんでしょーか? ブラウザのメニューがアクティブになったり、反応がなかったり。
589 :
yuu :2006/01/28(土) 20:45:23 ID:EUD+xegk
はじめまして。FlashMXで外部変数読み込みから ダイナミックテキストでの表示の際、フォント指定が出来ません。 プロパティ内での指定、変数内でタグ指定。色々試しましたが 改善がみられません。何か解決策はありますか?
591 :
Now_loading...774KB :2006/01/29(日) 10:00:54 ID:AJJalByS
>>590 アンサーというより便乗質問なんですが
私も初心者なので違う可能性も大ですが
たぶんターゲットパスの指定じゃないですか?
_rootにおいてあるmcを、_rootにスクリプトを書いて動かすのに
家の環境だと(windowsXP,flash8)
相対パスで
this.mc
とやると動きません
絶対パスで
_root.mc
とやれば動きます
これはなんでなんでしょう?
なんか勘違いをしてますか?
>>590 そのサイトを尊重したやり方をすれば、
1.写真を3枚用意し、Flashに「ライブラリに読み込む」で読み込みます。
2.新規シンボルを作成、名前は「Photo」、タイプは「ムービークリップ」で作成。
レイヤーにキーフレームを2つ追加し、3つのキーフレームにライブラリから読み込んだ写真を1枚づつ配置していく。
新規レイヤーを追加。そのレイヤーの1フレーム目に、
this.stop();
と記述します。
3.メインタイムラインに戻ります。
好きな位置、仮に50フレーム目を選択し、右クリックでフレームの挿入。
1フレーム目に、
ppp = Math.floor(Math.random()*3+1);
photo.gotoAndStop(ppp);
と記述します。
新規レイヤーを追加。そのレイヤーの1フレーム目に、
ライブラリからPhoto(MC)を配置し、インスタンス名を「photo」に設定。
50フレーム目にキーフレームを追加。1フレーム目を選択してモーショントゥイーンを作成。
1フレーム目のPhoto(MC)を選択し、プロパティのカラーでアルファ、0%にする。
593 :
Now_loading...774KB :2006/01/29(日) 16:26:05 ID:Lwo5QSyJ
FLASHMXです。質問します インスタンス名がMC1~9という9つのムービークリップを作って、 そのMCの数字の部分を変数であらわすことは可能なのでしょうか? 例えばAが3なら、MCとA でMC3、Bが5ならMCとBでMC5、というようにして処理したいのです。 よろしくお願いします。。
>>593 配列アクセス演算子「[ ]」を使うといいよ。そのインスタンス群が_root上
にあるとしたら、
for(i=1;i<9;i++){
trace(_root["MC" + i]._name)
}
とかね。
>>594 なるほど、配列を使うのですね
がんばってみます、ありがとでした〜
596 :
Now_loading...774KB :2006/01/29(日) 20:30:25 ID:YY0miEl5
こんばんわ。
アクションスクリプト初心者です。
いま、表現したい表現があって、苦戦しています。
あるムービクリップがあって、仮にblurryとします。
そのムービクリップをモーショントィーンアニメーションをさせていてます。
そのアニメーションに対して、Flash8からの新関数でblur関数を使い、
モーションブラーチックな表現を試しています。
以下が、アクションスクリプトの構文です。
blurry = new flash.filters.BlurFilter();
blurry.quality = 2;
blurry.blurY = 30;
blurry.blurX = 30;
blurrer.filters = [blurry];
一応、動きにたいして、ブラーはかかるんですが、どうも、モーションブラーというより、ぼけてるってかんじなんですね。
そこで、考えたんですが、ブラー関数は、X軸、Y軸に対して、ブラーされますが、
以下の図に示すように、
http://v.isp.2ch.net/up/fd129a532214.jpg オブジェクトの動きにたいして、ローカル軸にブラーをかけるようにできないんでしょうか?
また、ブラー関数にキーフレームを打ちたいのですが、書き方がわかりません。
例えば、1フレームの時は、blurX=0で、10フレームで、blurX=10になり、その間のフレームを補完させたいと思ってます。
アドバイスをお願いいたします。Flash8Pro
質問です flash8を使っています ネット上で色々調べると8を使ったいろいろなエフェクトがあり 例えば ガラスや水面の表現 球体の表現 それはbitmapDataを 使ってやってるのだと思いますが 色んなソースを見たところ エフェクトをかけるもとの画像は外部から読み込んだビットマップの画像なんです にフラッシュで描いたムービークリップにエフェクトをかけるために ビットマップ化したいんですが どういうスクリプトを組めばいいでしょうか?
598 :
Now_loading...774KB :2006/01/30(月) 01:55:40 ID:arMHajBY
モバイル向けコンテンツの質問です。 当方ようやく3G携帯というものを入手したのでFLASH形式のメニューを作ろうと思っているのですが、 グーグル先生でいくら探しても求めている情報が見つかりません。 現在私が作成しようとしているのはDocomo P902i用のメニューなのですが、それの資料が見つからなかったので 他機種のメニューと同じようにして on (release) { fscommand( "Launch" , "camera" ); } というスクリプトをボタンに埋め込んでみたのですがさっぱり反応してくれません。 モバイル向けのコンテンツを製作している方、私でも携帯電話のメニューを作成できるようにどうか御指南お願いします。
599 :
Now_loading...774KB :2006/01/30(月) 17:01:51 ID:N580XcAr
mx2004
>>547 の内容なのですが…
mcに
onClipEvent(load){
function next(nextMovie){
loadflag=1;
nextMov=nextMovie
}
}
onClipEvent(enterFrame){
if(loadFlag){
if(_alpha<=0){
this.loadMovie(nextMov);
loadFlag=0;
}else{ _alpha-=10; }
}else{
if(_alpha<100){
_alpha+=10;
}
}
}
ボタンに
on (release) {
_root.mc.next("a.swf");
}
このやり方で挑戦しているんですが動きません。
サイトからコピってやっているので間違いはないと思っていますが、
試行錯誤してもダメですたorz
なにか問題あれば教えてくらさい。
>>596 flash.filters.BlurFilterは、ぼかしフィルタなのでぼけて当然かと思われます
タイムライン使うならいちいちASなど使わなくともトゥイーンでやればいいのでは?
>>597 BitmapDataを作成し、ライブラリ上のMCをロードする
空のMCでも作ってそこに作成したBitmapDataを貼り付ける
自分でどんなAS組んでみたかを報告してないので具体例は省略、とりあえず組んでみな
>>598 私はauなのでdocomoがどうなのかは知りませんが
同メーカーであっても他機種の物はメニュー名変更で動くことは少ない
あとメモ帳の場合(A機種:"memo")(B機種:"note")みたいにメニュー名そのものが違ったりする
Flash Liteスレがあるからそこに逝けばP902i情報入るかも
>>599 どこのサイトからぱくってきたかは知らんが、それじゃ絶対に動かん。俺が保障する!
突っ込みどころ満載だが、とりあえず今は下の『on(release)』部分だけを考えてみよう
599はシーン移動したいんだな?
まずnextはデータセット用なのでシーン移動は出来ん。
あと"a.swf"とあるがシーン移動の場合シーン名だから拡張子は付かない。
ぱくったの改造じゃなくて一から組んでみ?
601 :
Now_loading...774KB :2006/01/30(月) 18:37:11 ID:v0jRHy4r
ムービー起動時にfsCommandでフルスクリーン化した後、 F11キーでフルスクリーンOn/OFF切り替えするスクリプトを書いたのですが、 別のシーンから上記処理のシーンに戻ると、起動時の処理のせいで、 意図せずフルスクリーンになってしまいます。。 fsCommandで設定した状態を取得する方法もしくはフラグ等をうまく使って実現する方法を教えてください。
>>601 Ctrl+F でフルスクリーン切り替えだとダメなの?
戻る前のフレームで設定しときゃいいじゃん
MX2004です。 Xmlクラスで読み込ませるデータの属性部分(?)に「<」が入っていると、 正しくデータを読み込んでくれません(その部分で解析判断ミスって、データが終わってる扱いになる) <mona giko="nuru<po"/> 属性部分に「<」を使用しつつ、この問題を回避する方法はありますか?
<
&lt; を半角で
おー。それ、使えたのですね。 xmlファイルの記述を <mona giko="nuru&lt;po"/> にしておいたら、属性gikoは確かにデバッガ上で "nuru<po" になってました。 ありがとうございました。
>>604 > Xmlクラスで読み込ませるデータの属性部分(?)に「<」が入っていると、
> 正しくデータを読み込んでくれません(その部分で解析判断ミスって、データが終わってる扱いになる)
解析判断『ミスって』、なんてふざけた事言わないように。
XMLの仕様ではそれが正しい動きです。
xmlネタって事で出てくるかな〜? と思ってが、この手の奴やっぱ出てくんね。 xmlの仕様程度でよくぞここまで(笑)
610 :
602 :2006/01/31(火) 08:31:04 ID:/8kQKgb4
〉603-604 ありがトン。両方試してみます!
611 :
Now_loading...774KB :2006/01/31(火) 09:45:11 ID:uEnV+7yA
LoadVars.load( url ) の url には変数使えないんでしょうか?
612 :
611 :2006/01/31(火) 10:04:27 ID:uEnV+7yA
すいません。使えました。 ただ単にパスが間違ってただけだった orz... スレ汚しスマンです。
613 :
Now_loading...774KB :2006/01/31(火) 12:44:46 ID:lGHmWmQ0
>>600 ありがとです。
動かないのか...orz
やっぱりなー...
シーン移動じゃなくて、ムービーを読み込みたいのです。
とりあえず一から組むといっても全然わからんので
ヒントをくれませんか・・・?
>>613 MXだけど動いたよ。
2004とか8は知らないけどvar 〜とか
変数の宣言しないとだめなんじゃなかったっけ。
もしくはa.swfのパス間違えてるとか。
>>613 変数名の大文字と小文字は区別されますよ。
616 :
615 :2006/01/31(火) 16:13:51 ID:ZnXJ88B0
orz
mx2004です。 ランダムでアイテムが出てくるアイテムランダムMCを置いて ボタンアイテムをgetさせたいのですが うまく動作してくれません。 基本的な事ですいませんがご教授をよろしくお願いします。 #_root上に置いてあるアイテムをget させることはできました。
俺の理解力が足りないのだろうか。
>>617 が何を言いたいのか分からない。
>>618 ダミー情報に惑わされるな!
最後の行に注目するんだ!
これは…おそらく…ターゲットパスがわからないという質問だ。
つーことで
>>617 はAS中のパスを確認しよう。
誰かが物凄い勢いで解読するスレ
622 :
Now_loading...774KB :2006/02/01(水) 06:55:07 ID:abCGYV2P
mov1とmov2とかに分けたらいいかと
624 :
622 :2006/02/01(水) 07:25:18 ID:abCGYV2P
>>623 朝っぱらからすいません
寝てなくて頭動いてませんでした
分ける間もなく自己解決しました
ホントすいませんorz
濃ゆいコーヒー飲んで目さましてきます
MX2004使っているのですけど、 メニューのキーボードショートカットで スクリプト編集の欄のショートカットをいじっても全然反映されないのって 仕様ですか?それとも設定の仕方が悪いのでしょうか? 例えばカット(デフォCTRL+X)を、CTRL+MやCTRL+5にしたりしても全く反映されません。 どうしてでしょうか?
>>625 セット複製してそれに対して変更で問題なくできるが
627 :
Now_loading...774KB :2006/02/01(水) 12:58:58 ID:shdlUQcZ
>>614-615 試してくれてありがとう。
とりあえず自分はmcにムービーを読み込んで、ボタンを押すと暗くなって他のムービーがmcに読み込まれるものを作りたいのです。
動く人もいるってことは間違いではないんだよね...orz
>>626 セットも複製してます。
ありゃ。じゃあうちのPCが悪いのかな。。。
と思ったらデキタ!
なんか「描画メニューコマンド」のほうのショートカットをいじったら
ASウィンドウ上でもそのショートカットが効くようになってるorz
スクリプト編集ってASのことじゃないのかよぉ〜・・・?
あきらめない力をくれた
>>626 に乾杯。
しかしShift+Insertはどうやっても無理でした。
630 :
Now_loading...774KB :2006/02/01(水) 17:31:43 ID:shdlUQcZ
>>627 ですが、
maji困ってます。助けてorz
>>630 暗くなるっていってもアルファ下げてるんだから
読み込み先のMCが透明になるのはわかってるよね。
暗くして読み込み終了後に明るくするってことなら、MXだけどしたのでどう?
onClipEvent (load) {
loadflag = false;num = new Array(100, 100, 100);
myColor = new Color(this);myColorTransform = new Object();
function next(nextMovie) {loadflag = true;nextMov = nextMovie;}
}
onClipEvent (enterFrame) {
if (loadFlag) {
if (num[0]<=0) {
this.loadMovie(nextMov);num = new Array(100, 100, 100);
myColorTransform = {ra:num[0], ga:num[1], ba:num[2]};myColor.setTransform(myColorTransform);
loadFlag = false;
} else {
num[0] -= 10;num[1] -= 10;num[2] -= 10;
myColorTransform = {ra:num[0], ga:num[1], ba:num[2]};myColor.setTransform(myColorTransform);
}
} else {
if (num[0]<100) {
num = new Array(100, 100, 100);
myColorTransform = {ra:num[0], ga:num[1], ba:num[2]};myColor.setTransform(myColorTransform);
}
}
}
on (release) {
_root.mc.next("a.swf");
}
シューティングゲームでZボタン(普通の弾)、スペース(ミサイル)、敵を(位置ランダム)で表示 させたいんですが実行すると敵がいるときにスペースを押すと敵が消えてしまうんですが (通常の弾でもZボタン連射で時々敵が消えちゃいます。。。) これはどこがいけないんでしょうか?orz ↓敵の処理です targetMax = 5;// 弾の最高数 targetUse = new Array(); for (i=0; i<targetMax; i++) { targetUse[i] = 0;// 敵の使用フラグ } function targetCreate (iteki) { // 未使用番号を検索 for (i=0; i<targetMax; i++) { if (targetUse[i] == 0) { break; } } if (i == targetMax)return false; // 敵を生成 _root.attachMovie("target", "target"+i, i); _root["target"+i]._x = iteki.x; _root["target"+i]._y = iteki.y; _root["target"+i].ID = i; targetUse[i] = 1; }
深度等のリスト
635 :
632 :2006/02/02(木) 00:59:45 ID:kjBb8D12
_root["target"+i].swapDepths(10+i); こんな感じのを追加すればいいんでしょうか? 少しやってみたけどよくわからないですorz 助けてくらはい
636 :
632 :2006/02/02(木) 01:10:10 ID:kjBb8D12
今いぢっていたら消えなくなりました! が。。。時々画面上でMCがいくつかフリーズしたように動かなくなっちゃいました。。。
637 :
Now_loading...774KB :2006/02/02(木) 10:53:11 ID:Cqg5ULk9
>>631 ASありがとうございます。
しかし、今まで試してみたものと同様でアルファがかかりませんorz
ボタンを押すと、ピクっと一瞬画面が固まります。
なので、指令を聞いてるには聞いてると思うのですが・・・
サンプル用に簡単に作ったものでは
>>631 のASで動きました。
もしかして...と思っているのですが、その読み込むムービーの1フレ目に
ちょいと複雑な『nowloading』をつけてあります。
私がサンプルで簡単に作った方にはつけていません。
もう、違いといったらそれしか無かったものでnowloadingを外してみましたが
だめでした...途中でとってもASって残るものなんでしょうか?
無知ですみませんがアドバイス&意見お願いします。
皆さんの協力とても嬉しいです。
一回基礎から勉強しろよお前
639 :
Now_loading...774KB :2006/02/02(木) 12:41:26 ID:Cqg5ULk9
もう一度基礎から勉強したらわかるようになりますか
おしえて!!FLASHを読めw
>>639 デバッガ使ってステップごとに追っていくとか、トレース入れるとか。
642 :
Now_loading...774KB :2006/02/02(木) 14:21:03 ID:Cqg5ULk9
643 :
Now_loading...774KB :2006/02/02(木) 16:36:49 ID:Cqg5ULk9
もう全部解決しました! 感動です...み〜〜んなありがとう愛してるゼ
644 :
Now_loading...774KB :2006/02/03(金) 14:39:56 ID:7PZX35FX
12という文字列を0000012に変換したいのですがどうすればいいのでしょうか
645 :
Now_loading...774KB :2006/02/03(金) 14:41:16 ID:7PZX35FX
12という文字列を0000012に変換したいのですがどうすればいいのでしょうか
str = "12"; str = "00000"+str;
ワロスw
str="0000".concat(12); なら確実に文字列になるんじゃね?
649 :
329 :2006/02/03(金) 21:24:52 ID:PAaIx41i
ミリ秒を時間分秒にしたいのですが、 20736365ミリ秒→5時間45分36秒にする場合、 targetTime = 20736365/1000; nowH = Math.floor(targetTime/3600); nowM = Math.floor((targetTime%3600)/60); nowS = Math.floor(((targetTime%3600)%60)); trace(nowH+":"+nowM+":"+nowS); なんか凡雑な気がするものでもっといい方法ありますか? よろしくお願いします
>>645 それどこかのスレで見たよ。
5行くらいで、すっきりしたやつが書いてあって、
驚いた。どこかは覚えてない。
651 :
Now_loading...774KB :2006/02/04(土) 00:52:33 ID:V66zA5VP
>>644 function toDigStr(num, dig){
return String(Math.pow(10, dig)+num).substr(1)
}
var str = toDigStr(12, 7)
trace(str)
hore
>>644 ソースの見た目のインパクト重視。
>>651 は計算してるから埋めたい桁数が15桁ほどで破綻するけど、こっちは30桁までおっけー!
function toDigStr2(num,dig){
return "000000000000000000000000000000".substr(0,dig - num.toString().length) + num;
}
trace(toDigStr2(12,25));
>>644 function toDigStr3(num, dig) {
ret = "";
for (var i = 0; i<(dig-num.toString().length); i++) ret = "0"+ret;
return ret+num;
}
trace(toDigStr3(12,7));
654 :
Now_loading...774KB :2006/02/04(土) 04:46:20 ID:z0+XKfg8
ボタンにマウスが乗っかるとMCが左にスライドして クリックするとフレーム3に飛ぶ物を作りたいのですがうまくいきません ↓左にスクロールは出来たのですが押しても反応してくれません。 (フレーム3のMCインスタンス名は1977_mです) on (rollOver) { _root.mov = −100; } on (rollOut) { _root.mov = 0; } on(release){ � � _root.1977_m.gotoAndStop(3); } Flash8を使ってます。お願いいたします。
>>649 なんか、昔やってみたなあと思いだし古いflaから。
はっきり言ってつかえねーと思うorx_..........
//1970/01/01 0:0:0からt_millisec経過した時分秒
//24時間以上だと日にちが加算される
//UTCでないとtimezone分時刻がずれるので注意
var t_millisec:Number=7200000;
var fa_date:Date = new Date(t_millisec);
//fa_date.setTime(3600000);
trace(t_millisec+"ミリ秒は");
trace("時間:"+fa_date.getUTCHours());
trace("分:"+fa_date.getUTCMinutes());
trace("秒:"+fa_date.getUTCSeconds());
trace("ミリ秒:"+fa_date.getUTCMilliseconds());
>>654 mc.gotoAndStop();はそのmcのタイムラインの再生ヘッドを移動させる命令。
ルートのタイムラインのをと言うことなら_root.gotoAndStop();になるよね。
あと、ソース記載はコピペで。
657 :
654 :2006/02/04(土) 08:32:34 ID:z0+XKfg8
>>656 早朝からご回答ありがとうございます。
on (rollOver) {
_root.mov = −100;
}
on (rollOut) {
_root.mov = 0;
}
on(release){
� � _root.gotoAndStop(3);
}
ってことですよね?でも、動きませんでした。エラー出ちゃいます
まさか、同じレイヤーじゃないと駄目な訳じゃないですよね?
あと、ボタンごとに欠くフレームに移動したいので
このタイムラインの各フレームにthis.stop();を入れてるんですが
それもおかしくはないですよね
なんで動かないんだろ
何処か間違ってそうなところ分かりませんか?
>>657 mc座標の移動はmc._xとmc._yプロパティを設定することで行う。
movというインスタンス名を持つmcの座標を設定するには
mov._x=100;ルートにあるなら絶対パスで_root.mov._x=100;とかね。
pathが理解できていれば問題ないと思うぞ。
� � _root.gotoAndStop(3);
^^^これはなんぞや。
コンパイルエラーが出ているならエラーを解決してからだね。
660 :
654=657 :2006/02/04(土) 10:17:09 ID:z0+XKfg8
>>658 ありがとうございます。
この間買って来た本と格闘しながらつくってたんですが、いまいちよくわからなくって。
xとyの座標で設定するのは知ってたんですが、本に書いてなくて
それでも、移動はしてくれたので、まぁよし?とか思っちゃったんですが
それがまずかったのかな、作り直します。
ソレ、なんなんでしょう。。。すいません;
>>659 サンプルありがとうございます!!!!!
凄い分かり易い!参考に1から作り直します。
ホントにありがとうございました
>>649 うーん…、こんな感じかなあ?計算が冗長だけど。
function getPassage(a,n,t){
a[2-t]= int(n/Math.pow(60,t))+a[2-t]
return (t>0) ? getPassage(a,int(n%Math.pow(60,t)),t-1) : a.join("")
}
trace(getPassage(["時間","分","秒"],20736365/1000,2))
662 :
哲学者ナナーシァ・セブデック :2006/02/04(土) 11:31:25 ID:TVhecWt7
a>d=3ma △ABC=180°540+180(□def) a~ddd 4i(3no+502a)=540 □def=4i(3no+502a) a~ddd+3s{540d(30s+54b)}×2=180 a~ddd+3s{540d(30s+54b)}×2=△ABC 540d-200=a a+540d=3ma×2
>>662 哲学とか数学とか記号論とかのスレの誤爆かな
ASスレなのでASしかわからんよ。
誤爆でしょう
マウスクリックの反応領域について質問です。 ムービークリップAでは、onMouseDown = function(){〜}によって、 マウスに反応して動く操作を定義しています。 ムービークリップBでは、ボタンを配置していろいろやっています。 Aの上にBがのっかるように配置されたとき、B上で操作しているつもりでも Aのほうまでマウスクリックに反応して動いてしまいます。 Bでさえぎられた領域上ではAにマウス反応させないためには、 どうすればいいのでしょうか?
>>665 hitTestで重なった場合にだけmcAの処理を中止とか、
深度を取得して上にあるほうの処理しかしないとか
分ければいいんじゃないかな。
>>665 onMouseDownをやめる。
onPressとかをつかう。
668 :
665 :2006/02/05(日) 17:29:03 ID:yY75V5WO
>>666 それはちょっと考えましたが、ほかのムービークリップの存在が
Aのコード内に入ってくるのがいまいちオブジェクト指向っぽく
ないので……。
ま、めんどいっしょ、それじゃ。ってのが本音です。
>>667 それです、ありがとうございます。
単純に置換しただけでほぼOKでした。
Bと重なっててもボタンがない部分ではやっぱりAが反応してしまったのですが、
Bの広さ分のダミーボタンを下に敷くことでうまくいきました。
669 :
Now_loading...774KB :2006/02/05(日) 18:38:57 ID:VBHpLy9O
作成したswfを開いたときに、 はじめに1回だけloadMovieNumを発生させたいのですが 永遠と連続して発生してしまいます。 どうしたらよろしいでしょうか。。
>>669 ループしてんじゃない?
this.stop();を書くとか。
671 :
Now_loading...774KB :2006/02/05(日) 18:55:07 ID:VBHpLy9O
ありがとうございます!できました!
すいません、質問する際はスレageた方が良いのでしょうか…?
菅平.fla
675 :
Now_loading...774KB :2006/02/05(日) 20:43:19 ID:nhjoyPjE
>>674 そう、長野県で一番寒いところだとか聞いてる(´Д`il!)
676 :
Now_loading...774KB :2006/02/05(日) 20:44:31 ID:nhjoyPjE
あ、みんなスマン、パス大文字じゃなくて小文字だった、 ごめんよ…orz dl
677 :
Now_loading...774KB :2006/02/05(日) 21:12:43 ID:619/d2as
>>672 on (release) {
hensu += 1;
}
↑これがお題の配列数超えてもカウントアップしつづけるからじゃないの?
ifでお題の配列数でとめるか、%でループさせるか刷れば良いとおもうけど。
>>672 エラーがでるってundefinedが表示されるって事なら
それは配列の最大数を超えてるから。
シャッフルするときfor文にhensu使ってるのでodai[180]から表示されてる
シャッフルが終わった時点でhensu=0を入れる。
679 :
Now_loading...774KB :2006/02/05(日) 21:27:31 ID:nhjoyPjE
680 :
Now_loading...774KB :2006/02/05(日) 21:52:56 ID:nhjoyPjE
681 :
Now_loading...774KB :2006/02/05(日) 22:35:47 ID:nhjoyPjE
いかん、切欠なるような物を作ろうと思ってボタンを作っても駄目だ…。 どうしよう、何がいけないんだろう…il!orz
682 :
Now_loading...774KB :2006/02/05(日) 23:00:01 ID:tm6LCWtb
ものすごく簡単だとは思うんですが、 ボタンを押すと(releaseで)シーンの移動をするという動作をさせたいんですが、 どう書けばいいんでしょうか?
>>680 お前好い加減にしろって。
ここ丸投げスレじゃないんだから、
根本的にAS理解してからこいよ。
>>682 gotoAndStop("シーン名", フレーム数)
684 :
Now_loading...774KB :2006/02/05(日) 23:49:39 ID:nhjoyPjE
>>683 本当にごめん…orz
相対パスを絶対パスに直しただけでうまく行った…
勉強し直してくる(つД`)
>>681 ナニがいけないって、貴方のASの書き方がいけないんです。
>i + 2
コレでは i に2は加算されません。
>this.i = i + "点です";
i はすでに変数として使われているので、テキストフィールド名に i とつけるのは間違っています。
あと変数のパスがあっていません。
ソースだけ上げて〜できるようにしたい。というのはもぅやめてください。
>>1 をよく読んでください。
敵との当り判定を取りたいのですが弾が画面上に2個以上あると判定がされません 当り判定のソースはこれなんですがどこがいけないのでしょうか?>< onClipEvent (enterFrame) { for (i=0; i<_root.tagsys.targetMax; i++) { if (_root.tagsys.targetUse[i] == 1) { for (hit=0; hit<_root.missys.GunMax; hit++) { if (_root.missys.GunUse[hit] == 1) { if (_root["target"+i].hitTest(_root["gun"+hit])) { _root.hyouji = "判定あり"; } else { _root.hyouji = "判定なし"; } } } } } }
687 :
649 :2006/02/06(月) 10:45:01 ID:T9SSVhrP
>655,661 ほぁ〜勉強になります return使ったことなかった。 ありがとうです
>>686 トレース入れるかデバッガで1ステップずつ追っていく。
689 :
Now_loading...774KB :2006/02/06(月) 14:32:49 ID:237uZbTk
>>683 ありがとうございます。
gotoAndPlay("シーン",フレーム数)ではできましたが、this.gotoAnd.....ではできないんですが、
つけるとしたら他に何をつければいいんでしょうか?
>>689 gotoAndPlay()とmc.gotoAndPlay()は別物。
シーンを指定する場合は前者しか使えない。
詳細はヘルプで確認。
691 :
654=657=660 :2006/02/06(月) 20:06:50 ID:/nvQS2QY
>>656 >>658 氏
>>659 氏
本当にありがとうございました。しばらくネットにつなげない環境だったので
レスが遅くなりましてすみません、無事作動出来るようになりました。
もっといっぱい理解して他の困ってる方に教えてあげられるようになれたらと思います。
おせわになりました。
>>686 取りあえず単純構造にしてやってみれ
わからん設定が条件に絡んでるからなんともいえんが、
大概は変数の設定がちゃんとできてないか、パスが違うか、だ
あとチェックは
>_root.hyouji = "判定あり";
より
trace("tag " + i + " gun " + hit);
とかの方がいいかもわからんが、まあそのへんはどうでもいいか
693 :
Now_loading...774KB :2006/02/06(月) 22:10:51 ID:237uZbTk
694 :
Now_loading...774KB :2006/02/07(火) 13:23:22 ID:umufhRhP
すいやせん、すごく簡単な質問。 if、for等の条件式のconditionで ( m + 1 == n )みたいに 比較演算子中に算術演算子を混入させることってできましたっけ?
>>694 ん、うまくいかない事例を書いてくれれば悪いところが解るかもね
flash lite1.1でMCの中に入れたボタンの命令から ルートのタイムライン上のラベルに飛ばしたいのですが どうすればいいのでしょうか?
>>696 flash lite1.1はしらんが、gotoAndPlayじゃだめかね
>>697 gotoAndStop()ではボタンがあるMCでgotoAndStop()してしまうのです。
flash5以上なら_root.gotoAndStop()でいけたんですが…
どうにも解決しないそうなら、ボタンをばらす方向でせめてみます…
telltargetじゃね?
>>695 返事していただいて、自己解決してしまったなんて言えない…
しかも混入させる方法以外に解決方法があっただなんて更に言えない…
np質問をしっかりと書いていく課程で解っちゃう場合も多々ありんす(古
ASで特定のMCを別のレイヤーに移動させる方法ありますか? レイヤーA ○ レイヤーB ↑■ レイヤーC ● レイヤーCにあるMCをAに移して、BにあるMCより手前に表示させたいのですが。。。
swapDepthsじゃダメなん?
>>703 ↑図のレイヤーBのMCの深度を変えたくなかったので。。。
でも一時的にcreateEmptyMovieClipでレイヤーBのMCの上にMCを作って
それとswapDepthsすることにしました。
・・・そこでまた質問なんですが
一番手前に表示されるようにと
_root.createEmptyMovieClip("temp_mc",_root.getNextHighestDepth());
this.swapDepths(_root.temp_mc);
(thisは手前に表示したいMC)
としたのですが手前に表示されません。
temp_mcの深度を調べると0でした。_root.getNextHighestDepth()は間違っているのでしょうか?
getNextHighestDepth()の位置にMC作ったのならswapする必要ないんじゃない?
えっと、すでにあるMC(this)を一番手前の表示にしたいのです。 _root.createEmptyMovieClip("temp_mc",_root.getNextHighestDepth())で作った MC(temp_mc)は空のMCで、一番手前の深度に作った(つもり)のです。 MC(this)とMC(temp_mc)をswapDepthsで入れ替えてMC(this)を浮き上がらせようという作戦なのです。
>>706 NextHigh...使わずに自分で深度管理する。
getNextHighestDepth()、ちょっとググってみたけどなんかバグっぽいみたいですね。
リリースによっては直ってるのかもしれないけど。(自分はMX2004)
trace(_root.getNextHighestDepth());
してみても何故かundefinedになるし(謎すぎ)
>>707 そうします・・・。
709 :
Now_loading...774KB :2006/02/07(火) 22:10:47 ID:AC2NR9Yd
>>708 コンポーネント使ってる?
使ってたらそれが原因。
コンポーネントを一度配置すると、
コンポーネント内のオブジェクトが深度の上限超えた値使っちゃうので、
初期読み込みを行うルートのみgetNextHighestDepthで深度が取れなくなる。
このバグ対策はルートを使わず、
createEmptyMovieClipなんかで一個階層作ってその下で行えばOK。
(普通にMC配置してもいいけどね)
>>709 コンポーネント、パネルを開いて見たことくらいはあるけど配置はしてないと思います。
そして_root以外のMC内の階層とかをgetNextHighestDepthで見てみようとしても
undefinedになりますorz
いま製作中のブツの開発環境がMX→8→MX2004って渡り歩いているので
もしかしたら深度とかいろいろやばいことになってるのかも(動くところは動いているので良いのですが)
ホントはできるはず!と思い横目で見ながら回避策とります。ありがとうです。
>>710 コンポーネントは一度でも配置すると、消した後も影響するけど、
MC内でも取得出来ないのは謎だね。
深度は限界値があるから、
それ以上の値になってるのかもしれないけど、
とりあえず見えないから何ともいえないや。
712 :
Now_loading...774KB :2006/02/08(水) 04:01:41 ID:5L1l4cyB
質問です 当方MXです 標準を定めて打つタイプの射撃ゲームを作っているのですが ”標準”(スコープ)の先にある対象を拡大したいのです 理想は サイト”冷蔵庫の中身”様の ゴルア13のようスコープです 本人様に直接聞こうと思ったのですが メールフォームが無くサイトも更新されていないようなので・・・ xscale を使うとスコープ自体のMCが拡大されてしいまい、 その先の対象物は普通のままです 配置やスクリプトなど分かるかたがいればよろしくお願いします 簡単な質問で申し訳ありません
ヒント:マスク
715 :
Now_loading...774KB :2006/02/08(水) 21:00:37 ID:lxvm8bna
”マスク”で調べてみます 初めて聞く単語でした 初心者の相手ありがとうです また不備があったら質問させていただきます
リスナーの使い方で困っています。 Windowコンポーネントの中に配置したButtonコンポーネントに、 メインフレームからリスナーを追加するということはできるのでしょうか? function button_in_window() { trace("test"); } _root.window.content.test.addEventListener("click", button_in_window); 現在このような形でやっているのですが、ボタンを押してもtraceが実行されません。 Windowコンポーネントのインスタンス名はwindow Buttonコンポーネントのインスタンス名はbuttonとなっています。 buttonインスタンス自身にon()を書けばいいのはわかっているのですが、 個人的なこだわりのためにメインフレームにASを全て記述したいのです。 どうぞよろしくお願いします。
_root.window.content.test.addEventListener ↓ _root.window.content.button.addEventListener じゃないの?
718 :
716 :2006/02/08(水) 22:45:40 ID:5sfMNnTJ
>>717 あ、実際作ったサンプルがtestで、書き込む際にわかりやすいようにと
書き直していたつもりがそのままでした…
かえってわかりにくくなってしまいすみません。
ちなみにbuttonで試しても無理でした。
>>716 ボタンコンポーネント[名前:button]を含むMC(リンケージ識別子はbutton_mc)を用意する。
ステージ上にウインドウコンポーネント[名前:win]を配置
//フレームアクション
var myListener = new Object();
function button_in_window() {
trace("Button Clicked");
}
myListener.complete = function() { //contentPathが設定されると呼び出される
_root.win.content.button.onLoad = function() { //ボタンがロードされた時
//クリックイベント追加
_root.win.content.button.addEventListener("click", _root.button_in_window);
};
};
win.addEventListener("complete", myListener);
_root.win.contentPath = "button_mc";
//
なんか回りくどいやり方に見えるけどこうやんないと出来なかったので…。
ここ参考
ttp://www.fumiononaka.com/TechNotes/Flash/FN0505001.html
変数名が一部同じものを複数作る場合なんですが、 for文などで作ることってできるでしょうか? Flash8です。 t1 = 0; t2 = 0; t3 = 0; を作る場合 ↓もちろんシンタックスエラーです;; for (i=1; i<=3; i++) { "t"+i =0; } trace(t2); //結果=s2 よろしくお願いします
721 :
329 :2006/02/09(木) 00:46:44 ID:n2vsdSrI
>//結果=s2 //結果=0 間違えました。すいません。 for文でなくても、まとめて書ける方法があるでしょうか。
>>720 配列使えばいい。
var t = new Array();
t[0]=0
t[1]=0
t[2]=0
擬似配列でもいい this["t"+i]=0
724 :
329 :2006/02/09(木) 01:39:05 ID:n2vsdSrI
>722,723 そうか。attachMovie使うときに似た物を使ってたわ 理解してないな〜、どうもありがとうございます
MovieClipLoaderについて質問です。 _global.mcl = new MovieClipLoader() | +---ClassObjectA --- fileA.swf --- listnerA.onLoadInit = funcA | +---ClassObjectB --- fileB.swf --- listnerB.onLoadInit = funcB 現在、上のような構成です。グローバルにMovieClipLoader()オブジェクトを一つ置いています。 ClassObjectA の管轄で fileA.swf を読み込み、読込み完了時に funcA を呼び出したいので、 listnerA の onLoadInit に funcA を登録しています。 ClassObjectB でも同様です。 この構成だと、MovieClipLoader が共通のため、fileA.swf が読み込まれたときに listnerA も listnerB も onLoadInit を呼び出してしまいます。 そのため、ターゲットムービークリップが適切かどうかの判断が必要になってしまいます。 そこで、以下のような構成にしようかと考えています。 なし | +---ClassObjectA --- fileA.swf --- mclA = new MovieClipLoader() --- listnerA.onLoadInit = funcA | +---ClassObjectB --- fileB.swf --- mclB = new MovieClipLoader() --- listnerB.onLoadInit = funcB 各クラスオブジェクトごとに MovieClipLoader を所持して、それぞれに Listner を登録すれば、 管轄内のファイルが読み込まれたときしか onLoadInit は呼び出されません。 軽く動作確認した限りではこれで問題なく動いたのですが、これはほんとに動くべくして動いているのでしょうか? MovieClipLoader をググると、「単一の MovieClipLoader オブジェクトが、同時に複数のファイルの読込みを行う」 というサンプルは見つかるのですが、「複数の MovieClipLoader オブジェクトが、同時に複数のファイルの読込みを行う」 というサンプルが見つからないので、このやり方がなにか不正な動作を引き起こさないかどうか心配です。
726 :
716 :2006/02/09(木) 08:27:09 ID:CqZpFtGO
>>719 ありがとうございます!
おかげさまでちゃんと動きました!
簡単に言うとWindowコンポーネントの中に配置したコンポーネントは
完全に読み込むまでに時間差があって、すぐにはアクセスできないってことですかね?
今までにもWindowコンポーネントが期待通りの動きをしてくれなくて困っていたことがあったのですが
原因は同じことだったのかもしれません。
質問です。 function main_loop(){ wait = true; mc.onEnterFrame=function(){ if(this._currentframe==10){ wait=false; } } while(wait){} ・・・ } といったASで、mcが少し(10フレーム)再生されてからmain_loopの続きを実行したいのですが mcは再生されずに、[応答なし]になってしまいます。orz mc.onEnterFrameって完全に分離して動くわけじゃないのがわかったのですが 上記ASと同じようなことを実現させるにはどうのようなASを組めばよいでしょうか? なるべく上記ASの構造は崩したくありません。(main_loopを抜けずにmc.onEnterFrameをつくるカタチ)
できない
mc.onEnterFrame=function(){ if(this._currentframe==10){ 処理 delete this.onEnterFrame; } } とかそんな感じ。 毎フレーム実行して、条件あったら処理して終了。って流れ あと、whileは待ってもらうための機能ではないよ。 てことでいらない。
>>727 //20カウントで終了
cnt = 0;
function main_loop() {
trace(cnt);
cnt++;
end = (cnt == 20) ? 1 : 0;
return end;
}
this.onEnterFrame = function() {
if (mc._currentframe == 10) {
main_loop();
if (end == 1) {delete this.onEnterFrame;}
}
};
731 :
727 :2006/02/09(木) 19:20:28 ID:1DYdPR5L
回答ありがとう。 やっぱonEnterFrame内に次の処理を入れとけってことですね…。 実はmain_loop内でこのmcが、特殊な場合のみ再生される予定でしたので (onEnterFrameをifでくるむつもり) その後の処理を別関数にしてonEnterFrame内に入れてみたり else後にも入れてみたりしてみます。
これでいいんじゃないの? function main_loop(){ var count=0; mc.onEnterFrame=function(){ if(count<10){ count++; return; } //続き } }
レイヤー全体をスクロールするときはどうしたらいいんでしょうか? そのレイヤー上には画像切り替えのパラパラアニメが置かれています。 パラパラアニメしながら全体がスクロールというものを作りたいんですが。
質問させて頂きます。 あるボタンを押すとWindow.createPopUp()で小さなwindowが出てムービークリップが読み込まれるようにしました。 on(release){ import mx.managers.PopUpManager import mx.containers.Window var smallWindow = PopUpManager.createPopUp(_root, Window, true, { title:"title", contentPath:"sWindow_mc" }); windowtmp = new Object(); windowtmp.complete = function(evtObj){ smallWindow.setSize(smallWindow.content._width+5, smallWindow.content._height + 35); smallWindow.move(500,400); } smallWindow.addEventListener("complete", windowtmp); } この小windowに置いたyesボタンで異なる階層にあるムービークリップを動かしたいのですが、どうパスを設定すればいいでしょうか? 試しにyesボタンに on(release){ _level1.base_mc.moveTarget_mc.gotoAndPlay(10); } と書いてみたのですが動きませんでした。 それぞれのパスは ・小Windowを出すボタン _level1.button_1 ・Window上のyesボタン _level1.depthChild0.content.yesButton ・動かしたいムービークリップ _level1.base_mc.moveTarget_mc となっています。 よろしくお願いします。
レイヤー単位での処理はできないよ パラパラアニメ部分を独立したムービークリップにすれば、 それを動かせばOK
>>734 _levelは1であってる?
動かしたいムービークリップの中にtrace(this)かいてパス確認。
737 :
727 :2006/02/10(金) 00:40:08 ID:mSaDaIQV
>>732 はい。基本それで行こうと思いました。
もともとは以下のようなカタチで
function main_loop(){
処理1・・・
処理2・・・
}
処理1と処理2の間に、あるフラグが立ったときのみmcを再生させたくなって
function main_loop(){
処理1・・・
var count=0;
if(flg){
mc.onEnterFrame=function(){
if(count<10){
count++;
return;
}
処理A
}
処理2・・・
}
しかもこの処理Aとmc再生の間は処理2以降はちょっとタンマしてもらいたかったのでした。
処理1、2共に気合の入った処理だったであんまり動かしたくないなぁっていうワガママなのでした。
>>736 レスありがとうございます。
traceとオブジェクトのリストアップ両方しましたが、_level1.base_mc.moveTarget_mcでした。
小windowが出るとmoveTarget_mc同じフィールドに配置されているボタンが押せなくなりますが、このことに関係しているのでしょうか?
試しに_level1.base_mc.moveTarget_mc.gotoAndPlay(10); を小windowを出すかわりに、button_1に入れてみたら動きましたorz
Flash8です。 複数あるテキストフィールド(t1,t2,t3)のどれかが変更されたら、 trace("Changed");を実行させたいのですが、出力されません。 //フォーカスのあるテキストフィールドを調べる this.onEnterFrame =function(){ tName = Selection.getFocus();} //テキストフィールドの内容が変わった時の処理 tName.onChanged = function() { trace("Changed");}; そこで、 tName=t1; と、具体的にテキストフィールドのインスタンス名を指定すると動きます。 何がいけないんでしょうか?よろしくお願いします。
>>739 tName = new Object();
tName.onChanged = function() {
trace("Changed");
};
t1.addListener(tName);
t2.addListener(tName);
t3.addListener(tName);
でいいんじゃないかな?
たぶんこれで動くと思うけど間違ってるかもしれない。
741 :
739 :2006/02/10(金) 14:00:11 ID:1fUcmyvn
>740 ありがとう、動きました。でもごめんなさい onSetFocus onKillFocus もつかいたいんで、 リスナーオブジェクトを避けてました テキストフィールドのリスナーオブジェクトって、 上記の動作は使えないようです (知識不足かもしれませんが) 説明不足ですいません。
742 :
739 :2006/02/10(金) 14:04:46 ID:1fUcmyvn
>739の追記です テキストフィールドにフォーカスがきた時と、外れたとき、内容が変更されたときに、 処理をしたいと思っています。リスナーオブジェクトでいけるのかな? よろしくお願いします。 //フォーカスのあるテキストフィールドを調べる this.onEnterFrame =function(){ tName = Selection.getFocus();} //テキストフィールドのイベント毎に処理 tName.onSetFocus = function() { trace("Focus");}; tName.onKillFocus = function() { trace("Out");}; tName.onChanged = function() { trace("Changed"); };
>>742 MXだけど8でも動くかな?
tName = new Object();
tName.onChanged = function(chgText) {
trace("Changed:"+chgText);
};
tName.onSetFocus = function(oldFocus, newFocus) {
if (newFocus != null) {
trace("Focus:"+newFocus);
}
if (oldFocus != null) {
trace("Out:"+oldFocus);
}
};
t1.addListener(tName);
t2.addListener(tName);
t3.addListener(tName);
Selection.addListener(tName);
あるインスタンスの中に格納されている変数を 全部、別なインスタンスの中に移す、という処理をしたいのですが、 何かいい方法ありませんでしょうか? 格納されている変数のリストを参照する関数とかあるといいんですが・・・。 環境はwin XP,Flash 8です。
>>744 変数かどうかの判断はわからんけど、
for (obj in _root) {
trace(obj);
}
ぉぉ! 糸口つかめました。 すばやい回答ありがとうございました。
外部にある画像ファイルを読み込んで、それを並べて表示する、 という処理をしたいと思っています。 MovieClip.beginBitmapFill などを使えばいけるかもと思ったんですがどうですか? (読み込む画像ファイルのサイズはバラバラ) 横方向にしか並べる予定がないので サイズ取得して並べるという方法のほうがいいのかな・・・ どなたかお願いします。XP、Flash 8です。
>>747 loadMovieは?
なんでファイルサイズ取得する必要がある?
749 :
747 :2006/02/11(土) 16:05:30 ID:WCWIzjn7
loadMovieだと1個しか表示されないみたいなんですが、 HTMLの背景のように敷き詰めて表示したいのです。。。
ファイルの数だけ、空のMC作ってそれに読み込ませる。 MCはxy座標で移動させること。 8にファイルの数を取得する関数があれば良いけど、 無いならファイルの数は外部テキストで読み込ませる。
カスタム関数について質問です。 引数だけで値を呼び出し元に返せないんでしたっけ…。 例えば、下記のスクリプトでムービークリップ「MC1」のフレームを動かしたいんですが 上手くいかなくて。 //_rootのフレーム一行目AS function testR(tPlace){ tPlace = 6; } //_root.MC1.mc2のムービークリップAS on(release){ var MCtest; testR(MCtest); _parent.gotoAndStop(MCtest); }
752 :
725 :2006/02/11(土) 16:31:08 ID:mwSYq/Ne
>>751 //_rootのフレーム一行目AS
function testR(){
return 6;
}
//_root.MC1.mc2のムービークリップAS
on(release){
var MCtest = testR();
_parent.gotoAndStop(MCtest);
}
それはともかく、
>>725 は誰もわかりませんかねー。
無謀なことせずに、MovieClipLoader は一個で確実に動かすべきですか。
753 :
747 :2006/02/11(土) 16:44:26 ID:WCWIzjn7
>>750 やっぱりそれしかなさそうですね・・・
回答ありがとうございました。
>>752 ありがとうございます。
返せなかったのか……。
更に質問で恐縮なんですが、
関数から複数個の値を返したい時ってどうやってます?
例えば…私の勘違いしていた例
>>751 でやるなら下記みたいな感じの時です。
//_rootのフレーム一行目AS
function testR(tPlace1, tPlace2){
tPlace = 6;
tPlace = 10;
}
>>754 配列やオブジェクト(内部的には同じっぺぇ)は参照渡しされるからそれつかったらええ
>>755 う、勉強不足でいまいち飲み込めないんですが、
こういう事ですか?
function testR(){
tPlace = new Array();
}
>>756 途中で送ってしもた!
こんな感じですかね。
function testR(){
tPlace = new Array();
tPlace = [6, 10];
return tPlace;
}
>>757 最初のnew Array()は何がしたいの?
function testR(){ return [6,10]; }
でいいだろ。
で、どうしても引数を使って返したいというなら次の方法だ。
function testR(out){
out[0]=6;
out[1]=10;
}
var temp=[];
testR(temp);
trace(temp[0]);
trace(temp[1]);
>>758 どうもありがとう、すっきりわかりました。
new Array();は…明示的に書かないと(私が)解りづらくなってしまうって事でひとつの癖です。
>>759 そのよくわからん癖は、このような風に変えた方がいい。
var tPlace:Array = [6,10];
横レスだけど tPlace = new Array(); tPlace = [6, 10]; と var tPlace:Array = [6,10]; って同じ? varでローカルにするところが違うのかな?
違う。変数のデータ型をArrayだと指定している。 Javaのような言語で表すと Array tPlace = new Array(); と似たような感じ。 データ型指定はあまり普及してないんかな? データ型指定がよくわからんなら、変数の末尾に_arrayと付けるのはどうだろう? その変数に配列が入ってることが分かるし、入力支援も受けられる。
>>761 そう。スコープが変わってきてしまう。
なるべくvarで宣言しておいたほうがいいよ。
でも tPlace = new Array(); ってだけでデータ型指定されてるってことになるでしょ? ローカルorグローバル指定は用途によって異なるしどちらとも言えないけど。 あと var tPlace:Array = [6,10]; ってvar外すと使えないのが前から謎です。
自己流で変な癖が付く前に、基本を学んだ方がいいよ。
>>764 >ってだけでデータ型指定されてるってことになるでしょ?
いや、ならないよ。
>var tPlace:Array = [6,10]; ってvar外すと使えないのが前から謎です。
データ型指定は変数宣言時に付けるモノだからね。
>>764 var 変数名:型
が一つのセットだからvarを外したらエラーになるだけ。
それからデータ型指定は、中身を指定するのが目的じゃなくて、
その変数には特定のデータ型しか入れられなくするのが目的。
つまり、エラーかどうかを判断したり、コードヒントを出したりという、
作り手にわかりやすくするための宣言という事。
tPlace = new Array(1,2)
でも、確かにtPlaceの中身は配列だけれども、その後に
tPlace = 10
と数値を入れることもできる。そういう用途にしたいのなら型宣言は
必要ないかもね。
でも、普通はそういう変な代入したときにきちんとエラーになってくれるように
var tPlace:Array = new Array(1,2)
と、型指定をするわけ。
しつこかったらごめんなさい。 var tPlace:Array = new Array(1,2) この書き方、ローカルの場合はいいけど、グローバルの場合はどうすればいいの? var取るとエラーだし、var付けるとローカルだし。。。
>>768 グローバル変数は、ActionScript2のシンタックスの制限により
データ型指定は出来ない。
かといって、この↓書き方でも、データ指定は出来ていない。
tPlace = new Array();
tPlace = [1,2];
これは無駄に配列オブジェクトを生成して捨ててるだけ。
>>768 グローバル変数は型定義できない。
でもタイムライン変数だったらメインのタイムラインでvarステートメントで宣言すればいいだけ。
ローカル変数だったらfunctionの中で宣言するだけ。
つまり、
_global.tPlace(グローバル変数)の型宣言はできないけど、
メインのタイムライン上で、
var tPlace:Array
とタイムライン変数の型は宣言できるし、
function hoge(){
var tPlace:Array
}
とローカル変数の型も宣言できる。
グローバル変数の型宣言はなんでできないの?という話になると、これはActionScript
がそういうようにできているから、としか言いようがない。
771 :
739 :2006/02/12(日) 01:33:44 ID:NrXXDOqh
>743 動きました。リスナーオブジェクトでいけるんですね なんで自分は駄目だったんだろ 詳しく比較してみます。ありがとうございました
グローバル変数なんか使わない方がいいよ。
それは…_global使うとプログラムに負担がかかるって事?
いや、プログラマに負担がかかる、と一般的には言われてるかな。
>>770 なるほど。わかりましたありがとうございます。疑問が解けました。
〜 = new Array()、2次元以上の配列のときに出番がくるのかな。
var myNumber:Number = new Number(3541); trace(myNumber.toString(16)); とすると"dd5"という値が帰ってくるのですが、 これをまた10進法に戻す方法というのは無いのでしょうか?
>>776 parseInt(myNumber.toString(16), 16);
Number("0x"+myNumber.toString(16));
とか。
>>777 parseIntを使えばいいんですかー。
ありがとうございます!
>>773 そう。ローカル変数に比べてスコープを移動して走査する分遅くなる。
探す範囲が広くなるから遅くなるという事ね。
それと、多用するとプログラムが読みにくくなるというのもある。
遅くなるって、、、、なかなかすごい意見だ
>>776 また戻すというか、NumberはNumberだから、表現方法を変えるだけ。
違うものになるわけじゃない。
>>780 常識だっての。試してごらん。
//ローカル変数利用
var t = getTimer()
function hoge(){
var v = 0
for(i=0;i<100000;i++)v+=i
return v
}
v = hoge()
trace([v,getTimer()-t])
//グローバル変数利用
_global.v = 0
var t = getTimer()
function hoge(){
for(i=0;i<100000;i++)v+=i
return v
}
v = hoge()
trace([v,getTimer()-t])
>>781 toStringの戻り値は文字列だからNumberじゃない。まったく別物。
で、何msちがうの?
>>783 そんなのあたりまえじゃん。Number自体を変えるということではないよということでし。
>>782 じゃあ、return _global.v;とスコープをちゃんと解決させたらどうなるの?
>>782 質問でし
iがvar宣言されてないから1度目のローカル..の方で宣言され、それがグローバルの
方でも使われる。ここで差が出る。あと、vでは無く_global.v=にしないと意味がない。
vという変数が新たに定義されそれに対して演算してる。この疑問に答えてちょ。
782のscriptを走らせた結果
local:650ms
global無し:900ms
_global有り:800ms
_global.vとしてもlocal変数の方が早かった。
>>787 >iがvar宣言されてないから1度目のローカル..の方で宣言され
コメントアウトしてそれぞれを実行した。
>vでは無く_global.v=にしないと意味がない。
_globalまでvを探しに行く。
>>788 参照はできるが、代入なり演算処理ではvは隠蔽されると思われるが。
_global .v = 0; v=1; trace(_global.v +":"+v); な、感じ。
>>789 あー! だから_globalつけずに代入しようとしたときにローカルに勝手に同一名が作られたんだ。
速度のことも含めて、勉強になったよ。オマイラ、ありがとう。
>>790 >参照はできるが、代入なり演算処理ではvは隠蔽されると思われるが。
納得。
_global.v = 100;
var t:Number = getTimer();
function hoge():Number {
for(var i:Number = 0; i < 100; i++) {
v++;
}
trace(v);//200
return v
}
hoge();
trace(_global.v);//100
loadMovieについての質問なのですが、 最初にindex.swfというファイルを再生させたあと、その中にある いくつかのボタンをクリックするとa.swfやb.swfなどをloadMovieするようにしています。 ですがa.swfをロードしたあと、たとえばさらにb.swfをロードさせたり またa.swfをロードさせたりc.swfをロードさせたりすると その都度それぞれのムービーが再生される前に一瞬だけ index.swfの最後のフレームが表示されてしまいます。 画面がちらつくようでなんとか回避したくてググったりもして調べたのですが、 解決法がわかりませんでした。 つたない説明で恐縮ですが、どなたかご教示お願いします。
flashとphpを組み合わせて遊んでいるのですが、 これらは同じドメイン内に置かないとダメですよね? ナントカして違うドメイン間で通信させたいのですが、 何かよい方法はないものでしょうか。 どうぞよろしくお願いします。
>>793 最小構成で試してもそうなる?
他にASかいてたり、this.stop()かいてなかったりしない?
crossdomain.xmlをおけばダイジョーブ
797 :
Now_loading...774KB :2006/02/12(日) 22:49:04 ID:iaF8GvTC
>>796 おー ホント助かりました!
ありがとう
798 :
Now_loading...774KB :2006/02/13(月) 04:32:05 ID:EyJLc4KW
OSに関することになるかもしれませんが…質問させて頂きます。 静止テキストからリンクをはる対象がWindowsのユーザ名やMacOSXのユーザ名のとき、どのようにユーザ名を取得すればいいのでしょうか? 不特定多数のユーザに対応して「C:/Document and Settings/hogehoge/」や「/Users/hogehoge/」にリンクを作りたいです。 このような時はhogehogeのところにユーザ名取得の何かを入れると思うのですが… よろしくお願いします。
799 :
Now_loading...774KB :2006/02/13(月) 11:01:42 ID:tSD93hw4
flashでRSSを読み込みたいのですが、初心者なので何をどうしたらよいのかよくわかりません。 どなたか簡単にご説明頂けないでしょうか?
>>799 RSSリーダーを作れというなら皆、断ると思うよ。
ヒントが欲しいとか、作ってみたが上手く行かないとかなら
教えてもらえるはず。
とりあえずFlashでxmlを処理する方法でも調べてみたら?
CGIから値を受け取るときに、 配列を受け取れたら便利だなあと思っています。 そこで、hoge[1]=abc&hoge[2]=def&... というものをCGIに送信させて受け取ってみたところ [ や ] . が %2Eなどにエンコードされてしまってうまくいきません。 うまい方法はないでしょうか? 環境はXP, Flash 8 です。よろしくお願いします。
802 :
Now_loading...774KB :2006/02/13(月) 14:08:08 ID:VcbY23Q3
>>801 hoge1=abc&hoge2=def&...
で、Flash上でアクセスするときは
this["hoge" + i]
にすれば、実質配列があるのといっしょでしょ。
>>801 xml使う。簡単なテキストなら難しくないよ。
>>801 UTF-8に変換すればいいんじゃない?
さっそくのお答えありがとうございました。 いろいろ試してみますっ。
質問です。 mc.gotoAndPlay();や mc.gotoAndStop(); って、 括弧内に変数を指定する事ってできないんでしょうか。 変数内の数値を渡しても動かないので、 ムービークリップ「mc」のフレームラベルに 現在のフレームと同じ数値を入力し、 toString()で文字列に変換して渡しても無理だったんで…
>>806 物凄く単純な実験用のファイルを作って、いろいろやってみるといい。
>>806 んなわきゃない。どうせpath違うとか、変数が文字列とか、そういう問題だろ。
文字列の場合はその名前のラベルにヘッドが移動する。
809 :
その1 :2006/02/13(月) 19:24:59 ID:DqUprnRC
長くてすいませんけど、詳しく書かないと伝わらないかもしれないので、 申し訳ないですけど分割して書き込ませてもらいます。 格子状に並んだ四角形を奥行きがあるように手前に飛び出たり 奥に引っ込んだりさせて、面(布みたいな、水面みたいな)が波打ってるようにしたいんですけど。 それそれの四角には変数Zを設定して クリックした四角はデフォルトの変数Zに向かってバネの動きをさせて その隣の四角はクリックした四角のZに向かって緩やかに減速しながら近付くようにして そのまた隣の四角はクリックされた方向の隣の四角のZに向かって減速しながら近付くというふうにスクリプトを書きました。 例えば縦3横3の面を作るとして、下図のようにmc1からmc9までにそれぞれmc番号・縦番号・横番号を設定して mc1・1・1 mc2・1・2 mc3・1・3 mc4・2・1 mc5・2・2 mc6・2・3 mc7・3・1 mc8・3・2 mc9・3・3 どこかのmcがクリックされたときに、変数click1から9と、変数targetMc1から9が設定されます。 targetMcが、上のmcのときは自分の縦番号-1、右のmcのときは横番号+1というふうに設定されます。
810 :
その2 :2006/02/13(月) 19:25:42 ID:DqUprnRC
そしてルールさせるスクリプトは i=0; while(i<9){ i++; if(eval("click"+i)){ eval("ZV"+i)=デフォルトのZに向かってバネ運動 }else{ eval("ZV"+i)=targetMCのZに向かって減速接近 } eval("Z"+i) += eval("ZV"+i); // 以下はそれぞれmcの_x、_y、_xscale、_yscale、depthsに変数Zによって得られた数値を代入するスクリプト } というふうにを書きました。 で、だいたい思うような動きにはなったんですけど、一つ致命的な不具合が発生してしまいます。
811 :
その3 :2006/02/13(月) 19:30:00 ID:DqUprnRC
問題は減速しながら近付くときの減速値で、ZV = (targetMcのZ-自分のZ)/減速値という式で 減速値を1に設定した場合、本来なら縦3横3の面全体が同時に動いて大きくなったり小さくなったりして 全体として動くけど、面自体が波打つようには動かないはずでしたが mc1をクリックした場合にのみ、そのように正しく動くのですが、 その他のmcをクリックした場合はなぜかズレが生じてしまいます。mc9をクリックした場合は順々に波打ってしまいますし まん中のmcをクリックした場合は変なふうにブロック状にいっしょに動くmcとズレて動くmcとができてしまいます。 これはflashの特性みたいなものなのでしょうか? while文は1から始めて9が最後に計算されるからなのか、どこが原因なのでしょうか? 番号で管理するやりかたに無理があるのか・・・? これはflash5で作ってるのですけど、最新のflashでは解決法があったりとかするのでしょうか? 長くてすいませんけど、教えてほしいです。
>>811 ぱっと見だが、iは1から8まででいいのか?
あ、<か、スレ汚しごめん。
>>812 ありがとうございます。
iは8の状態で最後の繰り返しに入って
まず+1されるので結局9になるというふうしました。
そこは間違ってないと思います。
動きはズレの問題がさえなければそれなりに正常に動いているので。
どこかにflaでもUPしてみればいいと思うよ。
function selectDirectory(image_num) { if (image_num < 10000) { return ("00000"); } else if (image_num > 9999 && image_num < 20000) { return ("10000"); } else if (image_num > 19999 && image_num < 30000) { return ("20000"); } else if (image_num > 29999 && image_num < 40000) { return ("30000"); } } こんな感じで、たとえば12345を与えると "10000"と戻ってくるような関数を作ったのですが、 もっと効率のいい書き方はないものでしょうか?
>>817 方針としては
(1)まず1万で割る
(2)小数点以下を切り捨てる(Math.floor)
(3)1万倍する
でいけると思うんだけど。
>>817 function ValentineDayHaisi(n){
return int(n/1000)+"0000"
}
10000で割って切り捨てたのに0くっつけりゃいいんじゃね?
flaファイルをアップしました。
http://uploaderlink.hp.infoseek.co.jp/cgi-bin/512kb/src/up3959.zip.html 上で書いたのとはちょっと違うんですけど
縦5横5に増えてます。mcの名前はcell1からcell25になってます。
otherDampという変数を増やすと波打つ動きになって、1にすると波でなく板状になる
はずだったのですが、cell1をクリックしたときは正常に動いているようになりますけど
それ以外の四角だとズレがでてしまいます。
otherDampが1以上でも動き自体はズレているのですが、全体として波うっているので
そのズレが目立たないだけってことですけど。
while文っていうのは同時にmcを動かしてるわけじゃないってことですかね。
同時に動かすにはどうすればいいのでしょうか?
>>821 常に1なら
on(press){
_parent.mcClick(1);
_parent.mcPush(1);
}
じゃないと駄目だべ。
>>822 常にcell1を押すのではなくて
どのcellを押しても
otherDampが1なら板状に、1以上なら波になるようにしたいのです。
だからそれしたいなら引数が1じゃないと駄目じゃねーの? 今のコードは前のcellの位置や大きさに引数分だけ変化させる コードなんだからさ。 うpしたのはotherDampに依存してなくね?
>>824 しつこくてすいません
on(press){
if(_parent.otherDamp==1){
_parent.mcClick(1);
_parent.mcPush(1);
}else{
_parent.mcClick(mcNum);
_parent.mcPush(mcNum);
}
}
って書くということですか?
たしかにこうするとotherDampが1のときは
どのmcを押しても板状に動きます。
でもズレを根本的に消してるわけじゃないですよね。
自分の説明が悪かったと思います。
otherDampが1の状態に限らず動きのズレを消したいということなのです。
otherDampは常に1なのではなくパラメーター操作のように
スライドバーかなんかで調節できるようにしようと思っているのですが。
波状に動かしているときのズレを消すのはやはり無理なのでしょうか?
じゃあ function mcClick (clickNum) { j = 0; clickNum=otherDamp と function mcPush(pushNum){ pushNum=otherDamp でいいんじゃね?雑な修正だけど。 つーか内容わかってる?丸写し?
なんかめんどくさそうだから他の誰かに任せた。バイバイ。
>>826 教えてもらってんのに
否定ばかりですいませんけど
でもclickNumとかpushNumというのは
あくまでもeval("click"+○)とかeval("ZV"+○)というような
それぞれのcellの番号に対応した変数を番号指定するための変数で
otherDampというのはループスクリプトの中の
eval("ZV"+k) = (eval("tagMc"+k).nowZ-this["cell"+k].nowZ)/otherDamp;という
減速接近の式につかう減速値なので
clickNum=otherDampというように代入するのは
ちょっと違うと思います。
ちなみにこのスクリプトは他人のものを丸写しにしたりとかしてません。
自分で書いたことは理解してます。
わからないのは、ステージ上にあるmcを同時にリアルタイムに動いているようにしたいのに
タイミングがズレているところでして。はじめはそれぞれのmcの中のフレームに
スクリプトを書いて動かしてみたものの、同時に動かず、
ならば親mcにすべての子mcを動かすスクリプトをかけばいいのかと思い
while文を使ってみたものの上手くいかないという状態です。
evalがうちではエラーはくからめんどい
>>828 おまいさんの長文はマトモに読んでないし、
ソースも適当にみた感じだが、
とりあえず、
処理順が頭からで、押したcellより前のcellのnowZの値は、その時点でのnowZを参照する
したがって、押したcell以前のtagMc参照はそのフレームでセットした値じゃない
だからズレル
最初の1枚は最初に値をいれられ、それ以後のcellはターゲットとしてその値を使うからずれない
仕様とかなんとかじゃなく、そういう設計のスクリプト
解決方法まで考えるのめんどいしもう寝る
あとはがんがれ
>>830 なんかわかんないですけど
手がかりみたいなものは見えてきました。
ありがとうございます。
クリックした番号からはじまって放射状にナンバリングしなおして
その順番でwhile文でループさせるというやり方くらいしか
自分には思い浮かびませんけど・・・。
>>817 明治ミルクチョコでいいでし。。。順番変えると大変なことにw
var aa:Number = 39999;
function selectDirectory(image_num:Number):String {
if (image_num > 40000) return ("OutofOrder");
if (image_num > 29999) return ("30000");
if (image_num > 19999) return ("20000");
if (image_num > 9999) return ("10000");
return "00000";
}
trace(selectDirectory(aa));
833 :
Now_loading...774KB :2006/02/14(火) 19:01:36 ID:gEtqHe+n
PHPを利用してwww.hoge/index.php?id=0001 などとして 表示されるWebページ上のFLASHにこのID=0001を取り込みたいのですが どのような方法がありますか?
くっそー! gotoAndPlay(0)で最初のフレームに戻ってくれねーから、 なにが原因なんだと30分ぐらい悩んだぜ! フレームは1スタートだからgotoAndPlay(1)が正解だったなんて!
836 :
Now_loading...774KB :2006/02/14(火) 21:44:28 ID:KsNyUi7Y
フラッシュ8を使ってます 質問させてください 下記のASを用いてボタンを押すと2p、3p、4pと次のページに進む 絵本(?)の用なものを作っています 次のページには進めますが、最後のページから最初のページ (1フレ目)に戻りたいのに戻れません this.stop(); b1.onRelease = function() { gotoAndStop(2); }; b2.onRelease = function() { gotoAndStop(3); }; b3.onRelease = function() { gotoAndStop(4); }; b4.onRelease = function() { gotoAndStop(1); }; 助けてください
fla見ないとワカンネ
838 :
Now_loading...774KB :2006/02/14(火) 22:43:30 ID:lh/CLm4y
あるMovieClipの上に載っているコンポーネントに、そのMovieClipのクラスから アクセスするには、どうすればよいのでしょう。 例えばLabelのTextプロパティに、外からアクセスするには、 hogeMC.label.text でアクセスできますが、自分のクラスの内部から アクセスしようと、this.label.text ではアクセスできません。 教えていただけませんでしょうか。お願いいたします。
>>836 そのスクリプト書いたフレームより後ろにb4ボタンない?
か、インスタンス名がおかしいか。
>>838 とりあえずtrace(this)でthisがなんかのか確認してみれば?
840 :
Now_loading...774KB :2006/02/14(火) 23:25:57 ID:KsNyUi7Y
>>836 です
>>837 ここにあげるのがちょっと恥ずかしいフラなんですが。。。
>>836 インスタンス名は間違えないです
何回も確認した上、たった二文字をコピペしました
b4ボタンは後ろも前にもないです
841 :
Now_loading...774KB :2006/02/14(火) 23:27:09 ID:KsNyUi7Y
質問です。 mc_Aは空のムービークリップです。 mc_Aに、beginFill,lineStyle,moveTo,lineTo,endFill を利用して多角形を描画します。 mc_B.setMask(mc_A) としたのですが、マスクされていません。 動的に描画された多角形ではマスクできないのでしょうか?
843 :
Now_loading...774KB :2006/02/14(火) 23:29:39 ID:LhWvktVW
>>842 多角形はやったことないけど、円ではできるよ。
lineStyleとbeginFillの色を合わせてべた塗りっぽくしてみるとか。
846 :
Now_loading...774KB :2006/02/14(火) 23:52:04 ID:LhWvktVW
>>845 自分MXでよくわからなかった。すまぬ。
いや、おれもMX。 付け忘れてもスクリプトの揃え?チェック?をすると自動的に付くけど。
無くても問題ない。俺の場合、むしろ、見づらくなるからつけない。
>>840 ボタンじゃなくてMC?
とりあえずそのASより後ろにあったらだめ。
そのFlaじゃなくても最小構成で作ってUpすれば?
850 :
846 :2006/02/15(水) 00:02:15 ID:+d2C5g/w
>>848 そういうことか〜!自分も付けない派だったってことか!サンクス
851 :
840 :2006/02/15(水) 00:18:17 ID:4EC/FqmV
>>849 うしろにはないです。ボタンはすべて違うインスタンス名つけてます。なんでだ。
ってところで、違う方法で強制的に解決しました
戻るボタンでそのフラが置いてあるhtmlをリンクさせるって言う・・・。
一瞬白くなりますが、、、まぁいいかと。
なんっていうか、すいませんお騒がせいたしましたorz
852 :
842 :2006/02/15(水) 00:20:08 ID:xNwKbwtR
853 :
Now_loading...774KB :2006/02/15(水) 00:23:33 ID:hAjIZOge
>>852 ああ、出来るよ。
マスクした後で描画しても出来る。
深度がマスクするMCより上じゃないと駄目とかじゃね?
>>836 で記述されてるスクリプト、1フレーム目に書いてあるのかな?
gotoAndStop,gotoAndPlay は「今処理しているフレーム」には飛べない。
そのへんが問題なんじゃないかな。
ダミーフレームを入れれば飛べるようになりそうな予感。
856 :
Now_loading...774KB :2006/02/15(水) 00:38:52 ID:+d2C5g/w
>>855 MXなら、エキスパートモードで適当に関数を代入で作成してからノーマルモードにしてみ
その時点で;がついてる
で、そのまま編集して警告でるが無視して、エキスパートモードもどるとそのまま;がついてる
まあ、普通に意味考えれば;いるのはわかるっしょ
無くても問題はないけどね
function 名称(){}定義ではいらん
ぶっちゃけASは勉強中だからよーわからんのけど、ありがと。 解説本読み込んでみるわ。
859 :
840&851 :2006/02/15(水) 01:00:07 ID:4EC/FqmV
>>854 >>856 1フレじゃなく、AS用のレイヤー作ってそこに頭からケツまでのばして書き込んでます
ってことは、AS書き込んでた所が間違いだった...?
>>859 なんでhtmlがでてくる?
swf内で処理してるんでないの?
861 :
859 :2006/02/15(水) 01:07:47 ID:4EC/FqmV
>>860 最後まで行ったら、最初に戻ってほしくて、
そのフラが置いてあるhtmlごと更新してしまえ...と...orz
863 :
859 :2006/02/15(水) 01:19:43 ID:4EC/FqmV
>>862 そうなんですか!なるほど。だからだめだったんだ。凄い納得
ってか、アレから今の間にこのフラ作ったんですか!!すごい。
此処の人ってみんなこのくらい凄いんですかね。
初心者がお邪魔しましたorz
再び頑張ってきます
864 :
863 :2006/02/15(水) 01:44:03 ID:4EC/FqmV
出来ました!!!もの凄くどうもありがとうございました 無事フラ内で戻れるようになりました。お騒がせいたしました
865 :
Now_loading...774KB :2006/02/15(水) 01:45:49 ID:+d2C5g/w
866 :
842 :2006/02/15(水) 02:00:10 ID:xNwKbwtR
あ〜、やっぱりくだらないミスでした。 最初に mc_B.setMask(mc_A); とセッティングしておいていろいろやってたのですが、途中、 mcl.loadClip("hoge.swf",mc_B); をしてたせいで、ファイルの読み込みが完了した瞬間にマスクのセットも外されてたみたいです。 onLoadInit 内で setMask することで解決しました。
867 :
833 :2006/02/15(水) 04:58:57 ID:WNwR9tlj
>>834 今更ですがありがとうございました!
実現できました!!
すみません、ActionScriptのイベントハンドラメソッドって、 JavaScriptみたいに「onMouseOver」(ムービー上にマウスがあるとき)は無いんですよね。 これをカスタム関数で作るとしたら、どうやったら良いか解りますでしょうか。
>>868 ステージと同サイズのMC置いてMovieClip.onRollOver
>>869 すばやい回答ありがとうございます。
役に立ちましたー。
質問させていただきます。 Win XP HomeSP2 Flash MXを使用中です。 MCをDuplicateMovieでランダムな数に複製して、 画面上部から画面下部へと降らし、画面外に 到達したときに複製したMCを破棄するには どうすればよいのでしょうか?
>>871 つかその流れ通り記述すればいいんじゃない?
874 :
871 :2006/02/16(木) 04:49:55 ID:O8lPKEXj
>>872-873 あ、すいません。ランダムな数のMCを複製するところで
詰まっています。その部分のASを教えてもらえませんか?
>>874 教えたところで理解できるとは思えない。
ぐぐれ。
>>874 全然はじめでつまづいてんじゃん。
なら、降らすとか破棄とか後にして質問を絞るべし。
もしかして、ランダムな上限値を出すことができないのか?
それはできるがforなどのループを使えないのか?
詰まってるのは具体的にどこ?
問題を絞りこめばヘルプ見ただけでもわかるような記述だったりするもんだよ。
>>874 Math.randomでヘルプでも検索しる
>>875-877 すいません、自己解決しました。
ありがとうございます。お騒がせしました。
フレームの制御について質問でつ フレーム100に到達時の処理は if ( mc._currentframe==100 ){ 処理 } ですが ラベル"label"に到達した時の処理はどうすれば? つまり数値で判定したくない場合はどんな手段があるのでしょうか?
880 :
879 :2006/02/16(木) 14:44:41 ID:TZ++y6mr
ちょw ごめんイキナリ自己解決 ラベルのトコに変数でも埋め込んでおけばおkかw
881 :
Now_loading...774KB :2006/02/16(木) 17:30:17 ID:BsQF1UjT
ソフト=FlashMX2004,OS=Win98SE Q) 文字列の記号を演算子に変換 例として、要素内の数字も文字列として格納しているの配列 calcD[0] =123, calcD[1] =' + ',calcD[2] =2,calcD[3] =' x ', calcD[4] =10 (数式だと 123+2×10) があったとき、' + ' や ' x ' を演算子に変換して(戻して)、AS上で実際 に123+2*10を行い、答えの143という数値を得るにはどうしたらいいでしょうか? kotaeを変数にして(初期値は0)、for文のiを変化させる形で for (i=0; i<=4; i++) { kotae =kotae+_root.calcD[idx1]; } をする際にcalcD[i]を演算子に戻したいのですが文字列のままです。 (数字はparseIntで戻せます) for文を使っていますが、これにはこだわりません。アドバイスを願います。
>>881 力業ぽいが、値が+-*/のいずれかなら、それに対応した四則演算処理をするって処理なら可能じゃない?
値の型を変えることはできるけど、値から演算子にするっつーメソッドがあるのかは知らん。
>>881 >>882 の考え方を継承しつつ、
' + ' や ' x 'をユーザ側に入力させようって意図だと過程するならば、
文字列を格納する変数を用意して以下の様に
sumCalc = ' + ';
minusCalc = ' - ';
んで、if文で条件を指定して実際の演算子に変換って事をすればいいんじゃないかな。
if(calcD[i] == sumCalc)みたいな感じで。
尤も、演算子の文字列を入力する配列のインデックスが固定されているならば、
演算時に楽な気がします。
>>881 やってみようと思ったらifとforの嵐になって、めんどくなってやめた。
がんばって作っても今後メリットあるとは思えないし。
できるひとは簡単に書けるのかもしれないけどね。
おれにゃ無理だ。
中置記法の演算をやってくれるライブラリとかコンポーネントとかみたいなものがあるのなら、 それを使うのが楽でええだろうねぇ。 まあそれはないとして、やっぱ手作業で戻すしかないんでないの? switch (arr[i]){ case "+": var b = parseInt(stack.pop());// 数値をふたつ var a = parseInt(stack.pop());// とりだして stack.push((a + b).toString());// 加算してスタックに戻す break; case "-": var b = parseInt(stack.pop()); var a = parseInt(stack.pop()); stack.push((a - b).toString()); break; } ただこれだけだと演算子の優先順位を守らせるのが難しいけどね。 俺は中置記法はあきらめて後置記法にしたよ。 var str = "123,2,10,*,+"; var arr = str.split(","); (以下略) これなら、上記のswitch文に default: stack.push(arr[i]); break; って入れるだけで完成。
そうなんだよね。電卓のようにするなら簡単だけど、 最終的に一つの数式にするなら演算の優先順位がネック。
887 :
Now_loading...774KB :2006/02/16(木) 18:45:26 ID:fjs6o0ym
ちょっとスレ違いかもで申し訳ないのですが、ご存知だったら教えてください。 複数のメニューをマウスに反応させて3D的に動かしたいと思っているのですが、どこかにいいサンプルありませんか? 3D的(深度がある?)なものであれば、どういったものでも構いません。 ご存知であればよろしくお願いします。
>>881-886 方法思いついた。外部アクションスクリプトを使えばいい。
1)フラッシュ内で記述された数式をCGIに渡す。
2)CGIは受け取った数式をそのまま「hoge.as」というファイル名に保存する。
3)フラッシュは「hoge.as」を外部アクションスクリプトとして実行。
これでいけると思うが。
>>887 3D的って言われてもわからん。このページ(url提示)みたいな感じとかもう少し具体的に。
>>888 何がいけるんだ?
あんた、asファイルの読み込み方知ってる?
>>881 ↓実行してみて。コレがヒント。
calcD = [];
calcD[0] = 123;
calcD[1] =' + ';
calcD[2] = 2;
calcD[3] = ' * ';
calcD[4] = 10;
getURL("javascript:void(alert("+calcD.join("")+"))");
詰まった…質問です。 あるムービークリップを押しっぱなしにしたままで3秒経ったら 任意処理を行いたいのですが、上手くいきません。 下記のムービークリップスクリプトで説明すると、 この状態ではtraceで(゚∀゚)しか表示されません。 ちなみに、ムービー自体はgotoAndStop(_currentFrame-1)で ループ構造にしてあります。 on (press) { pressTime = getTimer(); trace("(゚∀゚)"); } on (enterFrame) { trace("(´・ω・`)"); overTime = 3000; if (getTimer()>pressTime + overTime) { trace("(・∀・)"); } }
>>894 gotoAndStop ではループ構造にならないのでは?
gotoAndPlay だと思うよ。
on (enterFrame) というのも
onClipEvent(enterFrame) のことだと思うよ。
>>894 それだとplayer6で書き出したら何もしなくても3秒後に(・∀・)になっちゃうよ。
原型とどめてないけどこんなんでどう?
//MCのインスタンス名 : my_mc
this.stop();
overTime = 3000;
my_mc.onPress = function() {
id = setInterval(EnterFrame, overTime);
trace("(゚∀゚)");
};
my_mc.onRelease = my_mc.onReleaseOutside=function () {
trace("(´・ω・`)");
clearInterval(id);
};
function EnterFrame() {
trace("(・∀・)");
clearInterval(_root.id);
}
setInterval使うならマウス押した時点でタイマースタート、 離された時点でクリアでいんじゃないかな。 当然呼ばれるfunctionでクリアして。 EnterFrameとsetIntervalは別に考えた方が良いと思うぞ。
898 :
896 :2006/02/17(金) 00:26:40 ID:A8k4RK9m
>>897 >setInterval使うならマウス押した時点でタイマースタート、
>離された時点でクリアでいんじゃないかな。
どういうこと?そうなってると思うけど・・・(´・ω・`)
いや、なんでEnterFrameで毎度毎度クリアしてるのかなと。 そこがわからんのでし。
901 :
896 :2006/02/17(金) 00:37:06 ID:A8k4RK9m
>>899 EnterFrameはfunctionの名前であってonEnterFrameではないよ。
紛らわしくてごめん。
おお、わかった、悪かった。 ぱっと見だけで判断したからか、でも、EnterFrameって名前の関数ってのはつらいっす。
>>895 ぐわすいません、ミスってStopとタイプしてました。実際のスクリプトではちゃんとなってます。
後、↓も直しました。そしたら
>>896 の通りになりましたが…ぁぅぅ
>>896 ありがとうございます、動きました。
setIntervalって関数を知らなかったので、勉強になりました。
904 :
903 :2006/02/17(金) 00:57:31 ID:OjS3mlPz
>>896 あ、でもひとつだけわからん事があります。
>trace("(・∀・)");
>clearInterval(_root.id);
下のclearInterval()の引数はどうしてidじゃなくて_rootを指定してるんでしょうか。
外してみてやったんだけど、あんまり違いがわからなくて。
905 :
881 :2006/02/17(金) 02:07:01 ID:JlodP5yq
>>882 〜886,888〜893
色々なアドバイス、感謝します。ただ今、レスをプリントアウトし読んでいます。
最終目標はFlashによる電卓の実現で、885,886さんの言う通り、式の優先順位
が問題になってました。
なお最初の質問文中に若干誤りがあります。遅くなりましたが訂正します。
_root.calcD[idx1] → calcD[i]
893さんの方法を試してみます。では、おやすみなさい。
質問させて頂きます。 WindowコンポーネントのPopUpManager.createPopUp()で小さなwindowを表示ものを色々なサイトを参考に作ってみました。 この小windowがマウスでドラッグしながら動かせてしまうのですが、どうすれば動かない様にできるでしょうか? 色々ぐぐってみましたが、なかなかコレダと思うのがヒットしません。 よろしくお願いします><
908 :
Now_loading...774KB :2006/02/17(金) 19:43:43 ID:iIZrqmPL
getURL("javascript:xxx()"); を使ってjavascriptの処理を呼んでるのですが getURLのせいかIEで実行すると 「カチッ」とページ遷移するときの音がしてしまいます。 この音がしないようにはできないですか?
できません
910 :
908 :2006/02/17(金) 20:32:15 ID:iIZrqmPL
>>909 ありがとうございます。
javascriptと連携するのに
getURL以外の方法はなにかあるのでしょうか?
古いブラウザは無視する前提で
IE6、Firefox1.5、Netscape7、Safari
で動くようにしたいです。
ExternalInterface.callかな
912 :
896 :2006/02/17(金) 23:10:04 ID:A8k4RK9m
914 :
881&905 :2006/02/18(土) 00:47:22 ID:R/9oMnjI
Q) 文字列の記号を演算子に変換 -2 (Flash電卓)
893さんの getURL("javascript:void(alert("+calcD.join("")+"))"); を改造し、
http://www.uploda.org/uporg315495.swf の「Enter,=」ボタンに
on (release) {
_root.calcD[_root.idx] = _root.subDisp;
trace("calcD= "+_root.calcD[_root.idx]);
trace("idx= "+_root.idx);
_root.subDisp = "";
_root.subDisp = _root.getURL("javascript:void(alert("+_root.calcD.join("")+"))");
}
と書きました。このswfを起動し、123+2×10 を打ち込み「Enter,=」ボタンを
押すと、
http://vista.x0.to/img/vi27548.gif http://vista.x0.to/img/vi27544.gif となり一応 143 という値は得られますが、swfの方は、答えの欄(小さい方の
テキストフィールド:_root.subDisp )はundefinedになります。
答えの欄(_root.subDisp)に値を出すにはどうしたらいいでしょうか?
あと
http://vista.x0.to/img/vi27544.gif はテスト段階で出る分には構わ
ないのですが、答えの欄が正常に表示できるようになったらこれは不要に
なるます。
vi27544.gifはJavaScriptを使う以上は必ず出るのでしょうか?
以上、宜しくお願い致します。
915 :
Now_loading...774KB :2006/02/18(土) 01:46:53 ID:ihKSmLym
初心者です。質問します。 まず、1〜7までのボタンを用意しました。 MCを7個、用意して1〜7のボタンにそれぞれ割り当てました。 例えば、1を押すとこのMC、2を押すとこのMCと言う具合に。 作りたい動作は、例えば、 1のボタンが押されたら左から1のMCが現れて、中央で止まる様にして、 4のボタン(5でも6でも同じ)が押されたら1のMCが右に逃げて、 4のMCが、左から現れて中央に止まるようにしたいです。 いったいどうすれば良いのですか? スペックは、 FLASH MX2004 / WindowsXP です。 よろしくお願いします。
916 :
Now_loading...774KB :2006/02/18(土) 02:24:27 ID:tQJ6/ynk
インベーダの敵の動きを質問したとき 以下のようなソースをいただいたのですが、 id = setInterval(Move, 1000); function Move() { rnd_num = Math.random()*10; if (rnd_num<8) { x_num = 10; } else { x_num = -10; } enemy_mc._x += x_num; } この中の、idという変数らしきものは なんなんでしょうか?
>>914 >vi27544.gifはJavaScriptを使う以上は必ず出るのでしょうか?
それはalert使ってるから。getURLには戻り値はない。
なのでHTMLを介して取得することになると思う。
//
var calcD = new Array();
calcD[0] = 20;
calcD[1] = "+";
calcD[2] = 4;
_root.getURL("javascript:CalFla.setVariable('_root.ret_txt', "+_root.calcD.join("")+");");
//
※_root.ret_txt : 結果を表示するダイナミックテキストの変数名
※CalFla : HTML内でFlashを貼ってるObjectタグのidとembedタグのname部分の名前。
でも、コレだとHTMLに貼ってあるswfでないと動作しないし、
Player8だとセキュリティに弾かれて実行できないよ。
>>915 MCが左から現れて中央で止まるとこだけ。
ステージ上にMC1とButton1を用意
//
_root.Button1.onRelease = function() {
MC1.onEnterFrame = function() {
if (MC1._x>=(Stage.width/2)) {
this.onEnterFrame = undefined;
} else {
MC1._x += 10;
}
};
};
//
>>916 setInterval は指定した間隔で関数を実行するというもの。
その場合だと1000ミリ秒間隔でMove関数が実行される。
その実行を止めたいときに
clearInterval(id)
としてsetIntervalを取り消すことが出来る。
どのsetIntervalを止めるかの識別用の整数。
ちなみにidは変数なので別にidという名前にする必要はない。
919 :
915 :2006/02/18(土) 03:12:27 ID:ihKSmLym
>>918 早速レスありがとうございました。
前のMCが逃げて、新しいMCが現れる動作だと、
”逃げるMC”は、不特定なので、
FLASHでは、作れませんか?
920 :
Now_loading...774KB :2006/02/18(土) 03:18:51 ID:tQJ6/ynk
>>918 わかりやすい説明ありがとうございます。
>>919 無理ではないよ。
出て来るMC以外のMC(逃げるMC)を取得
出て来るMCの座標取得して、逃げる側のMCの座標と比較。
その比較結果で逃げるMCを動かせばいいんでない。
//ルートの中心あたりに適当にMCを配置
//インスタンス名は付けない。
//あとはさっきと同じ
_root.Button1.onRelease = function() {
MC1.onEnterFrame = function() {
if (MC1._x>=(Stage.width/2)) {
this.onEnterFrame = undefined;
} else {
MC1._x += 10;
for (nige in _root) {
m = eval(nige);
if (typeof (m) == "movieclip" && m._name<>"MC1") {
dis = m._x-this._x;
m._x += 5;
}
}
}
};
};
不特定MCっていってるけど前回でてきたMCだよね?
だったらそのMCを変数とかに入れておけばfor in は使う必要ない。
923 :
922 :2006/02/18(土) 04:18:32 ID:eYpEuaRD
>>919 >>922 の3行目あたり、座標を比較どーこーってのはASに書いてなかったわ。
>>921 >Player8だとセキュリティに弾かれて実行できないよ。
紛らわしいいい方したけど、必ずしも弾かれるわけではないよ。
弾かない設定にしてる人もいると思う。
ただ、私はデフォルトで弾きモードになってた。
注意書きしとけばいいんでない?もしくはJavaScriptで作るとか。
>>923 注意書きしとけばいいんでない?
そうします。
外部テキストファイルを丸ごと文字列として読み込む方法ってあるんでしょうか?
>>926 xml読み込みでテキストファイルを読みこむ。
>>926 目から鱗が落ちました。
こんなに大きな鱗は初めてです。
ありがとうございました。
早速躓きました。 外部ファイル中に <> が入るとそれ以降がエラーとなり、読み込まれないようです。 これは外部ファイル側を調整するほか無いのでしょうか・・・。
丸投げしまくりだなコイツ
931 :
Now_loading...774KB :2006/02/18(土) 12:01:56 ID:cRULjz1a
クイズ南無千REMIXのやつはどういう仕組みなんですかね? と、既出か?と思っていながらも聞いてみる。
>>931 とりあえずフルFlashでなんでもいいからサイトを作ってみろ。
>>933 うまくいきました!ありがとうございます!
お礼にゴマを三粒郵送しておきます。
質問です 環境はWinXP,Flash8です マウスの方向にゆっくり旋回するmcを作ろうと 下記のスクリプトを作成したのですが、変数degが -180度から180度に変化する瞬間にmcがくりっと逆方向に 回転してしまいます これを回避する良い方法があったらご教授ください this.onEnterFrame = function() { xdis = _root._xmouse - this._x; ydis = _root._ymouse - this._y; rad = Math.atan2(ydis, xdis); deg = rad / (Math.PI / 180); def = Math.floor(deg - _rotation); _rotation += def / 5; updateAfterEvent(); }; 以上よろしくお願いいたします
えーとだな。 たとえば、180度の状態から、185度に向かおうとしたら、 atan2では-175度に向かおうとすることになるから、 def = -175 - 180 = -355 となって、くるん、と大きく動いちゃうわけだ。 なので、defの値を-180〜180に制限してしまえばOK。 def = Math.floor(deg - _rotation); の後に、 if (def < -180) def += 360; if (def > 180) def -= 360; と入れればOKのはず。動作確認しとらんのでちょっとミスっとるかも知れんけど、 まあ、後はわかるよな?
938 :
Now_loading...774KB :2006/02/18(土) 16:18:30 ID:O/hcnKDO
939 :
936 :2006/02/18(土) 16:50:53 ID:ILplWgMU
>>937 回答ありがとうございます。おかげで意図した動きになりました
後、上記の回答スクリプトをコピペして自動フォーマットしたら
自動で{}がついたのにもちょっと感動しました
どうもありがとうございました
>>935 つくったから参考にどうぞ。
有難うございます。試してみます。
教えてください MX2004なんですがヘルプが画面を 占領してしまい使いにくいです。 Flashとは別に一般のブラウザなどで 表示させることはできないでしょうか?
942 :
Now_loading...774KB :2006/02/18(土) 18:26:32 ID:gVjiukZ5
ほんとに初心者質問なんですが… ケータイでとったFLASHで、miniSDに保存出来ないものがあります。メール添付やシリアル転送も出来ません。著作権はありません。 どうしたら、保存出来るのでしょうか?
質問です。 テキストフィールドを複数個動的生成するにはどうしたら良いでしょうか?
945 :
941 :2006/02/18(土) 19:17:02 ID:r10UvV7s
>>944 ありがとうございます。
「textFieldを子に持ったMCをシンボルにしてattachする」という方法でやりたいと思います。
もう一つよろしいですか。
ActionScript で数式のパースをしてくれる便利な関数ってありますか?やっぱり自分で一から組まないといけないでしょうか?
数式のパース? アレ? デジャビュか?
丸投げ馬鹿は自分の書き込んだ質問も忘れるのか。驚異的だな。
951 :
Now_loading...774KB :2006/02/19(日) 01:15:41 ID:ky+W6un7
普通に乱数を作ると物凄いスピードでランダムな数字を出して行くので なんとかして、1秒感覚で乱数を動かしたく onClipEvent (enterFrame) { function MyFunc(){ _root.teki.scr = Math.floor(Math.random()*100); updateAfterEvent(); } という風な感じで書いてみたんですが うまく一秒感覚で乱数が動いてくれません。 どうすれば一秒間隔で乱数が作動してくれるでしょうか?
とりあえず2つほど。 まずわかりやすいのが、1秒たつまで自前で数えるやり方。 var count = 0; onClipEvent(enterFrame){ count++;// 毎フレーム1増やして if (count == 30){// FPS30だとして、30まで数えりゃ1秒たってるよね count = 0; MyFunc();// } } FPSが落ちない限り、もしくは「大体1秒」でさえあれば正確さは問わないなら、 これが初心者にはわかりやすいな。 で、ちゃんとしたつくりとしてオススメなのが、setIntervalを使って、指定間隔で関数を呼び出すやり方。 var id = null; onClipEvent(load){// load時に設定しておく。 id = setInterval(MyFunc,1000);// 1000ms,つまり1秒ごとにMyFuncを呼び出す } これなら正確に1秒ごとに指定関数が呼び出される。
setIntervalを使うとか。 timerID = setInterval(呼び出し関数・命令, 間隔)
数式解析できたよー。逆ポーランド記法はもう紹介されてたんで、 2分木でやてみた。遅いけどね こんなクラス作って、 function node(v) { var _value,_left,_right if (Number(v.toString())) { //数値のケース this._value = Number(v.toString()); } else { //式と思われるケース var _c = ["+", "-", "*", "/"]; for (var i = 0; i<3; i++) { var flg = false; for (var j=0; j<v.length; j++) if (_c[i] == v[j]){flg = true;break}; if (flg)break; } this._left= new node(v.slice(0, j));this._right = new node(v.slice(j+1));this._value = _c[i]; } }
955 :
954 :2006/02/19(日) 11:08:01 ID:MZfyo/zA
こんなメソッド付けて、 node.prototype.getResult=function(){ with(this){ switch(_value){ case "*" : return _left.getResult() * _right.getResult(); case "/" : return _left.getResult() / _right.getResult(); case "+" : return _left.getResult() + _right.getResult(); case "-" : return _left.getResult() - _right.getResult(); default:return _value } } } で、 var _a =[123,"+","2","*",10]; var n = new node(_a) trace(n.getResult()) //143 こんな感じ。 数式としての整合性のチェックや0除算、予期しない値なんかの エラー処理ははしょってるので実用には難アリ。 あくまでも考え方の参考にでもしてね。
( ´_ゝ`)フーン
for(i=0;i<10;i++){ hoge(i); } function hoge(param){ var str[param] = "test"; } こんな感じで、str1, str2 str3・・・と 渡したパラメータの番号をつけてローカル変数を作っていきたいのですが、 うまく動作させることができません。 アドバイスをよろしくお願いします。
いったん二分木を生成してから評価を行うのと、 二分木を使わず再帰処理のみで評価を行うのとでは、 どっちが速いですかね?
質問です。 チャットをフラッシュで組み立てたいと思っていて、 発言表示部分をTextAreaのコンポーネントにしました。 「下」にいくほど発言が新しいです。 dialog.text += hoge + "\r"; (dialogがTextAreaの名前、hogeはCGIから受け取った新着発言) としたんですが、これだとチャットを続けると永久にデータが増え続けてしまいます。 20行くらいいったら古い発言から消去したいんですが、どうすればいいのでしょう・・・? 配列使うんでしょうか。 環境はFlash 8,XPです。お願いします。
>>958 テスト用のswfをアップしたら何人かは実験に協力してくれると思うよ。
>>961 ありがとうございます。さっそく試してみます。
>>957 function hoge(param) {
str[param] = "test";
}
str = new Array(); //配列の作成
for (i = 0; i < 10; i++) {
hoge(i);
}
functionは呼び出す前に定義する事
varじゃなくて、その前に配列を作成しないと値が入らないよ
ごめん配列じゃなくてローカル変数だったね function hoge(param) { this["str" + param] = "test"; } for (i = 0; i < 10; i++) { hoge(i); }
同一フレームなら for (i = 0; i < 10; i++) { hoge(i); } function hoge(param) { this["str" + param] = "test"; } の順番でもおk
this[...]じゃ、全然ローカル変数ちゃうがな。
>>964 ありがとうございます。
ですが、いただいたスクリプトをパブリッシュしようとするとエラーがでてしまいます・・
**エラー** シーン = シーン 1, レイヤー = レイヤー 1, フレーム = 1 :行 2:シンタックスエラー
this["str" + param] = "test";
**エラー** シーン = シーン 1, レイヤー = レイヤー 1, フレーム = 1 :行 3:予期しない '}' があります。
}
ActionScript エラー数 :2 報告済みエラー :2
どのように処理すればいいのでしょうか
>>967 あーそりゃ964の書き方が悪いんだわ。
全角スペースでインデントされてるんよ。
>>967 タイムライン変数で良いなら関数なんて無理に使わんでも
for(i=0;i<10;i++){this["str"+i] = "test";}
で、良いんじゃないの?
>>969 つか、Flash単体で動かないって、、、Flash電卓じゃないじゃん
>>967 Flashでは配列はローカルじゃないよ。
どういう用途でとか書いてくれれば、みんなよくわかると思うし、
解決策たくさん出てくると思う。
配列だったらこの形でローカル変数になるしょ unko(); function unko(){ var arr = new Array(); for(i=0;i<10;i++){arr[i]="test";} trace(arr);} trace(arr);
うん。言いたかったのはstr1,str2という変数を作り出す必要があるの?てことなんだ。
>>971 つか、Flash単体で動かないって、、、Flash電卓じゃないじゃん
あー、それは突っ込まないで下さいw
975 :
Now_loading...774KB :2006/02/21(火) 00:30:24 ID:xwKgGxnD
ソフト=FlashMX2004,OS=Win98SE Q) テキストフィールドの書式を変更 テキストフィールド(変数名:disp)の書式を、初めは、「MSPゴシック・黒色・標準」 としておき、後で「Times New Roman・青色・斜体」に変更するため、ボタンアクション として on (press) { _root.disp.font = "Times New Roman"; _root.disp.color = 0x0000FF; _root.disp.italic = true; _root.disp = _root.disp+"Y = "; } を書きました。「Y = 」以降を青色にしたいのですが、何も変化が現れません。 間違いのご指摘を願います。
>>975 テキストフィールドにcolorとかfontっていうプロパティはないよ。
それをやるならTextFormatクラス。
部分的に色を変えたいならTextField.html=trueにして、TextField.htmlTextにHTMLを書く。
[TextField] はテキストフィールドのインスタンス名ね。変数名じゃないよ。
977 :
975 :2006/02/21(火) 01:43:57 ID:i4Vni9Lo
>>976 どうも。
TextFormatクラスですね。「ActionScriptポケットリファレンス」(馬場ぎんが 著)
を見ていたのですが、「Flash ActionScript 逆引き大全550」(ITフロンティア)
のp218以降に例が書いてありました。
本を読みながらやってみます。
978 :
975 :2006/02/21(火) 02:45:03 ID:7kY+TiAz
Q) テキストフィールドの書式を変更 -2 すみません。976さんと「逆引き大全550」を参考に、dispInsをテキスト フィールドのインスタンス名として on (press) { disp_ins = new TextFormat(); disp_ins.font = "Times New Roman"; disp_ins.color = 0x0000ff; disp_ins.italic = true; _root.dispIns.setTextFormat(disp_ins); _root.disp = _root.disp+"Y = "; } としましたが、変化がまだ現れません。ご指摘ねがいます。
>>978 答えを一発で教えてやることも出来るが、あえて教えてあげない。
理解が不十分な関数やクラスが出てきたなと感じたら、
ヘルプで基礎的な知識を、そしてGoogleでノウハウを会得すべし。
>>979 ヘルプやGoogleを見ましたが、よく分かりませんでした。とりあえず、
_root.disp = _root.disp+"Y = "; をon (press)処理の先頭に置いたと
ころ、希望する書式になりました。
ただし、Y = の後に文字を入れると、元の書式に戻りました。これを改善する
ため、_rootのフレームアクションでonEnterFrame内に書いたところ、入力
の際一瞬元に戻りますが、希望する書式になります。
※setNewTextFormat()は未だ試していません。
一応解決しましたが、皆さんの解決法とは違いますでしょうか?
わかってるんじゃね?
984 :
Now_loading...774KB :2006/02/21(火) 18:48:58 ID:kQEdNlaS
開発ソフトは、FlashMX2004です。 ステージ上のMC(XY)に点のMCを並べて曲線を描こうとしています。ここでは、 最初の例として直線を目標にしています。 下の通り、リンケージ設定したMC(markA)をattachMovie()により、XY座標に 並べたいのですが、うまくいきません。 mId = 0; //カウント用ID x0 = -(_root.XY._width/2)+1; //XYの左端 xX = x0; として、 on (release) { function makeMark() { mId++; trace("mId= "+mId); newMark = "markA"+mId; prop = {_x:xX+x0, _y:2*Math.pow(xX+x0, 1)}; //実質 y=2x の線 _root.XY.grobalToLocal(prop); _root.XY.attachMovie("markA", newMark, mId, prop); } _root.XY.onEnterFrame = function() { xX = xX+0.5; //X座標を0.5づつ増加 trace("marking"); _root.makeMark(); }; } onEnterFrameが動作しているかどうかの判定である trace("marking") は 実行されているのですが、trace("mId= "+mId) での mId は表示されませ んし、点のMC("markA"+mId)も出ません。 どうしたらいいでしょうか?
>>982 frame per secondだと思うのですが、違うのかな。
982は頭の不自由な子だから気にしないで
国際電話と市外通話を一緒のレスポンスでというのは無理でしょ。
>>984 なんか書式が気持ち悪い。
便所に寝室が入ってる感じ
答えじゃなくてごめんね、ごめんね。
SA Playerは高速道路、ブラウザ再生は一般道路みたいなもんだと思っとくといいかも。 それと、いくら「東大合格!」と目標をかかげても無理な奴は無理なように PCの能力をこえるFPSを設定しても出ないものは出ない。 目標を下げる、つまりFPSを低めにするか描画内容を単純化するしかない。
>>991 SAプレイヤーとプラグインプレイヤーは全然処理速度が違うんですか。
知らなかった・・
勉強になりましたm(_ _)m
993 :
Now_loading...774KB :2006/02/21(火) 21:56:29 ID:mGaivqJn
処理速度の差はあるが、 IEのソレはswfの処理の重さに関係なく、 本来の実行速度が出ないってバグだよ。
じゃ立てます。 少々お待ちを。
無理だったヽ(`Д´)ノウワァァン
997 :
Now_loading...774KB :2006/02/22(水) 01:52:13 ID:ghjdGLxd
じゃあ。俺が。
ダメだった。ゴメンな。↓頼んだ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。