ActionScript 誰かが物凄い勢いで解答するスレ 11
1 :
Now_loading...774KB :
2006/02/22(水) 02:54:34 ID:oA6EbtOg
var id = setInterval(function(){
trace("
>>1 乙");
},100);
XP,MX2004。 ムービークリップ上に function Stop() { // いろいろ } と作ってStop(); と呼び出しても何もおきない。 デバッガでStop()内部に入っていけないのでなんじゃこりゃと思って、 名前をHogeに変えてみたら、予定通り動いた。 Stopって、予約された関数名かなにか?
予約語というものを知ってるくせになぜ自分で調べないのか。
7 :
3 :2006/02/22(水) 14:53:20 ID:uwboCuD9
>>4 >予約語ではないが、ActionScript コードで識別子 (変数またはインスタンス名) としては使用してはならない単語がいくつかあります。
イマイチすっきりしないけど、これに引っかかってる……ってことなんだろうなあ。
>>5 いや、ごめん。
確かになにやってんだ俺、と思ったので、「Flash Stop 予約語」でググって見た。
でも「Stop」と「予約語」を結びつける決定的な情報サイトはみつからなかったよ。
log1=hogeA &log2=hogeB &log3=hogeC ・・・ &log50=hogeXXX という感じの外部テキストをLoadVarsを使って読み込ませたときに logが50個ある、という情報を引き出すにはどうすれば良いのでしょうか。 よろしくお願いします。
>8 なんの工夫もないですけど。 i=2; while(this["log"+i] != null){ i++;} logMax = i-1;
↑わり、細かい所は直してw
>>9 whileを使えばいいんですね。
ありがとうございました。
12 :
Now_loading...774KB :2006/02/22(水) 17:21:40 ID:2wjh/sww
使うな
>>12 となると、何を使うのがいいのでしょうか?
14 :
Now_loading...774KB :2006/02/22(水) 19:33:07 ID:if1qXJq4
リビア国家のフラッシュが見たいのですが
>>12 i=1;
while(this["log"+i] != undefined ) {
i++;
}
logMax = i ;
でいいんじゃない?
どうしてもうまくいかないので、質問させてください。 FlashMX2004 WIN XP の環境です。 フラッシュボタンのリンク先を新しいwindow(openwindow)で開く場合、 ただ単に新しい窓で開くときは、 アクションスクリプトに on (press) { getURL("URL名", "_blank"); } でうまくいきますが、 javascriptで、幅、長さを指定して新しい窓を開く場合、 (仮に幅600、長さ400ピクセル、スクロールバーあり、リサイズハンドルあり) で開きたい場合。 on(press){ getURL("javascript:openWindow('URL名','toolbars=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=600,height=400')"); } と調べて記述してみたのですが(パブリッシュしてもエラーはでません) うまくいきません。 どうしたらいいでしょうか?
ウィンドウは開くの?開かないの?
質問です。 onClipEvent(enterFrame)で繰り返させている処理を中止して 呼び出されないようにしたいのですが、 そのmcごと消す以外になにか方法はないでしょうか?
>>13 だからxml使えと。と、言うだけではなんなので、サンプル。
xmlからテキスト読み込んでそれを配列に格納する。
/////////xml read///////////
var qatxt:Array = new Array();
var qaxmlUrl:String = "chapter.xml";
qa_xml = new XML();
qa_xml.ignoreWhite = true;
qa_xml.load(qaxmlUrl);
qa_xml.onLoad = pooltext;
function pooltext(s) {
if (s) {
qaNode=qa_xml.firstChild;
for (var aNode:XMLNode = qaNode.firstChild,i=0; aNode != null; aNode=aNode.nextSibling,i++) {
qatxt[i]=aNode.firstChild.nodeValue;
trace(aNode.firstChild.nodeValue);
}
for(var i=0;i<qatxt.length;i++){
trace(i+")"+qatxt[i]);
}
}else{
throw new Error("xml read err:cannot find xmlfile or also Retry or Wait routine need.");
trace("xml read err");
}
}
XMLファイルはこんなので。 ファイル名chapter.xmlで同じフォルダに置いてね。 <?xml version="1.0" encoding="UTF-8"?> <ChapterText> <Chterm ch="00">NHK総合</Chterm> <Chterm ch="01">NHK教育</Chterm> <Chterm ch="02">日本テレビ</Chterm> <Chterm ch="03">東京放送</Chterm> <Chterm ch="04">フジテレビ</Chterm> <Chterm ch="05">テレビ朝日</Chterm> <Chterm ch="06">テレビ東京</Chterm> <Chterm ch="07">テレビ神奈川</Chterm> </ChapterText>
23 :
17 :2006/02/23(木) 04:42:22 ID:bnoo1aI7
window開いてきません。
>>23 そもそもfunction openWindowは定義されてるの?
>>21 遠回りな上に外部データの書式を簡単に変更できるとは限らない
>>13 whileでも正しく動くのならかまわないと思うけど、for...inステートメントでチェックしてもいい
そうすれば"log"の後ろの番号が飛び飛びであっても全てカウントできる
var my_lv = new LoadVars();
my_lv.onLoad = function(success) {
if (success) {
var count = 0;
for (var i in this) {
if (i.indexOf("log") == 0) { ++count;}
}
trace(count);
} else {
trace("Error loading/parsing LoadVars.");
}
};
my_lv.load("params.txt");
変数名には関係なく個数をチェックしたいだけなら、上記の場合
my_lv には他にonLoad関数しか格納されていないのは明らかなので
無条件にカウントしてそこから1引くだけでもいい。
後のことを考えて typeof でチェックしてもいいかな
>>19 onClipEvent (load) {
var i = 0;
onEnterFrame = function () {
i++;
trace(i);
};
onMouseDown = function () {
delete onEnterFrame;
};
}
onClipEvent(enterFrame)は使わずに関数としてonEnterFrameを作成すればOK
マウスクリックでonEnterFrame処理を削除
こんな感じでどうでしょう?
>>25 そうかな。でも、言ってみれば結構変わるもんだよ。だれだってめんどくさいことやりたくないしね。
マウスをクリックした時に、どのmcをクリックしたか知る方法ってありますか? xxxの部分にクリックしたmc名を出したいです。 できればmc側には何も書かないほうがあるといいのですが。 var mouseListener:Object = new Object(); mouseListener.onMouseDown = function() { trace("押したのはxxxです");} Mouse.addListener(mouseListener); flash8です。よろしくお願いします。
>>25 xmlは論外として、onLoadでもう1回走査するのは気持ち悪いかなあ。
いっそonDataで自前parseしちゃった方が良くない?
var my_lv = new LoadVars();
my_lv.onData = function(source) {
var data=source.split("&");
for(var i=0,_count=0;i<data.length;i++){
var o= data[i].split("=")
this[o[0]]=o[1]
if(o[0].substring(0,3)=="log")_count++
}
this._count = _count
trace("log○○の個数は、" + this._count +"です")
}
my_lv.load("params.txt");
みたいな。再利用を考えて、とりあえずmy_lvのプロパティ_countに入れておくとかもできるし。
でも、
>>13 の意図したとおりに動くならwhileが一番だってのは同意。
MC側に何も書かずにそのイベントを、というのは、すごく大変と思う。 すべてのMCの位置と深度を把握しないといけないし。 そこら辺を軽減してるのがFlashの仕事だと思ってる。
>>28 ひとつの関数を作って、それをクリックを感知したいMCのonPress
に指定しておいて、thisで判断するのが簡単かな?ハンドカーソルになるけどね。
「hoge1,hoge2,hoge3」という3つのMCだったら
function onClickMC() {
trace("押したのは" + this + "です");
this._x+=30
}
//ここから登録部分
hoge1.onPress=onClickMC
hoge2.onPress=onClickMC
hoge3.onPress=onClickMC
とか?
>>29 確かに
>>13 の意図での回答だとだとwhileで充分いいとおも:-)
でも、例えば、単体FlashアプリQandAのクイズとかで、問題と解答をユーザーに自由に
作ってね、なんていうのだったらflaを提供しなくて済むし(つまりリコンパイルいらん)だから、ちょー便利。
配列に入れるのは解りやすくするためで、XML読み込んだのをそのまま使ってもいいとおも。
それこそ、そのパースするのがやなので。。。ってことね。
33 :
改行が多いので分けて書きます(1/3) :2006/02/23(木) 15:56:33 ID:aM9fPhVg
すみません、ちょっとお知恵を拝借させて下さい。 以下のスクリプト(既存のものに若干手を加えてます)で画像MCを拡大&ドラッグ操作を させているのですが、その拡大とドラッグ移動の範囲を制限したいのですが、 どのあたりに命令を追加、または修正を行えばいいのでしょうか。 自分でもif文などを入れて試してみたのですが、まだスクリプトのなんたるかが 理解出来ていなくて、つまづいてます。。。
34 :
改行が多いので分けて書きます(2/3) :2006/02/23(木) 15:57:05 ID:aM9fPhVg
var nZoomRate = 30; this.onPress = function() { var nX = _xmouse; var nY = _ymouse; if (Key.isDown(Key.SHIFT)) { this.xZoomIn(nX, nY); } else { this.startDrag(); } }; this.onRelease = this.onReleaseOutside=function () { this.stopDrag(); }; function xZoomIn(nX, nY) { this.xZoom(nZoomRate, nX, nY); } function xZoom(nZoom, nX, nY) { var oStart = {x:nX, y:nY}; this.localToGlobal(oStart); _xscale = _yscale += nZoom; var oEnd = {x:nX, y:nY}; this.localToGlobal(oEnd); _x += oStart.x-oEnd.x; _y += oStart.y-oEnd.y; }
35 :
改行が多いので分けて書きます(3/3) :2006/02/23(木) 15:57:44 ID:aM9fPhVg
尚、これを元に、ムービーサイズが700x600で、起点からの座標がx=32、y=60に635x450の 表示エリアを設定しておりますので、この635x450の範囲からはみ出さないようにドラッグできて、 なおかつ拡大は3倍まで、縮小は最初の表示サイズまでに押さえたいのです。。。 画像のサイズは1350x954ピクセルで、始めは小さく(1/3サイズ)に縮めて置いてあります。 お伝えできる状況は以上なのですが、いかがでしょうか。※FlashMX、又はMX2004です。
flaアップしてくれればいいかも。
>>26 なるほどー。作っておいてdeleteで消すんですね。ありがとうございました。
>>33 >ドラッグ移動の範囲を制限したい
startDrag()に引数を与える
>拡大を制限したい
_xscale、 _yscaleに代入する前にif文で分岐
if (_xscale + nZoomRate > 300) {...} みたいな
39 :
?改行が多い本人 :2006/02/23(木) 16:40:41 ID:aM9fPhVg
>>33 おお、有り難うございます!
ただ、引数の与え方とか、if文をどこへ入れて{...}に何を記述すれば良いのでしょうか?
ほんとーにすみません。まだ分からないところが多くて、もうちょっとお知恵を・・・。
>>39 this.startDrag(false, 32, 60, 667, 510);
って感じかな?
41 :
改行本人 :2006/02/23(木) 20:41:31 ID:aM9fPhVg
>>40 おおお、有り難うございます!
早速試したところ、動く範囲が狭められました!ゴールはもうすぐそこのような・・・♪
多分、中心点を枠から出さない数値を引数としてあてはめてるわけでしょうか。
これに拡大の制限が加わればいけそうなんですけど、拡大し過ぎると動かせる範囲が
狭いだけに見られない部分が発生してしまうので、そちらはどうでしょうか。。。
本当に何度もすみませんが、ご協力を・・・
少しは自分で考えろよ
43 :
? :2006/02/23(木) 22:59:16 ID:aM9fPhVg
すみません・・・。 とりあえず33さんのアイデアを自分で理解したつもりで書いてみたのが if (_xscale + nZoomRate > 300) { _xscale + nZoomRate = 300; } なのですが、これでは動きませんでした。 何か基本的な事が間違っている気がするのですが。。。
…お前ムリ。一から勉強し直せ。 そんな程度の知力じゃ、一から十まで全部聞かないと作れやしない。 一〜十まで聞いて作った作品は、お前の作品じゃない。
>>43 >>44 の言うとおり。出来ないことを一気にやろうとするな。
時間を掛けてスクリプトの意味を理解していくしかないよ。
シンタックスは全部ヘルプに載ってるんだしさ。
それが駄目なら金を払って依頼しろ。
丸投げは協力してもらうとか言うレベルじゃない。
46 :
Now_loading...774KB :2006/02/24(金) 00:20:27 ID:iUjdshiR
おっしゃる通りです。すみません。出直してきます・・・。
まず、自分で考えてなんとかする習慣をつけないと、 いつまで経っても上達しないぞ。 上達すれば壁がなくなるんじゃなくて、 ずっと壁にぶち当たってそれを乗り越えての繰り返しだ。
>>46 あー。見た感じ、かなり基礎的な部分で間違ってる。
「=」の意味とか、基礎的すぎて意外に盲点になってる点は
ネット上では解説されていないので、手ごろな入門書から始めるのをすすめる。
こういうこと聞く奴ってだいたいWEBデザイナーができもしない仕事格安で 請けてきて納期直前にここで聞きまくってるケースが多いから教えてやらない方がいい。
改行本人をあんまり責めるんじゃないっすよ 反省してるんだからさ。 と思ったけど・・・てめぇ、マルチだろ? 返答なしならまだしも、 親身に説明してもらってる癖に2ちゃんできいてんじゃねーよ 教えてくれてる人をバカするにも程があるぞ この業界もうやめろ、ボケ
配列のコピーってどうやればいいでしょうか? arr1=[0,0,0,0] arr2=[1,2,1,2] arr2の内容をarr1にコピーしたいのですが (arr1=[1,2,1,2]にしたい) arr1=arr2.concat() だとなぜか変な配列ができてしまいます。orz (arr1[0][1,2,1,2]ができる・・・)
www.flash-jp.comで同じ質問してやがるし・・
arr1 = arr2
配列くっつけるなら arr3=arr2.concat(arr1)
>>52-53 返事ありがとう。
でも
arr1=arr2は
arr1=arr2.concat() と同じ結果になってしまいます・・・。
配列くっつけるのではなく、arr2の配列をarr1上書きコピーしたいのです。
普通にforとかで回すしかないでしょうか?
バレタカ
調べて見たら原因は別でした・・・ この前で arr2=new Array(arr0); とかやっていました。。。 ここも arr2=arr0でいいのですねorz arr1=arr2でコピーできました。 ありがとう。
59 :
Now_loading...774KB :2006/02/24(金) 04:42:44 ID:YGU8ajha
TextFieldでの、imgタグの使い方について質問させてください。
絵文字のようなものを表示したくて、
txt.html = true;
txt.multiline = true;
txt.htmlText = 'aaa <img src="
http://../hoge.jpg "> bbb';
のようなコードを試してみたのですが、aaaとbbbの間に画像が表示されず
「aaa bbb + 改行 + 画像」のような表示になってしまいました。
「aaa + 画像 + bbb」のような表示にすることはできませんでしょうか?
60 :
Now_loading...774KB :2006/02/24(金) 12:00:10 ID:Ytrs3WB1
環境:WindowsXP、Flash8 Flashから他のアプリケーションを操作したく思い XMLSocket を使おうとしています。 具体的には Flashでボタンがいくつかあるメニュー画面を作り そのボタンを押すと 他のアプリケーション(3Dのviewer)で表示している物の色が変わったり・・・ ということを行おうとしています。 ※ どちらも同じPC上で動作させる ※ 3Dviewer側に コマンドの文字列を送るだけ ヘルプなどを見ながら手探りでテスト的に 以下のようなActionScriptを書いたのですが 接続エラー「trace( "failure" );」になってしまいます。 on (release) { var theSocket:XMLSocket = new XMLSocket( ); theSocket.connect( "localhost", 10000 ); theSocket.onConnect = function( success:Boolean ) { if ( success ) { trace( "success" ); } else { trace( "failure" ); } }; theSocket.close( ); } FlashもActionScriptも初心者なので どなたか改善策をご存知な方いらっしゃいましたら 教えていただけないでしょうか? よろしくおねがいします。
62 :
Now_loading...774KB :2006/02/24(金) 12:48:37 ID:Ytrs3WB1
>>61 サーバー・・・そこらへんもよくわからないのですが
別のものを何かインストールや設定が必要なのでしょうか?
>>59 MXだけど、HTMLテキストフィールドでサポートされてるタグは
<A>、<B>、<FONT>、<FONT>、<FONT>、<I>、<P>、<U>
だけで<img>タグはサポートされていない。
2004や8はどうかしらないけどね。
>>58 厳密に言うと arr1=arr2 はコピーではないので注意。
これは、arr1をarr2に参照させるということを意味し、
あとでarr2の値を変更するとarr1まで変わってしまいます。
値をコピーしたいならfor文を使って中身をコピーするべし。
>>63 8ではimgタグもサポートされました。
>>64 参照しないよ
arr1 = [0, 0, 0, 0];
arr2 = [1, 2, 1, 2];
arr1 = arr2;
arr2 = [3, 3, 3, 3];
trace(arr1);
>>65 それは4行目でarr2の参照先自体を換えてるだけだ。
arr2の値を変更するってのは例えば4行目はこんな風に
arr2[0] = 100;
ヒント:プリミティブ
>>64 for使わんでもこれで良くない?
arr1 = arr2.slice();
arrayA = arrayB.concat() が普通だよ。
参照させるとpushとかを使った時に不具合が出るんですよね。 arr1 = [0, 1, 2, 3]; arr2 = arr1; arr1.push(4); trace(arr1); //0,1,2,3,4 trace(arr2); //0,1,2,3,4 自分はこうやってます。 arr1 = [0, 1, 2, 3]; delete arr2; arr2 = new Array(); arr2 = arr2.concat(arr1); arr1.push(4); trace(arr1); //0,1,2,3,4 trace(arr2); //0,1,2,3
質問しに来たんだった…… 例えば外部ファイルの名前がtext0.txt、text1.txt、text2.txt……と連番で続いていたとして、 最も大きい番号のファイルを読み込んだら(Error opening URLが出たら) 以降は読み込まない、という処理を作りたいのですが、 Error opening URLが出た事を判別するにはどうすればいいんでしょうか?
>>71 MovieClipLoader.onLoadErrorでどうですか?
73 :
71 :2006/02/24(金) 21:53:38 ID:CEW98/AD
すいません、自己解決しました……
>>72 自分はLoadVarsを使ってたんですが、
MovieClipLoaderでもXMLやテキストファイルを読み込めるんですか?
質問です。 SharedObjectを使ってデータを保存するFLASHをつくっているのですが デバッグしてて気づきましたが 同じFLASHをデバッグしてて パブリッシュプレビュー(F12) ムービーのブレビュー(CTRL+ENTER)とでは SharedObjectで保存されるファイル(?)は別ものになってしまうのでしょうか?
>>60 ソケットはキャッチボールのようなもので、Flashが投げたソケットを
3Dviewerが受け取れる状態になっていないと、幾ら投げても繋がらない。
そして、恐らく3DViewerはキャッチボールが出来ないアプリケーションなので、
中間にソケットサーバを置いて、サーバが、3DViewerを操作する構図になると思う。
「ソケットプログラミング」で検索してみるといいかも。
>>74 SharedObjectはファイル保存です。
開発をローカルでチェックしているなら、
C:\Documents and Settings\(ユーザ名)\Application Data\Macromedia\Flash Player\#SharedObjects\(ランダム文字列)\localhost\(ローカルなフォルダ構成)\(開発swfファイル名)\(SharedObjectのローカル名.sol)
に保存されるので、確かめてみてください。
F12とCTRL+ENTERを試してみたけど、同じファイルとしてセーブされてましたよ。
質問です。 テキストフィールドの中に表示されている文章の末端の文字の位置の座標を得る事ってできるでしょうか? RPGとかのメッセージ風にボックスの中にメッセージを送っているのですが (文字列をsliceで1文字ずつ切りながらreplaceSelで送っています) メッセージの途中の文字と文字の間にMCを挟みたいケースが出てきたのです。 どうしたらよいでしょうか?ご教授お願いします。
ASで空テキストを作って表示するようにすればイイんじゃね。 普通は空テキスト作って表示。 MCはさむ場合は空テキスト作って、 そのテキストのサイズ、位置からMCの位置を決めて、 MCのサイズ、位置から次の空テキストの位置を決めて表示 ヒント this.createTextField("message",0,0,0,0,0); message.autosize = "left"; message.text = "test"; trace(message._width);
79 :
Now_loading...774KB :2006/02/25(土) 16:45:36 ID:iOiFvkH/
質問です。 data1=["aaa","bbb","ccc"]; data2=["ddd","eee","fff"]; のような配列があって data_n="data1"; trace(data_n[0]); のような形でdata1[0]の値をとりたいんですが、undefinedになってしまいます。 trace(eval(data_n+"[0]")); とかにしてみたりもしたんですが、ダメなんです。 どうしたらよいでしょうか?どうぞよろしくお願いします。
trace(this[data_n][0]); //or trace(eval(data_n)[0]);
81 :
Now_loading...774KB :2006/02/25(土) 16:58:55 ID:iOiFvkH/
>>80 いけました!!
evalの使い方がおかしかったんですね。
ありがとうございました。助かりましたーー。
82 :
Now_loading...774KB :2006/02/25(土) 20:53:55 ID:5NEdbokb
NetStreamで読み込んだFLVファイルのトータル時間を知りたいのですがどうしたらいいのでしょうか?
String.fromCharCode() っていうメソッドで ASCIIコードから文字に変換できるようですが、 その逆を行いたい場合はどうすればよいのでしょう?
85 :
Name_Not_Found :2006/02/26(日) 02:37:13 ID:BexO1L54
txtファイルを読み込みたいんですが、 on (press) { loadVariables("A.txt",_root); } でtextファイルの方の頭に text= と打てばいいと思うのですが、 読み込んでくれません。
>>85 ヘルプにはこう書いてる
this.createEmptyMovieClip("target_mc", this.getNextHighestDepth());
loadVariables("params.txt", target_mc);
function checkParamsLoaded() {
if (target_mc.done == undefined) {
trace("not yet.");
} else {
trace("finished loading. killing interval.");
trace("-------------");
for (i in target_mc) {
trace(i+":"+target_mc[i]);
}
trace("-------------");
clearInterval(param_interval);
}
}
var param_interval = setInterval(checkParamsLoaded, 100);
// params.txt には次のテキストが含まれている
var1="hello"&var2="goodbye"&done="done"
87 :
Now_loading...774KB :2006/02/27(月) 12:52:07 ID:9LgcUcbx
はじめてまして。 はじめて質問させていただきます。 で、さっそくなんですが質問をば、、、 外部xmlファイルに記述したHTML形式で記述されたテキストを読み込ませているのですが、 Flash8以前(6や7では)ではHTMLレンタリングされていたタグの記述が無効になってしまいます。 以下の例では、<font>指定や<b>指定などことごとく無効になってしまいます。 これはいったいなぜなんでしょうか? できれば今までの資材を利用していきたいのですがなにかFlash8になって 仕様変更があったんでしょうか? xml内に記述しているHTML例 <font color="#FFCC66"><b>INTRODUCTION</b></font><br> <font size="+1">イントロダクション</font> よろしくおねがいします〜。
>>87 特に変更無いけどなあ。
textFieldのhtmlプロパティを変更してないとか?
spPlsX = Math.abs(_root.player._x-this._x); spPlsY = Math.abs(_root.player._y-this._y); this._x += (_root.player._x-this._x)/spPlsX; this._y += (_root.player._y-this._y)/spPlsY; thisが接近すればするほどplayerに速く近づくというコードに したいのですが、上手くいきません。 どうすればいいでしょうか? 教えてください。
87に便乗して質問です。 XML内に<br>などのhtmlタグを記述すると読み込み時にxmlのタグとして認識してしまう みたいでそのタグ以降がうまく認識しなくなるんですが、何か回避策ってありませんか?
>>90 以下のように、CDATAセクションにする。
<![CDATA[〜]]>
92 :
Now_loading...774KB :2006/02/27(月) 16:40:40 ID:9LgcUcbx
>>88 回答ありがとうございます。
htmlプロパティーの方はtrueにしてありました。
結局ごちゃごちゃやってて
xmlのエンコーディングをUTF8から Shift_JISに変更したらなおりました。
理由がわからず、いまいちピンとこないのですが…
<?xml version="1.0" encoding="UTF-8"?>
から
<?xml version="1.0" encoding="Shift_JIS"?>
に変更。
94 :
Now_loading...774KB :2006/02/27(月) 17:59:19 ID:I+YGd7tO
先生教えてください! loadMovieで外部swfを読み込む時 全部読み終わってから 表示させたいのに無理でつ なんで? loadMovie( ***.swf"",_root.hogeMC ); _root.hogeMC._visible=false;//消したいのに消えない loadMovieの前に書いても無理
×loadMovie( ***.swf"",_root.hogeMC ); ○loadMovie( "***.swf",_root.hogeMC );
96 :
94 :2006/02/27(月) 18:16:00 ID:PosqLGVy
自己解決 パスが間違ってたというオチですた 先生ごめん
97 :
Now_loading...774KB :2006/02/27(月) 20:22:57 ID:J9Z5DVUt
すみませんが一つお聞かせください。 あるオブジェクトに onClipEvent (enterFrame) { xm = _parent._xmouse ; ym = _parent._ymouse ; span = Math.sqrt(xm*xm+ym*ym); if (span > 100) { mcScale = 30; } else { mcScale = 30+(span-100)*-70/100; } this._alpha = this._xscale = this._yscale = mcScale; } と記述すると対称のオブジェクトが、カーソルが近づくにつれ不透明度を 増しながらズームしてくる効果を出すことが出来るのですがこの「不透明 度」をコントロールしていると思われる this._alpha = this._xscale = this._yscale = mcScale; の部分を削除すると変化がないばかりか上述した機能が全て動かなくなっ てしまいます。 これをうまく不透明度だけ取り除くためにはどのような記述をすればよい のでしょうか。
this._alpha = this._xscale = this._yscale = mcScale; この行を this._xscale = this._yscale = mcScale; にすればいいよ。
99 :
97 :2006/02/27(月) 20:32:49 ID:J9Z5DVUt
>>98 さん
あっ、冷静になって考えてみるとそう・・・ですね。
滅茶苦茶早い返答ありがとうございました。
本当に助かりました。
100 :
Now_loading...774KB :2006/02/28(火) 17:15:10 ID:f7PyXBph
質問させてください。flash8、win2000です。 外部のflvをロードするflaを作りました。ロードするflvはflaから見て"mov/xxxxx.flv"のような位置です。 swfに書き出すとうまく見られるのですが、プロジェクタに書き出すとどうもダメです。 色々試した結果、「マイドキュメント」などのように階層名に日本語が含まれるとロードされません。 このような場合の対処はどなたかご存じないですか?
>>100 MX2004 XPだけど、exeで書き出してもデスクトップにあるflv読み込めたよ(絶対パス)。
っていうか相対パスで指定してるなら日本語名はいらないようにすればいいんじゃない?
102 :
100 :2006/02/28(火) 23:49:04 ID:Mj21fwMj
>>101 レスありがとうございます。ちょい調べた限りではMX2004のexeは大丈夫っぽいんですよねぇ。
もうちょっと調べて見ようと思います。
103 :
Now_loading...774KB :2006/02/28(火) 23:56:29 ID:sWeEDq51
++☆☆☆☆☆☆☆☆☆☆☆☆☆幸せのレス☆☆☆☆☆☆☆☆☆☆☆☆☆☆+++ これを見れた方は運がイイですw 絶対幸せになりたい!という方はこの文章を3つのスレに書き込んでください。 そうすると、7日後、貴方は好きな人に告白されるでしょう
104 :
Now_loading...774KB :2006/03/01(水) 00:14:32 ID:Qug15lSb
onMetaDataの入っていないflvでサイズや時間を得ることはできないのでしょうか?
105 :
Now_loading...774KB :2006/03/01(水) 19:14:37 ID:iy96M+96
スロットゲームのような感じで、ボタンを押すとリールが止まるFLASHを作成しました。 リールの回転する速度を、プレイヤーが遅くしたり早くしたり調節できるようにするには、どうすれば良いのでしょうか? リールMCのみのフレームレートを変化させるには、どうすればよいのでしょう?といった感じかもしれません。
>>105 フレームレートは変更できないのでsetIntervalで回転させるとか
>>105 フレームレートをMC毎に変更する方法は知らんけど
MCでスロットが動いてる描写をしてるとしたら
gotoAndPlay(_currentframe+変数);
の形で動かせば自由に回転速度変えられると思う。
無限ループっぽくなる様に一枚絵をASで制御してるなら
フレーム毎に動かす量 を変更出来るようにすればおk
108 :
Now_loading...774KB :2006/03/01(水) 20:12:16 ID:iy96M+96
>107氏 なるほど! ありがとうございました。
IntervalId = setInterval(MC名, "onEnterFrame", 1000/フレームレート) 自己責任でドーゾ
どうでもいいのだが for( var i in a ){ //a[i]に対する処理 } よりも n=a.length; for(var i=0; i<n; i++){ //a[i]に対する処理 } にしたほうが倍以上速かった。 それだけ言いたかった。すまん。
なんか特定のところでtrace文を入れて ムービープレビューすると必ずFLASHごと落ちてしまう・・・ こういうのってよくあることですか?
113 :
Now_loading...774KB :2006/03/02(木) 20:35:31 ID:1KYQB99I
114 :
Now_loading...774KB :2006/03/02(木) 20:51:12 ID:V3/vS/v8
ムービクリップがあり、内容は、フレームアニメーション(連番)です。 この画像に対して、マウス操作で反応するスクリプトを1フレーム目に 書いています。利便性を考えて、画像(連番)を、簡単に差し替えたいと思ってます。 Windowsのフォルダから指定して、パブリッシュせずに、外部参照でFlashの 内容を差しかえることは可能でしょうか? フォルダ指定が無理であるならば、 フォルダの見ている先のコンテンツのみ、ファイル名おなじで、差し替えて 動作させることは可能でしょうか?よろしくおねがいします。
>>114 連番画像(アニメーションする)の場合は別のswfにしておいて
それを差し替えする感じで、loadする形が良いんじゃないかな。
利便性ってのがよくわからんけど。
116 :
Now_loading...774KB :2006/03/02(木) 21:07:07 ID:V3/vS/v8
115さん。回答ありがとございます。 loadmovieで、差しかえる方法は試したんですが、 フレームで書いているアクションがうまく、外部読み込み(loadmovie) の場合は連動しないみたいなんですよね。あくまで、内部にある連番のみ にしか反応しないようです。。なにか方法はあるのでしょうか? 利便性はわかりづらかったですね。要は、エンドユーザに提供する場合に、 別の素材にすぐ差し替えたいという欲求があるかなと思いまして。 よろしくおねがいします。
>>116 _rockrootあたりを調べると良いかも。
メインとなるswfをいじりたくないなら、swfのファイル名を外部ファイルから読み込む
なんてのもあるよ。
118 :
Now_loading...774KB :2006/03/02(木) 21:15:26 ID:V3/vS/v8
_rockroot> しらべてみます。 >swfのファイル名を外部ファイルから読み込む なんてのもあるよ。 上記の内容が勉強不足で意味がわからないのですが、 もうすこし詳しく教えて頂けないでしょうか?
119 :
Now_loading...774KB :2006/03/02(木) 21:21:30 ID:V3/vS/v8
_rockrootもヘルプなり、書籍、グーグルでも調べてみたんですが、 それらしきものは見当たらなかったんですが、これは、何に利用するもの なのでしょうか?
>>118 メインのswfは、テキストファイル(ファイル名とかコンフィグ情報とか)からファイル名を得て
それを使う。テキストファイルはユーザーなりがいくらでも変更できるし、
メインswfは変更しなくていいじゃん。
あ、ごめんlockrootだった。山ほど出るぞw
123 :
Now_loading...774KB :2006/03/02(木) 21:32:28 ID:V3/vS/v8
120>ということは、 空のSWF(ファイル読み込み)←メインのSWF←コンテンツ差し変えSWF という構成でいいんでしょうか? lockrootは調べてみますね。
>>123 メインのswfがすべてを司る感じにしないと。。。Mediatorパターンみたいな。
126 :
Now_loading...774KB :2006/03/02(木) 22:22:15 ID:V3/vS/v8
メインのSWFに以下のようにして、ムービを読み込みました。 load._lockroot=true; load.loadMovie("aaaa.swf"); ※aaaa.swfは、垂れ流しのムービです。 メインのSWFは、以下のようなアクションをスクリプトで制御しています。 var a = new Object(); a.onMouseDown = function () { x = _root._xmouse / 4; y = _root._ymouse / 4; }; loadインスタンスの下に、直接、ムービをフレームとしておいている場合は 機能するんですが、外部から、上のようにlockrootを指定したとしても 動作しないようです。 マウスの場所によって、画像が動くような、よくあるやつをギミックとして 使っているのです。 上のような理由により、画像を差しかえる目的が重要なのです。 なので、読みこむ先にギミックを設けてしまうと、それが機能として 使われるので、求めている利便性がなくなってしまうんです。 あくまで、ユーザの行為は、画像差し替えのみで、コンテンツの絵が 変わるというふうにしたいのです。
lockrootってブール変数?
>>127 うん。
>>126 やりたいことがいまいちわからない。
そのアクションを制御しているスクリプトってヤツでナニをしたいの?
129 :
12345さん :2006/03/03(金) 00:25:08 ID:myYG610R
音楽を再生するFLASHを作っているのですが、そこで表示する 「音楽全体の時間」をtTime 「残り再生時間」をrTime という変数に代入し表示するスクリプトです。 onClipEvent (load) { function txtTime(Sec) { m = ("0"+Math.floor(Sec/(60*100))).substr(-2,2) ; s = ("0"+Math.floor(Sec/100)%60).substr(-2,2); ss = ("0"+Sec%100).substr(-2,2); return (m+":"+s+":"+ss); } fRate = 12; tFrame = _root._totalframes-1; tSec = Math.ceil(tFrame/fRate*100); tTime = txtTime(tSec); bar._xscale = 0; } onClipEvent (enterFrame) { cFrame = _root._currentframe-1; bar._xscale = (cFrame/tFrame)*100; rSec = Math.ceil((tFrame-cFrame)/fRate*100); rTime = txtTime(rSec); } 曲は2フレームからストリーミングで配置してあり、曲の最後までフレームを設置しています。 ここで、「曲の再生時間」を表示する場合、どうしたらいいんでしょうか。
>>129 現在のフレーム this._currentframe を取得してフレームレートから計算する。
フレームレートが12フレーム/秒だから、もし120フレームの地点だったら再生時間10秒。
>>130 そんなことしてる奴いねーよ。
>>129 ヘルプのActionScriptリファレンスのSoundクラスの項を見ろ。
>>131 >129でトータルフレーム数から音楽全体の時間を求めてる。
質問内容を見る限りではSoundクラスは使ってない。
133 :
12345さん :2006/03/03(金) 01:52:36 ID:myYG610R
129です。
>>130 さんのおかげで何とか解決できました
ところで別の質問なのですが、
129で解説したFLASHに早送りなどのボタンをつけたいと思っています。
押している間は、早くタイムラインが進むような感じにしたいのです。
どうしたらいいでしょうか
実際に早送りボタンに書くスクリプトをご指導願います。
>>133 >>130 に追加すればいいんじゃない?
倍速なら
speed=2;
gotoAndPlay(this._currentframe+=speed);とか
135 :
Now_loading...774KB :2006/03/03(金) 11:39:31 ID:fqhiGtbE
XPでMXです。 外部swf(a5.swf)の大きさを指定して読み込みたいです。 現在の状況 レイヤー3にMC「base」(300*100)を貼り付けて、そのMCのASとして onClipEvent (load) { loadMovie("a5.swf", "base"); } としました。 MC「base」の左上が基準点にはなったのですが、「base」の大きさに収まりません。 ASに問題がありますか? それとも外部swfを任意の大きさで開くには別の事をしなくてはなりませんか? よろしくお願いします。
>>135 loadMovieは基準点を合わせて読み込むだけ。
サイズは変更してくれない。
onClipEvent(data)にてサイズ変更のロジックを入れる。
MX2004以降なら、MovieClipLoader.onLoadCompleteを使用すること。
137 :
Now_loading...774KB :2006/03/03(金) 15:13:37 ID:fqhiGtbE
>>135 です。
>>136 さんありがとうございます。
さらに質問で申し訳ないのですが、
>onClipEvent(data)にてサイズ変更のロジック
というのがさっぱりわかりません。
どのASを使えばいいのでしょうか?
読み込みたいサイズは300*100なので、
こう書けばいいというASを教えていただければ泣いて喜びます。。。
>>137 136じゃないけど、baseにクリップアクションとしてonClipEvent(data){}を書く。
137はonClipEvent(data)がどういうものか調べたか?
ヘルプにも一応載ってるし、
>>6 のサイトでも例を見つけられる。
loadMovieした段階で、baseはa5.swfにいれかわっていると考える。
だから、もとのbaseの大きさはすでに忘れ去られてa5.swfの大きさになっている。
そこで、a5.swfを読み込んだら、あらためてbaseの縦と横を300*100に変更する必要がある。
MCの縦横プロパティくらいはわかるよな?
むしろ137が頑張って試行錯誤して質問してくれた方が、ここの住人的には
泣いて喜ぶのではないか。
それから loadMovie("a5.swf", "base"); はFlash4的書き方なので使わない。
MC.loadMovie()に変えた方がいい。
139 :
137 :2006/03/03(金) 17:11:08 ID:fqhiGtbE
>>138 ありがとうございます。
onClipEvent(data)はloadMovieした後に一度だけ実行される・・・というくらいしかまだ判らないのですが、とりあえず調べながらやっています。
MC.loadMovie()がまだちょっと解らないのですが、試行錯誤しながらがんばってみます。
また解らなくなることがあると思うのでその時はよろしくお願いします。
140 :
137 :2006/03/03(金) 20:06:39 ID:fqhiGtbE
何度もすいません。 どうにもうまく行かないのでどなたかアドバイスを頂ければ嬉しいです。 _root(最初のタイムライン)にレイヤー「base」を作って、 そのレイヤーにMC「base」を配置。MC「base」にactionMovieClipとして、 onClipEvent (load) { base.loadMovie(a5.swf); } onClipEvent (data) { base._width = 300; base._height = 100; } と記述したところ、何も読み込まずMC「base」がそのまま表示されてしまいます。 上3行が間違っているのかと思い、 onClipEvent (load) { loadMovie("a5.swf", "base"); } onClipEvent (data) { base._width = 300; base._height = 100; } と戻してみましたがやはり何も表示されませんでした。 やはり下3行がおかしいのでしょうか??
いろいろ問題あるんだが決定的なのは。 loadMovieを実行すると、 そのムービークリップのデータは、読み込まれたデータに上書きされて消え去る。 したがって、a5.swfを読み込んだ段階で onClipEvent (data) のプロパティも消える。 これを回避するためにはmc内に記入するのではなく メインのタイムライン上にacを書くべし。
acを書くべし → asを書くべしのマチガイ。 メインのタイムライン上に書く場合には 書き方がonClipEventではなくて base.onData = function() { 〜 みたいになるから注意ね。
EmptyMovieClip作ってその中に外部swf読んでEmptyMovieClipで作ったMCを リサイズした方がはやいだろ
144 :
Now_loading...774KB :2006/03/03(金) 21:37:07 ID:MW/+dqpT
ヘルプでMovieClipLoader等を引くと、
必ず
var my_mcl = new MovieClipLoader();
my_mcl.onLoadComplete = function(target_mc) {
};
my_mcl.loadClip("
http:// 〜〜〜", mc);
という感じでロード後の処理などを全部記述したあとにロードしてますが
これには何か意味があるのでしょうか。
順番を逆にしても正常に動きますが、処理速度が変わったりするものなのでしょうか?
145 :
SLASH :2006/03/03(金) 21:44:32 ID:6NdO6vpn
/ ̄ヽ
/⌒⌒⌒ヽ/|
⊂| ◎ ‖
ヽ ゚∀゚丿\| 誰か、私をぱくったな!!
__ 〃ヽ〈_
γ´⌒´-−ヾvーヽ⌒ヽ-:,,
/⌒ y.. /\ ); `ヽ-:,,
/ ノ\_| .萬 | ._.イ | "-:,,
! ,,,ノ爻ヘ._\/__.ノr;^ > ) \,
.| <_ \ヘ,,___,+、__,rノ /\ /: ヽ,,
|ヽ_/\ )...、__,+、_アソ〃 / \
| ヽ、___ ヽ.=┬─┬〈 ソ "-.,
| 〈J .〉、| 亀 |, |ヽ-´ ゝ
.| /"" | 甲 |: | ミ
| レ :| 男 .| リ "-:,,
| / ノ|__| | "-:,,
.| | ,, ソ ヽ ) ,,,-ー"
| .,ゝ ) イ ヽ ノ ,,,-ー"
.| y `レl 〈´ リ ,,,-ー"
| / ノ | | / """"
l ̄ ̄/ l ̄ ̄| ,,,-
〉 〈 `ー-ー-| |-ー"
/ ::| (_ \
(__ノ \___)
http://www.sojh.com/funstuff/happyfunsong.htm 暇がある者は、これを見てくれ!!
>>144 onLoadCompleteでヘルプ検索しれ
147 :
Now_loading...774KB :2006/03/04(土) 04:53:35 ID:jk23c9oB
ドラック中のボタンをブラウザの外で離す判定がreleaseOutsideで出来るのは分かったのですが、 ブラウザ外でドラック中であるかどうかや、その時のマウス位置などの取得はどうすればいいのでしょうか?
>>147 Flashの外にでたら出来ないんじゃない?
>>147 ドラッグ中かどうかはフラグたててそれで判定すれば?
マウスの座標は_root._xmouse、_root._ymouseで取れる。
ブラウザ外かどうかは判定できないけどFlashの外かどうかは
マウスの座標から判定できるでしょ。
>>148 やってみたけどFlashの外でも座標は取得できる。
ブラウザの外でも取得可。
>>149 取れたっけか?なんて思いながら
var hoge:TextField;
onEnterFrame = function(){
hoge.text = "x:"+_xmouse+" y:"+_ymouse;
}
で試したけどswfから外れた時点でやっぱ取れなくなった。
なんか別の方法あったっけ?
ActionScriptでJavaScriptのprototype.jsにあるbind()のようなものはあります? オブジェクト内から自分のオブジェクト内の関数を参照するとスコープが変わってしまうので。
>>151 delegateで委譲かでいけると思うのだが、うまくいかない場合の具体例を挙げてくれ
153 :
149 :2006/03/04(土) 17:07:59 ID:hlz099aK
>>150 mc(
>>147 の質問はボタンでしたが要はmc)のonClipEvent(mouseMove)に書くと取れます。
ただしドラッグ中だけです。
ドラッグ中以外は座標が取れない、というよりは
mouseMoveもonEnterFrameもイベントが飛ばないので
イベントハンドラが呼び出されないようですね。
bunsyo += moji.slice(point,point+1); point++; というスクリプトでダイナミックテキスト「bunsyo(複数行表示)」へ1文字ずつ文字を入れて表示させるゲームの会話部分を作っています。 動作自体は問題なく動いていたのですがいざテキストデータを読み込んで表示していると この文章はサンプルです。御 教授お願 このように表示されているのが突然 この文章はサンプルです。 御教授お願いします。 という感じに読み込み中に1文字、下の行にいってしまいます。 ゲーム画面では突然文字が動くように見えてしまいとても不自然です。 どの文章でも起こるわけでなく、起こる文章も句読点等を上手く調整すればその現象は防げるのですが これから大きい文章を使うためできればFLASH内でなんとかしたいと思います。 何か対処する方法はないのでしょうか?御教授お願いします。
>>154 改行コード(確か\n)を入れてあげればいい
すいません、ActionScriptにはデフォルト引数は無いのでしょうか? Help調べてもなかなか出なくて…orz
>>156 ない。
if (arg == null)で設定すれば似たようなことが出来る。
>>157 かわりに呼び出し元が引数を省略したらnullが代入されるのですね、
ありがとうございます。
質問です。 汎用的に使える確認ダイアログを作りたいのです。 つまり、「はい」「いいえ」をたずねたい場面が複数あり、 それら1個1個に確認ダイアログを作るのは煩雑なので、 確認ダイアログを表示して処理する関数 function kakunin() を作り、 この関数は「はい」なら1 「いいえ」0を返す というのを作りたいのです。 しかし、確認ダイアログを表示した段階で kakunin()内の処理は終わってしまいうまくいきません。 「はい」「いいえ」のボタンを押した時点で処理の続きを続行するようないいアイデアはないでしょうか?
>>159 ???
アイデアというか、そんなの当たり前の処理では?
function kakunin(b){
return b=="はい" ? 1 : 0;
}
trace(kakunin("はい"));//1
trace(kakunin("いいえ"));//0
161 :
137 :2006/03/05(日) 04:52:53 ID:Ec2irqh3
何度も作り直したりするうちに、 気がついたらMCの名前をbaseにしただけでインスタンス名を「base」と指定していなかったこと、 タイムライン上でなく、MC上にASを書いていた事、 が原因でした。 私のような人がこの先現れるかワカリマセンが、一応書いておくと、 ●●(読み込む対象MCのインスタンス名)の配置してあるタイムライン上に this.●●.loadMovie("○.swf"); というASを書く と書くとできました。 また、ASを使わなくてもメインタイムライン上のMC「base」を変形で小さくすることで とりあえずやりたいことはできました。 どうも見当ハズレの質問ばかりしてしまった気がします。 親切に教えてくださった皆様ありがとうございました。 長々とすいません。。。
>>159 ムービークリップか何かで作ったダイアログを表示するんですよね?
その間kakuninから帰ってこない=Flashが固まるって事だから、1関数に
収めるのは無理なんじゃないでしょうか。ActionScriptには
コルーチンもスレッドも無いようですし。
となると解決策は
・Alertを使う
Proのみらしいのでよくわかりません
・ポーリング
onEnterFrameか何かでいちいち確認
・コールバック
OKボタンが押された時点で関数何某を呼び出してもらう
いずれかしかないんじゃないですか?
******
質問なのですが、外部ASファイルを記述した時、
import foo.*;
var tmp = new Bar();
は動くのに
var tmp = new foo.Bar();
とやるとFlashが固まります。外部ASファイルを扱う際に、
なにか(Flashがこけるほど)危険な約束事があるのでしょうか?
>>159 ラッキーアイテム:windowクラス
>>162 flashでインポートするとき*使えたっけ
>>163 Windowコンポーネントはモーダルウインドウも扱えるのですね。
>>159 ではありませんが参考になります
>flashでインポートするとき*使えたっけ
ASUnitが吐き出すコードがよろしく無かったようです…お騒がせしました。
class AllTests extends TestSuite {
を
class foo.AllTests extends TestSuite {
に変更したら動きました。警告くらいしてくれてもいいのにorz
そんなクラス名はいらんw
159です。 回答ありがとうございます。 いろいろと試行錯誤を重ねた結果、agruments.callerを使うことで自己解決しました。 「はい」「いいえ」を押すと呼び出し元の関数を再び実行し、これによって処理の続きを再開するという方式です。
あ、162で示唆されていたコールバックを使ったので 自己解決じゃなくて他人解決ですね・・・アセ
168 :
126 :2006/03/06(月) 11:37:54 ID:Hx6h4kOn
128さん、言葉では説明しずらいので、
サンプルファイルを用意しました。
http://up.isp.2ch.net/up/d892ddfc759e.zip 解凍すると、以下の3つのファイルがあります。
@01qtvr_tmp.fla←外部読み込みで画像を読みこまずに、内包しているタイプ。
A01qtvr_tmpload.fla←@のファイルから、画像を削除し、画像を読みこむ命令(loadmovieで)を追加。
B01qtvr_gaibu.fla←Aのファイルの読みこみのための外部参照画像ファイル。
@は、問題無く動きます。(VR風のギミック)
Aからパブリッシュしたデータで、Bの画像(SWFファイル)を読み込まれるんですが、ギミックは反応しません。
上スレッド(スレッド116)の説明のように、内部処理か、外部処理の違いで、動いてくれると思ってるんですが、
なにか、ロジックを組まないとだめなのでしょうか?よろしくお願い致します。
169 :
Now_loading...774KB :2006/03/06(月) 14:26:04 ID:FupYHkT0
>>169 算数のお勉強をしっかりやってください。
171 :
Now_loading...774KB :2006/03/06(月) 16:42:10 ID:ClhBrASl
ひさびさにDirector使わなくちゃいけなくて焦ってるんだが、 Directorに読み込んだFLASHファイルからDirector側に変数の 値を送るのってどうやるんだろう? あと逆も。
>>169 ネタに解説いれるほど馬鹿らしいことは無いな…
173 :
171 :2006/03/06(月) 17:16:25 ID:ClhBrASl
174 :
171 :2006/03/06(月) 20:22:19 ID:ClhBrASl
…と思ったら、DIRECTORからFLASHの変数参照すると文字がバケるんです(涙 FLASH MXは「UTF-8」でDIRECTORは「SHIFT JIS」なのか… どうすれば…
>>174 Flash側でsystem.usecodepageの設定でなんとかならないだろうか
>>168 fla開けない。MX2004でも開けるようにしてほしい。
Flash内をプリント出来る機能を調べているのですが、Flash内の任意の場所だけを 印刷する様にするということはActionScirptで実現する事が出来るのでしょうか。
178 :
126 :2006/03/07(火) 09:40:29 ID:u8TU542m
>>178 ちらっと見たけど、多言語から来た人?Fla4の人?それとも自分で書いてないAS?
問題点は、_rootにloadMovieして_rootを入れ替えていることと、
ターゲットの違いがわかってないこと。
しかもスラッシュシンタックスとか使ってるから訳わかんなくなってると思う。
あと外部ファイルを読み込むつもりなら、ロードチェック処理もないとまずくないか。
MovieClipLoader使えるならそっちが便利。
多分これ見た人は全部書き換えたくなると思うよ。
で、はっきり言うと基本的な知識が不足している。
このムービーのことはいったん脇に置いて、ターゲットパスについて勉強する。
ドットシンタックスでクラスメソッドやプロパティを使う書き方に慣れる。
ついでにヘルプの使用を避ける言語エレメントとか読む。
>>178 ファイル見れないから、よくわからないんだけどイメージビューワーを作りたいの?
だったらXMLで
<image>
<url>images/1.jpg</url>
<url>images/2.jpg</url>
<url>images/3.jpg</url>
</image>
とか適当につくって、そのXMLファイルを読み込んで解析して、
createEmptyMovieClipで空MCつくって、
さっき読み込んだ画像のパスを使って空MCに読み込ませればいいんじゃない?
181 :
126 :2006/03/07(火) 15:05:36 ID:u8TU542m
179さん。 問題点は、_rootにloadMovieして_rootを入れ替えていることと、 ターゲットの違いがわかってないこと。 ↑ 要するに、読みこんだ時点で、パスが変わってしまっているということでしょうか? 絶対パスでなくて、相対パスで指定してあげればいいのでしょうか? あと指摘してくれた個所は、いまから調べて勉強してみます。 SWFの外部ファイル読み込みで、マウス操作が機能しないということは ないのですよね? 単純に、上記の基礎的な知識不足により、間違った書き方をしており、 反応しないということとして考えてイイでしょうか? 180さん。 正確には、静止画ではなく、連番ファイルです。xmlで、連番ファイルを読み込み可能に なるんでしょうか? 連番ファイルが1セットで、差し替えすることになる予定です。 上記のアップロードファイルは、とりあたま、サンプルファイルとして添付しました。
class Hoge { var mona:Object; function Hoge(){ mona = new Object(); } } class Hoge { var mona:Object = new Object(); } デバッガで確認した限りでは、上のやり方だとクラス変数monaは生成されてるのに、 下のやり方ではmonaは生成されません。どうしてなんでしょうか?
どうやって呼び出したの?生成確認ってどうやったの?
var hoge = new Hoge(); 単純に、ここにブレークポイントを置いて、通過する前後を見ました。
外部テキストを読み込むのですが、 フレームを進める必要がある場合はありますか? 1フレだけのムービーに【↓】を書いて成功しました。 function loadData() { myData = new XML(); myData.load("test.xml"); } myData.onLoad = function() { trace(myData.loaded); }; しかし、既に作ってあるムービーだと失敗したので、 【↓】(★)の部分でフレームを進めたら、成功しました。 function loadData() { myData = new XML(); myData.load("test.xml"); (★)onEnterFrame = function () { trace(myData.loaded); delete onEnterFrame; };} フレームを進める必要のあるなしの条件が 判らないので混乱しています。 よろしくお願いします。
186 :
Now_loading...774KB :2006/03/07(火) 18:41:56 ID:rbtMdOhY
actionscriptで線のプロパティにある線種の点線やラフを使いたいのですができないのでしょうか? 点線くらいだったら自分でどうにかなりそうな気もしますが、ラフや点描は自分で作るとしたらどうやればいいんでしょうか?
188 :
171 :2006/03/07(火) 19:42:50 ID:g2or/nkl
>>175 >Flash側でsystem.usecodepageの設定でなんとかならないだろうか
あんがと、でもこの命令が効くの外部テキストだけなんですよ。
あきらめてS-JISのFLA5使うか、ディレだけでやるか…
LINGOなんて忘れたよ(ハー
>>188 ちなみに何の案件?
CDROM?
うちは、Director案件全然なくなった
>>185 XMLクラスのonLoadってはxmlが正常にロードされたときに呼び出される。
下のはtraceを通った時点でまだ読み込まれてなかったのが原因だと思う。
ネタ切れの感は否めないな
すいません。誤爆しました
193 :
185 :2006/03/07(火) 23:24:14 ID:fSqdh/7C
>190 >下のはtraceを通った時点でまだ読み込まれてなかった あ、下も成功してます どちらのASでも出力は「true」です (>185の)上のASで、ムービー(に貼り付けて)によって成功したりしなかったり。 onLoad(xmlロード後に実行する)ですから、 ムービーによって失敗(「false」も出力しない)するのはおかしいですよね? (xmlは1kb未満(単語2,3個)) ん〜、(>185の)上のASが適切じゃないのでしょうか?
>>193 myData.onLoad = function() {
trace(myData.loaded);
};
これをloadの前に書いてみてはいかが?
>>193 myData = new XML();
myData.onLoad = function (s){
if (s){
trace(myData.loaded)
}else{
trace("error")
}
}
myData.load("test.xml");
ってやったらどーなる?
>195 訂正 >ってやったらどーなる? ってやったらうまくいかない?
198 :
Now_loading...774KB :2006/03/08(水) 01:22:12 ID:dOW4cUD4
>>195 が正解。引数でフラグ受け取らないとフライングするよ。
ムービークリップに"start"、"move"、"end"というラベルがあって、 そのラベルが付けてあるフレームが何フレーム目にあるか調べる方法ってありますか? 読み込むムービーによってラベルが違うフレームにあるので、 スクリプトで調べられたら便利なのですが。 よろしくお願いします。
カレントフレーム とか?
ラベルで判断するのは無理じゃね?
202 :
Now_loading...774KB :2006/03/08(水) 08:33:32 ID:h4MibDb8
_visibleをfalseにして gotoAndStopでラベルまで飛ばしてcurrentframeを変数へ取得 その後ヘッドを戻すとか・・・ まあ200さんといっっしょか
>>199 スクリプトの組み方次第でそれを調べなくても良いかもしれないよ。
最終目的も書いてみてはどうだろう?
>>182 8環境だと普通に生成されるけど、環境は?
>>182 ひょっとして「クラス変数」というのはstaticなオブジェクトを管理したいのかな?
それだとデバッガでは追えないけれども、生成はされているはず。
class Hoge {
static var mona:Object = new Object({_name:"mona",x:10,y:20});
}
として
trace(Hoge.mona._name) //出力「mona」
いろいろアドバイスありがとうございます onLoadを先に記述しましたが、失敗です とりあえず、先に進みます。解決しなくてすいません 動作しないムービーの共通点を探すことにします ASの実行順って、同一フレームをすべて読み込んでから、 上から実行かと理解してるんで、入れ替える事は想像してませんでした ちょっと視野が広がった感じです
208 :
126 :2006/03/08(水) 11:46:56 ID:bcwwR6Ya
どなたか、ご指南頂けないでしょうか? ヒントだけでも構わないので、お願い致します。
>>208 =168=181
>>181 のように考えてイイから、自分のスクリプトを読めるようになってくれ。
その上でここまで理解したけどどうよ?と聞いてくれると話が進みやすい。
126がやろうとしてることは難しいことではないが、一般と違う方向に進んでしまったために教えにくい。
東京から京都に行こうとして何故か旧街道の東海道を歩き出して脇道で迷ってしまった人のような状態。
そのまま京都まで街道案内するよりは、いっそ東京駅まで戻ったら?
新幹線の乗り方覚える方が楽だよ?と言いたくなるわけだ。
それから、レスでさんづけしなくていいから、アンカーをちゃんとつけてほしい。
210 :
171 :2006/03/08(水) 13:06:37 ID:q9tZVf6o
>>189 > ちなみに何の案件?CDROM?
いやダウンロード型の簡単なアプリ
ファイルI/OがあるからFLAじゃ無理で
CとかVBとか使えないからDIRでやるかと。
>うちは、Director案件全然なくなった
うちも、ないねぇ。これもやむにやまれずという感じだし
211 :
189 :2006/03/08(水) 13:25:53 ID:c3rXhkYs
>>210 なるほど。
今は、ビデオもFlashに乗るようになったし、Directorの存在感はほとんどなくなったよね。
テキストファイルのIOなら、ZincっていうSwfToExeソフトで出来るよ。
ttp://www.multidmedia.com/ 前仕事で使ったけど、普通に問題なかった。
ただ、Win版で300ドル。Win&Macだと500ドルするので、
ある程度大き目の案件でないと厳しいかも。
昔、ScreenWeaverっていう似たようなソフトもあったけど、
売れなかったのか、途中で開発中止。
しかも、メモリーリークのバグがあって全然使えなかった。
http://oss.moongift.jp/intro/i-964.html 今、オープンソース系アプリとして復活してるようだけど、
これについては全然情報がないので、もし弄ってみたらレビュー希望。
ASスレなので案件云々はマ板あたりでヨロ
213 :
182 :2006/03/08(水) 14:17:08 ID:6M/RlElZ
>>206 確認してみましたが、staticなクラス変数は_globalに生成されてて、
ちゃんとデバッガで追えるようです。
クラス変数が生成されないって問題ですが、遅延生成って言うのかどうかわかりませんが、
実際に参照されるまでは生成されない、ということだったみたいです。
↓のコードをデバッガで1行ずつ追っていったら理解できました。
// Hoge.as
class Hoge {
var a:Number = 0;
}
// test.fla
var hoge:Hoge = new Hoge();
var a = hoge.a;
var b = hoge.b;
hoge.a += 3;
hoge.b += 1;
214 :
171 :2006/03/08(水) 17:57:40 ID:q9tZVf6o
215 :
Now_loading...774KB :2006/03/08(水) 18:58:17 ID:bcwwR6Ya
ターゲットパスについては、調べて、まだ不充分かもしれませんが、 理解出来たと思います。とりあえず、分離するまえの元のファイル 01qtvr_tmp2004.flaを Flash2004以降の仕様にするために、スラッシュシンタックスをドットシンタックスで、パスの指定を変更しました。 ルート//1frame// startDrag("_root.dragControl", true); setProperty("_root.nav", _x, -2000); setProperty("_root.nav", _xscale, "500"); setProperty("_root.nav", _yscale, "500"); ムービクリップ//movBut// while (Number(n)<19) { n = Number(n)+1; bn = "kv" add "n"; duplicateMovieClip("kv", bn, n); setProperty(bn, _x, Number(getProperty(bn, _x))+Number(n*getProperty(bn, _width))); setProperty(bn add "b", _x, getProperty(bn add "b", _x) + (random (20)+1)); set(bn add "n", n); }
216 :
続き。126 :2006/03/08(水) 18:58:51 ID:bcwwR6Ya
しかし、どうしても、ムービクリップ//movBut//で、以下のエラーが発生します。 **エラー** シンボル = movBut, レイヤー = Layer 2, フレーム = 1 :行 3:シンタックスエラー bn = "kv" add "n"; **エラー** シンボル = movBut, レイヤー = Layer 2, フレーム = 1 :行 6:')' または ',' が必要です。 setProperty(bn add "b", _x, getProperty(bn add "b", _x) + (random (20)+1)); **エラー** シンボル = movBut, レイヤー = Layer 2, フレーム = 1 :行 7:')' または ',' が必要です。 set(bn add "n", n); 他は、大丈夫みたいなんですが。。 皆目検討がつかなくて困ってます。何が悪いのでしょうか?よろしくお願いします。 また、ロードチェック処理とは、どの辺のマニュアルを確認すればいいでしょうか? どうも検索をかけてもでてきません。 これは、どうして必要なのでしょうか?何度もすいませんがよろしくおねがいします。 追伸// アンカーっていうのは、どういう意味でしょうか? 208=168=181=215←こういうことでしょうか?
>>216 シンタックスエラーのチェックまで人任せにすんなヴォケ
で済ませてもいいんだが
bn = "kv" add "n";
は何をしたかったのかな?
それ以外も同様。
それと、何でもいいんだけどActionScriptの基礎の本を一冊読んで、
本に出てるサンプルコードをひとつひとつちゃんと理解してから
先へ進んだ方がいいと思う。
いまのあやふやな理解のままだと、人に聞いて適当にいじってるうちに
結果としてなんとなく動くことはあるかもしれないけど、
それじゃ次に何か作るときには役にたたないからね。
218 :
126 :2006/03/08(水) 19:31:37 ID:bcwwR6Ya
while (Number(n)<19) { n = Number(n)+1; bn = "kv" ; n++; duplicateMovieClip("kv", bn, n); setProperty(bn+"b", _x, Number(getProperty(bn, _x))+Number(n*getProperty(bn, _width))); setProperty(bn+"b", _x, getProperty(bn+"b", _x) + (random (20)+1)); set(bn, n++); } すいません。自己解決しました。 ただ、画面がループしなくなってしまいました。 (途中で、最初の絵に戻る。) ただ、スクリプト自体は動くようになりました。 これをベースに、分離した外部SWFが読みこんで、 動作するか試してみたいと思います。 ここまでで、すでに方向性が間違っていますか? よろしくお願いします。
219 :
Now_loading...774KB :2006/03/08(水) 19:37:02 ID:+V25Aes+
昔Flashを使っていて、久しぶりに触ろうとしたら tell terget が「使用を避ける機能」になってました(TーT 今これに代替するScriptってなんですか? macromediaのホームページをみようとしたらアドビになってるし…どうなってんの
220 :
126 :2006/03/08(水) 19:38:06 ID:bcwwR6Ya
217さんありがとうございます。 これは、サンプルファイルをひろってきたものなので、 このSWF自体は、正確に動かなくてもいいんです。 要は、先に示したように、SWFを外部読み込みした際に メインSWFから、ほんとに動作するのかどうかを検証しています。 そのサンプルとして、適当なものを選んで、アップさせてもらいました。 それで、指摘していただいた、ターゲットパスなどが、どうもこれは、Flash4の 書き方のようだというのがわかったので、2004用にコンバートして、 足並みをそろえて、今一度、ご質問させて頂いている途中になります。 よろしくおねがいします。
>>220 2004を使ってるならなんでfla4のサンプルなんて使うの?
ヘルプを見ればサンプルソースがあるし、サンプルプログラムがインストールされてるはず。
222 :
126 :2006/03/08(水) 19:57:50 ID:bcwwR6Ya
マウス操作で反応するインタラクションで実験したかったんです。 実際に使用するものは、それに近いかたちのものなんです。 2004にも同様のものはありますか? このファイルは、FlashKitからひろってきました。
>>220 > 217さんありがとうございます。
> 要は、先に示したように、SWFを外部読み込みした際に
> メインSWFから、ほんとに動作するのかどうかを検証しています。
検証するまでもなく、基本的には動作するよ。
つうか、動作するかしないかはスクリプトを読めばわかる。
わからないならASの基本学習が先。
しかも
>>221 も言ってるが、サンプルにFla4のものを使うのは根本的に間違い。
それから、くどいようだが「さん」よりもまず「アンカー」をつけろ。
…以前いたトモコとかいうのを思い出してきた。
>>219 Flash4のことは忘れましょう。無かったことにした方が良いくらいです。
226 :
126 :2006/03/08(水) 20:13:08 ID:bcwwR6Ya
すいません。アンカーの意味を教えてください。 動作はするんです。ただ、動作は、読み込みはできるというのが、ただしいてです。 そのSWFを介して動作するアクションに対しては、まったく反応がないんです。 例えば、 メインSWF←メインSWFから、ムービクリップAのみにしたサブSWF。 そして、メインSWFに、サブSWF自体は読み込みはできるんですが、 メインSWFに記述したフレームアクションに対しては、無反応なんです。 ターゲットパスの問題なのでしょうか? ヒントの程お願いします。なにか参考になるサイト、ファイルなどあれば、お教えください。 よろしくおねがいします。
ウザワロスwwwww
>>226 > すいません。アンカーの意味を教えてください。
レス番の前に>>つけろってこと。
わからんなら2ch初心者板でも行ってこい。
> ターゲットパスの問題なのでしょうか?
だからみんなさんざんそう指摘してるだろうがあああああ!!!!
126の状況はFAQなんだよ。
質問する前に人の書いたレスを信じろ馬鹿者!
本一冊読み通すまでもう来るな。
>>126 には、早いところあきらめて試合終了にしてもらいたいところだな。
>>219 tellTargetってなんぞやってヘルプ引いたら、しっかり代替コードのってるじゃん。ヘルプ嫁
231 :
126 :2006/03/08(水) 22:14:23 ID:bcwwR6Ya
>>228 みなさん、ご迷惑をおかけしています。
なんとか、施行錯誤して、動くようにはなったんですが
また、ひとつ疑問ができました。
制御上、ムービクリップを自動で読みこんで、
読みこんだものをメインのSWFで、止める(ストップ)命令を有効にしたいんですが
なぜか、効きません。フレームに読みこむと、それが判定になり、
止まるように制御できないでしょうか?
いまは、読みこむと再生しっぱなしです。
何か方法はないのでしょうか?
aa._lockroot=true;
aa.loadMovie("aa.swf");
this.stop();
aaインスタンス以下に、this.stop();とかいても止まりません。
よろしくお願い致します。
232 :
Now_loading...774KB :2006/03/08(水) 22:21:06 ID:HgTBwot5
>>231 読み込んだ時、aaインスタンスはaa.swfに置き換わるからaaインスタンスにAS書いても意味ない。
っていうかaa.swfの1フレーム目にthis.stop();でいいと思う。
>>233 相手すんなよ。相手にするからつけあがるんだ。
>>213 staticなクラス変数とかワケワカメなこと言ってんじゃねぇ。
お前がクラス変数と言ってるのは、インスタンス変数というんだ。
static付けるとクラス変数になんだよ。
236 :
Now_loading...774KB :2006/03/08(水) 23:54:05 ID:J/KO95Fr
flashでのxmlの使い方を一からわかりやすく開設してるサイトご存じないですか?
238 :
Now_loading...774KB :2006/03/09(木) 01:01:03 ID:0WcHKAf5
>>237 ありがとうございます。追加でもう一つ。
loadVariable("a.txt");
のように書いて、a.txtが存在しない、アクセスできないという場合に続く処理をスキップしたいのですが、
a.txtが存在するかどうか、アクセスできるかどうかはactionscriptで判定できますか?
>>238 ASではロードするファイルの存在確認はできない。
CGI連携で存在確認をして結果を戻すか、ASだけならリトライしてタイムアウトなら〜
なんていうコードつくるかだね。
240 :
Now_loading...774KB :2006/03/09(木) 04:51:18 ID:2MKEN5wJ
ソフト=FlashMX2004,OS=Win98SE 複製したMCにポインタが重なっているかを判定するASを書いて いますが、判定の指標となる trace("onRollOver "); が実行され ません。ASは以下のようになっています(フレームアクション)。 i = 0; //カウント用変数 j = 0; _root.Atom_H.onRelease = function() { i = i+1; j = j+1; _root.Atom_H.duplicateMovieClip("Atom_H"+j, j); _root["Atom_H"+j]._x = Atom_H._x+50; //複製してAtom_H1などとして隣に置く Atom_Hj = _root["Atom_H"+j]; trace("Atom_Hj="+Atom_Hj); }; _root.Atom_Hj.onRollOver = function() { trace("onRollOver "); _root.Hi.onEnterFrame = function() { _root.Hi._visible = !_root.Hi._visible; //RollOverしたらHiが点滅する }; trace(" twinkle"); }; 間違いをご指摘下さい。
>>240 作った時にonRollOverも割り当ててあげれば良いんじゃないのかな。
i = 0;
j = 0;
Atom_H.onRelease = function() {
i++;
j++;
tmpAtom = Atom_H.duplicateMovieClip("Atom_H"+j, j);
tmpAtom._x = Atom_H._x+50;
tmpAtom.onRollOver = twinkle;
};
function twinkle() {
this.onEnterFrame = function() {
this._visible = !this._visible;
};
}
242 :
240 :2006/03/09(木) 11:35:24 ID:FYHZv+Ik
>>241 さんきゅうです。元のASに適用しましたが、目的の動作はしませんでした。
もう少し粘ってみます。
>>239 タイムアウト設定をすることにしました。
ありがとうございます。
>>240 i = 0;
Atom_H.onRelease = function() {
i++;
dup = Atom_H.duplicateMovieClip("Atom_H"+i,i);
dup._x = Atom_H._x+i*50; //カウント用変数あったので複数複製した場合の被り防止
dup.onEnterFrame = twinkle; //EnterFrameで判定回す方向に変更
}
function twinkle() {
if(this.hitTest(_xmouse,_ymouse,true)){ //マウス座標がMCと重なっていたら
this._visible = !this._visible; //点滅させる
trace(this+"hit");
}else{
this._visible = true; //消えたまま止まると気持ち悪いので表示させる
}
}
こんな感じでどうだろうか
何がしたいか上手く解らんけど、 ・最初にあるMCを複製したい ・複製したMCをロールオーバーしたとき、最初にある方が点滅する動作をさせたい がしたいんかな。カウント変数が何故か二個あったりしてイマイチ意味が解らん ついでに言うと、元のMCにonEnterFrameを設定したあと、ロールアウトでそれを何とかしないと 点滅しっぱなしになるよ i=0; function getI(){//iを返してiを足す関数 return i++; } function COPYonROv(){//複製したMCのrollOverに代入する関数 trace("onRollOver"); _root.Hi.onEnterFrame=HoEF; trace("twinkle"); } function HoEF(){//元のMC点滅enterFrameに代入する関数 this._alpha=Math.random*100; } _root.Atom_H.onRelease=function(){//元のMCのonReleaseを直接設定 var temp=getI(); var temp_mc=_root.Atom_H.duplicateMovieClip("Atom_H"+temp,temp); temp_mc._x=this._x+50; temp_mc.onRollOver=COPYonROv; trace(temp_mc); }
変数c1,c2,c3の値が同じ場合c4にその値を代入する方法を教えてください。 flash5です。
>>246 if(c1==c2&&c1==c3)c4=c1;
248 :
246 :2006/03/09(木) 14:33:07 ID:S0K3h6u1
ありがとうございます。
249 :
246 :2006/03/09(木) 14:41:04 ID:S0K3h6u1
すんません。 orの時はどう結べばいいんでしょう? c1かc2が5の時 if(c1orc2==5) ~~~
>>249 ActionScriptリファレンスガイド
P.393
演算子の優先順位と結合性を嫁
251 :
Now_loading...774KB :2006/03/09(木) 15:04:45 ID:wakWR9S+
ソフトはFlashMX2004を使ってます。 質問は、複製MCの色付けについてです。 MC(インスタンス名:mc1、最初は赤色)をオリジナルとして、数珠つなぎの ようにmc1からmc2を生成,mc2からmc3を・・・・ mc[n] → mc[n+1]という 連鎖的な形で、attachMovieとduplicateMovieClipで生成しようとしています。 mc1→mc2) this.attachMovie("mc1",mc2 , dan, prop); mc2→mc3以降) this["mc"+i].duplicateMovieClip("mc"+(i+dan1), i+dan1); //mc[i+dan1]が生成 この際、最初のインスタンスmc1を赤→青とし、以後複製されたものは全て 青色となるよにうに(つまり青のmc2が生成される)するにはどうしたらいい でしょうか? 最初の1個は青に変わったのですが、2個目以降は赤色のままです。
>>251 青いMCを生成すれば良いんじゃないの?
ASを使って、シンボルの入れ替えを簡単に行う方法はあるでしょうか? 例えば、MCで作ったキャラクターが手に持っているアイテムを、棒→剣へと入れ替えるのは どうすればいいでしょうか? (棒、剣はライブラリに登録してあります。座標/拡大率/回転角度等そのまま引継ぎたいです) OSはXPでMX2004使っています。教えてください。
>>253 attachMovie
removeMovieClip
_x
_y
_xscale
_yscale
_rotation
あたりを調べて作ってみてはどうでしょうか。
>>253 >>タイムラインを活用するなら、武器MCを作り各フレームに様々な武器を配置、
棒をもってる時は棒のフレームを剣を持っているときは剣のフレームを表示するということもできる。
256 :
kurou :2006/03/09(木) 18:27:08 ID:q51+HjnB
初めて書き込みます。 ログインする為のswfを作り、id・passでコンテンツ(別のswf)を呼び出しています。性格にはgeturlでhtmlを呼び出しているのですが... そこで質問です、現在呼びだしているswfの数を減らしたいと考えており、そのために各swfをシーン別に管理しようかと考えております。(1つのswfにまとめてしまう) 現在考えている方法ではログインを管理するswfから入力されたID・PASSをFMS側のascファイルに格納させ、その後シーン別に統合されたswfにそのascファイルを読ませてシーン判定をさせようかと考えていますが、もっと簡単な方法が無いかと思い投稿させていただきました。 ローカルコネクションかなんかでいい方法ないでしょうか? 宜しくお願い致します。
XMLを読み込んで、改行で分割してるのですが、 最後の[EOF]が、空として吐き出されます。 XMLの中身 1 2 [EOF] makeData = myData.toString().split("\n"); trace(makeData); //結果 makeData=1 ,2 ,//←これを無くしたいです 下の様に、[EOF]の位置を変えれば解決するのですが、 どちらにも対応するにはどうすればいいでしょうか? XMLの中身 1 2[EOF]
makeData = myData.toString().split("\n"); if(makeData[makeData.length-1]==""){ makeData.pop(); } trace(makeData);
259 :
Now_loading...774KB :2006/03/10(金) 00:44:50 ID:CxcBHsWC
質問です フラッシュでメニューを作ろうと思っています。6こくらいのメニューが縦に並んでいて マウス乗せるとメニューの一つが縦に広がり、残りのメニューが つられて移動します。 動きのイメージはen-japanのトップフラッシュがサンプルというかまんまやりたいことです。 スクリプトの考え方だけでも教えていただけばありがたいです。 FP7以上で正常に作動するものを作りたいと思っています。
260 :
251 :2006/03/10(金) 00:55:47 ID:8UIhxuG+
>>252 青いMCを生成すれば良いんじゃないの?
具体的にはどうすればいいでしょうか?
連鎖的に生成することが目標です。
>>260 どうしても赤いMCを青くしたいなら
setTransform()でMCを生成するついでにMCの色を青くすりゃ良い。
mc2以降が静的な物なら元から青いMCをattachMovieしてけばおk
正直、やりたい事が伝わってこないので
しっかりとしたアドバイスが出来ない
262 :
251 :2006/03/10(金) 02:32:34 ID:8OZ8+sG0
263 :
240 :2006/03/10(金) 07:45:38 ID:KWC6F9us
>>244 , 245
244さんの方が簡単そうなので、こちらを試します。
264 :
Now_loading...774KB :2006/03/10(金) 07:55:14 ID:dXAvUbii
FlashMX2004使っています。 再生スピードを調整するASで、ムービーが止まりません。bar1という MCを右に方向に伸長させて、長さが400にたら止まらせるようなASです。 (フレームアクション) bar1._width = 10; ←初期値です function spFunc() { if (sFlag == true) { bar1._width = bar1._width+10; } } this.onEnterFrame = function() { ID = setInterval(spFunc, 500); if (bar1._width>400) { this.onEnterFrame = undefined; clearInterval(ID); } }; どうしたら良いでしょうか?
>>264 onEnterFrame で毎回setIntarvalを指定しているのが気持ち悪いです。
>>264 bar1._width = 10;
this.onEnterFrame = function() {
bar1._width += 10;
if (bar1._width>=400) {
delete this.onEnterFrame;
}
};
でいいんじゃね?
267 :
257 :2006/03/10(金) 10:07:47 ID:qY/qUVQp
>258 できました、ありがとう 最後の行は[EOF]だけにする。って聞いたことが有るんですが、 そういうものなんでしょうか?
268 :
264 :2006/03/10(金) 10:23:50 ID:AQ/jlQ9y
>>265 毎回setIntarvalを指定しているのが気持ち悪いです。
キモい記述は移動させて解決しました。
>>266 再生スピードの調整が主題なので、そのASはちょっと・・・・
269 :
Now_loading...774KB :2006/03/10(金) 11:16:12 ID:tGa9vYQm
>>259 まず上下に拡大するMCを6個を作る。で、6を5の中の最下に入れる。その5を同じく4の
中に入れる…の繰り返し。それぞれのMCにはマウスオーバーで拡大アニメが再生され、
外れればそのフレームから逆転再生される様にスクリプトを書いておく。
とか、ね。
>>268 なるほど再生スピードを変えるんだよね。
こういうのはどう?
movieSpeed = 10;//ムービー全体のスピード
bar1._width = 10;//bar1の横幅初期値
bar1Speed = 2;//bar1の増加値
bar1MaxWidth = 400;//bar1の横幅最大値
function spFunc() {
if (bar1._width>=bar1MaxWidth) {
clearInterval(ID);
} else {
bar1._width += bar1Speed;
}
}
ID = setInterval(spFunc, movieSpeed);
271 :
268 :2006/03/10(金) 12:59:00 ID:PkVl8S0g
>>270 ふむふむ。これと、onEnterFrame = function() はどう
組合わせればいいのでしょうか?
ちっとは自分の頭使え
>>271 設定した間隔でspFuncを実行してるんだから
onEnterFrameを使う必要は無いしょ。
274 :
Now_loading...774KB :2006/03/10(金) 15:11:28 ID:jP2qzzeR
FLASH MX2004 でムービーに書き出すと、表示されないレイヤーがいるのですが、 なぜでしょう。。。
ガイドとかマスクになってるんじゃない?
276 :
Now_loading...774KB :2006/03/10(金) 19:41:38 ID:7+pl+8hz
教本通りに(おそらく)時計つくったんですが、時間のところに "undefined"と出てくるんです。 何がいけないんでしょうか・・・。
277 :
276 :2006/03/10(金) 19:43:38 ID:7+pl+8hz
かいつまむとこんなです。 this.onEnterFrame = function() { nowDate = new Date(); v_hour = nowDate.getHours(); v_minute = nowDate.getMinutes(); v_second = nowDate.getSeconds(); hour.text = v_hour; second.text = v_minute; minute.text = v_second;
>>276 }で閉じてminuteとsecondを逆にしてから
ほぼそのままコピペして動かしてみたけど再現出来なかったよ
279 :
Now_loading...774KB :2006/03/10(金) 20:24:18 ID:7+pl+8hz
なにげにみすってるw 括弧くくってないのは、重要だと思ったとこだけ抜き出したから見たいです。 もうちょいちゃんと書くと、 this.onEnterFrame = function() { nowDate = new Date(); v_hour = nowDate.getHours(); v_minute = nowDate.getMinutes(); v_second = nowDate.getSeconds(); v_minute = f_checkDigit(v_minute); v_second = f_checkDigit(v_second); hour.text = v_hour; second.text = v_second; minute.text = v_minute; }; function f_checlDigit(num) { if (num>10) { newNum = "0"+num; } else { newNum = num; } return newNum; }
f_checlDigit
281 :
Now_loading...774KB :2006/03/10(金) 21:37:31 ID:7+pl+8hz
すいません。たびたびお邪魔します。 さっきみたいに携帯で動く時計を作ろうと書いたんですけど、Flash4では いけないみたいになるんです。 どうすればいいんですか? いちおう、こう書きました。Fla8では動くんですけどf^_^;
282 :
Now_loading...774KB :2006/03/10(金) 21:38:36 ID:7+pl+8hz
this.onEnterFrame = function() { myToday = new Date(); v_year = myToday.getYear(); v_month = myToday.getMonth(); v_day = myToday.getDay(); v_date = myToday.getDate(); v_hour = myToday.getHours(); v_minute = myToday.getMinutes(); v_second = myToday.getSeconds(); v_week = ["(Sun)", "(Mon)", "(Tue)", "(Wed)", "(Thu)", "(Fri)", "(Sat)"]; myYear.text = v_year; myMonth.text = v_month; myDate.text = v_date; myWeek.text = v_week[v_day]; if (v_hour<10) { v_hour = "0"+v_hour; } myHour.text = v_hour; if (v_minute<10) { v_minute = "0"+v_minute; } myMinute.text = v_minute; if (v_second<10) { v_second = "0"+v_second; } mySecond.text = v_second; };
283 :
Now_loading...774KB :2006/03/10(金) 21:40:25 ID:7+pl+8hz
てか、正確に言うと、年と月はへんちくりんになります^^;
FlashLiteで使える関数を調べなおしてきなさい
285 :
Now_loading...774KB :2006/03/10(金) 23:56:09 ID:TUdWVQBM
BulletML解析のFlash版ライブラリって無いでしょうか?
いつも参考にさせて頂いております。 FLASHを製作しているのですが、途中で止まってしまいます。 制御>シーンプレビューで見ると止まらず動いてくれるのですが、 パブリッシュし、html、swfと双方ある一定の場所で 画面が止まってしまいます。 画面が止まった時、音楽やアニメーション(キャラのまばたき)等は 動いているのですが、先へ進まないのです。 どなたか助言お願い出来ますでしょうか? 宜しくお願い致します。 (1)使用ソフト/バージョン:FLASH MX2004 (2)OSのVer: /WinXP / (3)作品の具体例がある場合はリンク必須 ※見て頂けるようでしたらflaファイルアップ致します。
上の286です。 書き込む所を間違えました! すみませんでした!
288 :
Now_loading...774KB :2006/03/11(土) 17:17:34 ID:t/lL4QmU
すいません、質問です。 Bitmapベースのシューティングの制作を考えているのですが、 その場合の処理の流れは、 1. dispose で stage の BitmapData を消去 2. stage に新しく BitmapData を定義 3. 自分、弾、敵の BitmapData を stage の BitmapData へ copyPixels で copy 4. 当たり判定チェック、消去等の処理 という感じでいいんでしょうか? 毎回 dispose でメモリごと消すのが良いのかが良く判らないもので…。
>>288 1枚物のビットマップでやるなら合成用、保持用の2つのビットマップ持っておいて、
キャラや弾が移動した箇所だけgetPixel、setPixelで書き換える方法でもいいんじゃないかな?
速度の検証はちょっとやってみないとわからない。
普通にスプライト感覚でムービークリップ使った方が早いかもしれない。
>>289 なるほど。
試しに3の描画の部分を
自分、弾、敵の MovieClip を生成しておき、
座標移動のみに変えたら bitmapData 書き換えよりも圧倒的に速度が上がりました。
getPixel と setPixels を使った書き換えという方法は
自分の技量では方法が思いつかなかったので試せていません。
当たり判定管理で敵側、自分側の2枚の bitmapData を比較し、
それぞれの描画後に各オブジェクト内で「相手側の bitmap エリアに接触しているか」
で判定を行う事で、当たり判定の軽量化が計れるかと思っていたんですが、
そもそもの描画で重いんじゃ本末転倒ですね…。
この辺難しいです。
どのボタンが何回クリックされたか知りたくて、 それぞれのボタンにon(press) でloadMovieでアクセス解析CGIを呼び出してみました。 このアクセス解析CGIは本来はhtml内に<img src="">で呼び出すタイプなので、 loadMovieではjpgも呼び出せるというので、試しにlaodMovieでCGIを呼び出したところ、 一応動いてログもとれました。 強引なやり方だとは思うのですが、このようなやり方をしても問題はないのでしょうか? 他に、長期間に渡ってボタンを押した回数のログをとる方法があればお願いします。
>>290 どんなシューティングゲームを作るのかにもよるけど、
当たり判定エリアは実際の絵よりもかなり小さく設定するのが普通だよ。
絵の内接長方形でも大きすぎるくらいだったりする。
たぶん、長方形同士か、点対長方形の判定で十分だと思う。
293 :
291 :2006/03/12(日) 17:51:19 ID:eAa3UYPv
急かして申し訳ありませんがどなたかご存知の方がおられましたら教えてください>< もしかして、javascriptを使って呼び出したほうがいいのでしょうか?
294 :
Now_loading...774KB :2006/03/12(日) 17:55:15 ID:xjfA0M8I
>>293 目的が達成されていて、何が問題なのか分からないんだが。
初歩的な質問ではずかしいんだけど 1フレームめのテキスト入力フィールド(変数t1)に atariと入力されたときだけ 第2フレームへ、それ以外は第3フレームに移動させるにはどうすれば?
>>293 LoadVars クラスを使うとか?
>>295 ボタンインスタンスに貼り付て。
on(release){
if (t1 == "atari"){
this.gotoAndStop(2);
}else{
this.gotoAndStop(3);
}
}
297 :
295 :2006/03/13(月) 00:18:07 ID:AruQ95mF
>>296 サンクス!できたできた。
thisを_rootにしたら動かんかったのだ(謎)
298 :
Now_loading...774KB :2006/03/13(月) 01:33:50 ID:ouTE3xmk
FlashMX2004を使ってインスタンスの色を変化させようとしています(水色→黄色)。 RGBを調べたところ、水色=0,255,255 黄色=255,255,0 なのでcnum = 255という 初期値を使って、onClipEvent (enterFrame) 内でmy_colorオブジェクトに対し my_color.setRGB((255-cnum)*Math.pow(255, 2)+255*255+cnum); cnum--; をさせましたが、インスタンスが緑色やら茶色やらに変化して落ち着きません。 どうしたものでしょうか?
299 :
298 :2006/03/13(月) 01:43:34 ID:oPNBgcl6
すみません。 FlashMX2004のカラーパレットを見ると水色→黄色への変化では 緑は必ず通りますね。 でも、茶色のほかに赤色にも変化します。ヒントをお願いします。
>>297 謎も何もパスが違うからでしょ。
>>298 setRGB()の中身は16進数で指定するようなので、
初期値を
r = 0; g = 255; b = 255;
として、
r += 4;
b -= 4;
my_color.setRGB(r << 16 | g << 8 | b);
で。
このままだと255超えたり0より小さくなったりするから適当なところで止める。
演算子( << とか | )の意味はヘルプに載ってる。
301 :
298 :2006/03/13(月) 02:00:33 ID:xoHtsIY4
>>300 ありがとうございます。試してみますが、その前に寝ます。
おやすみなさい。
( ゜ロ゜)え─────────!! おやすみなさい。
303 :
Now_loading...774KB :2006/03/13(月) 04:36:30 ID:eu9bVE6G
どなたかお願いがあります。
現在Windowsアプリケーション開発中なのですが、FLASHコンポーネントを実装しています。
つまりフリーソフトによくあるFLASH再生ツールのように、ダイアログ上でFLASHを再生する機能を付けています。
そこで、FLASH MXお持ちの方にお願いなのですが、ボタンを押下するとfscommandを外部に発行するような機能を
持ったswfファイルを作成していただけませんでしょうか?
テキストボックスで入力したコマンドと引数が出力されれば最高なのですが、さすがにそこまでは難しいお願いだと思うので、
コマンドと引数はテキトーに固定で結構です、それがつかめるかどうかのテストがしたいだけなのでなんとかお願いできませんでしょうか?
http://www.fumiononaka.com/TechNotes/Flash/FN0110007.html
304 :
Now_loading...774KB :2006/03/13(月) 04:40:11 ID:eu9bVE6G
305 :
298 :2006/03/13(月) 08:08:45 ID:Vu1Ai/EW
>>300 6:30に起きてWBC見てますw
setRGB(r << 16 | g << 8 | b) は、それぞれのパラメーターを
0〜255内にして水色→黄色への変色が出来ました。
有難うございます。
質問です。 AとBを単純に結合させる 例えばA=45でB=72だとすると4572が出力されるようにしたいのですが。
>>306 A = 45;
B = 72;
result = String(A)+String(B);
trace(result);
309 :
Now_loading...774KB :2006/03/13(月) 20:28:30 ID:j2qOZYqO
ソフト=FlashMX2004_ver7,OS=Win98SE オブジェクトを使った文字列処理の質問です。 まず2つのテキストフィールド(インスタンス名:tx1_obj,tx2_obj 変数名:tx1, tx2)に例えば12345,54321と入力します。次いで、それぞれの文字列イン デックスの0と4を抽出し、文字を合体させたもの(つまり、1+5→15,5+1→51) を表示したく思っています(まずはtrace表示)。 この前段階のオブジェクトを使った文字列処理は下記のASで成功しています が、自作のfunction(文字の抽出と合体)を用いたASが書けずに困っています。 そこで、アドバイスを願います。 成功したAS(下)はpo番目の文字列を表示するものです。どう細工したら良いで しょうか? フレームアクション tx1_obj = new String(); tx2_obj = new String(); ボタンアクション on (release) { tx1_obj = tx1; tx2_obj = tx2; t1 = tx1_obj.charAt(po); t2 = tx2_obj.charAt(po); trace(["t1,t2= "+t1, t2]); }
310 :
ilhb :2006/03/13(月) 20:29:29 ID:F9HZaNRO
■■■■■■■■■■■■■■■■ ■ ■ 違う板にコピペすると、四角の枠の中に ■ ■ メッセージとURLが現れる不思議な絵。 ■ ■ ■ ■ (その仕組みがリンク先に書いてある) ■ ■ ■ ■ ■ ■ ■■■■■■■■■■■■■■■■
>>309 こういうこと?
//t1 テキスト1
//t2 テキスト2
//po 抽出するインデックス
function Hoge(t1, t2, po) {
ret = t1.charAt(po).toString()+t2.charAt(po).toString();
return ret;
}
//例 - 結果 15
trace(Hoge("12345", "54321", 0));
312 :
309 :2006/03/14(火) 03:54:51 ID:ylDCjsG2
>>311 有難うございます。でもこれはちょっと違いますね。
今回の目的は、違う対象(オブジェクト)に対して同ーの関数を適用する
ことです。
例えて言うと、習字紙とダンボール紙があったとき、紙の種類は違っても、
それぞれの角と真ん中を切り取り張り合わせるような処理です。
元の質問ならば、12345 と abcde のインデックス0,4を各々取り出し
合体させる(1+5→15とa+b→ab)
これは、狭い意味でのオブジェクト指向のASになるかと思います。
引き続きアドバイスを願います。
縦横30pxの丸MCをattachMovieで0.1秒毎にステージにランダムに配置したものです。 乱数で出力される座標値を重複させないように、for文で重複チェック入れてます。 しかし、配置される丸の数が多くなったとき(例えば1000個) 乱数が重複しない確率が低下し、ムービー再生時環境によってはクラッシュする恐れもでてきますよね。 そうならない為には、どのような方法があるでしょうか? ↓がコードです。。
xMax = 10; yMax = 10; wSpn = 30; hSpn = 30; Sec = 0.1; tempArray = new Array(); cnt = 1; timerID = setInterval(fncmaru, Sec*1000); function fncmaru() { do { x = Math.floor(Math.random()*xMax); y = Math.floor(Math.random()*yMax); temp = String(x)+y; Check = false; if (cnt > 1) { for (i = 1; i < cnt; i++) { if (tempArray[i] == temp) { Check = true; break; } } } } while (Check); tempArray[cnt] = temp; _root.attachMovie("maru", "maruNew"+cnt, cnt); _root["maruNew"+cnt]._x = x*wSpn+10; _root["maruNew"+cnt]._y = y*hSpn+10; cnt++; if (cnt > xMax*yMax) { clearInterval(timerID); } }
すみません。 「これは、狭い意味でのオブジェクト指向のASに・・・ 」などと、知ったかぶり を書いてしまいました。 訂正します。
>>313 命名ルールを "maruNew"+x+"_"+y ってな感じにして
_root["maruNew"+x+"_"+y] != undefind で存在確認すれば
多少は軽くなるんじゃないかな?
上記の方法で判定回して50*50を試してみたけど
特に処理が重い感じも無くスムーズに動いてくれた
環境 cpu:Pen4 3GHz mem:512MB
>>316 for文使わない分、かなり軽くなりそうです。
アイデア、ありがとうございました!
>>313 根本的に、やり方が間違ってる。
重複させたくないんなら、最初っから『配置済みドット』からは選ばれないようにすべき。
全体の中からランダムで選んでるから、いちいちチェックしてやり直しが必要になる。
未使用ドットを扱う配列を作って、そこから選ぶようにすればいい。
// ↓こういう感じでナンバリングされたドットを扱うものとする。
// 1 2 3
// 4 5 6
// 7 8 9
// 未使用ドットの配列を作る。
var emptyArray = new Array();
for (var i=0;i<xMax*yMax;i++){ emptyArray[i] = i; }
// 使用済みドットの配列を作る。
var usedArray = new Array();
timerID = setInterval(fncmaru, Sec*1000);
function fncmaru() {
// 未使用ドットの中から、一つをランダムに選ぶ。
var index = Math.floor(Math.random()*emptyArray.length);
var value = emptyArray[index];// これがその具体的なドットの値。
var tmp = emptyArray.splice(index,1);// 未使用ドット配列から削除。
usedArray.push(tmp[0]);// 使用済みドット配列へ追加。この値はもうなにも使わないってんなら、この作業も不要。
var x = (value%xMax);
var y = (value/xMax);
_root.attachMovie("maru", "maruNew"+cnt, cnt);
(以下略)
}
こうすれば、選びなおしなんてことがそもそも不要で、確実に一定時間以内に処理が終わる。
あ、このコードのままじゃダメだな。 まあいいだろ、考え方さえ伝われば。
320 :
309&312&315 :2006/03/14(火) 07:20:20 ID:G3Qk8S9B
Q) 複数の対象に対して同じメソッドで処理を行う 改良したASが出来ましたので、改めて質問します。 2つの文字列 tx1 = "12345"と tx2 = "54321" の po1,po2番目の文字を 抽出して合わせる処理を目標にしています。 関数charMod()で求める出力は 0番目と4番目の組で、1+5→15,5+1→51です。 ボタンアクション on (release) { tx1 = "12345"; tx2 = "54321"; function charMod() { for (i=1; i<=2; i++) { return (_root["tx"+i].charAt(po1)+_root["tx"+i].charAt(po2)); } } t1 = this.charMod(po1, po2); t2 = this.charMod(po1, po2); trace(["t1,t2= "+t1, t2]); } これだとtraceでは15,15となり、for文が機能せず最初の方しか出ません。 アドバイスを願います。
>>320 関数の定義の仕方と引数、戻り値について勉強しる。
身近にヘルプで勉強できるよ。
>>320 returnで処理抜けるから2回目というのは実行されない
それ以前に何やりたいかイミフ
>320 t = textPickup(123, 1, 2); trace(t); function textPickup(a, i, ii) { return String(a).charAt(i)+String(a).charAt(ii); }
>>320 結局
>>311 でも何が悪いのかよくわからん。
意味が多少違っても理解していればその応用でいけるような。
320が根本的な勘違いか、説明間違いをしてるんじゃないかと思えるのだが大丈夫か?
returnもよく分かって無さそうだし。
一つの関数を作れば、引数の違いでオブジェクトごとの結果をだせるだろ?
それとも、複数のオブジェクトに対してforとかで同一処理をさせる方法がよくわからんてこと?
じゃぁ、一通り載せておきます for、return、releaseを使ってればいいでしょうか 私も中途半端でいまいちですがどうでしょう? on (release) { text1 = "fujikoChun"; text2 = "cyu-sitekure"; trace(textPickup(0, 8)); } onClipEvent (load) { function textPickup(a, b) { ans = new String(); for (i=0; i<2; i++) { ans += this["text"+(i+1)].charAt(a)+this["text"+(i+1)].charAt(b); } return ans; } } 汎用性がなくて気持ち悪いけど
お前が気持ち悪い・・
327 :
320 :2006/03/14(火) 20:10:38 ID:sid+r5ja
(309&312&315です)
>>321-325 レス有難うございます。参考にさせて頂きます。
上の自作関数charMod()をfor文で2回実行しているので、t1 = this.charMod(po1, po2);
と t2 = this.charMod(po1, po2); は不要ですね。失礼しました。
そもそもは、Javaのアルゴリズムのように、同じ道具で(関数で)違う対象(オブジェクト)
を処理できないものか?と思ったのが発端でした。 今回の例ではそこまでは必要無い
ようですので、次回改めて質問します。
久しぶりに危険な香りがする・・・
本人の思いこみが強いと危険だな…
>>327 > 同じ道具で(関数で)違う対象(オブジェクト)
> を処理できないものか?と思ったのが発端でした。
一応言っとくと、できる。つか、これまでに出てた例でもちゃんとできてます。
それが違うのだとしたら、使ってる言葉や指している対象がここにいる人たちと違う。
330 :
Now_loading...774KB :2006/03/15(水) 01:06:57 ID:zewspbd8
>>327 JAVAがかじりでもかけるんなら、
AS2方向で作った方が楽だと思うけれど。。
度々ご指摘有難うございます。 AS2.0の例文(例AS)を書いた本でお勧めのものはありますか? (特にCLASSの利用方法について)
>331 AtionScript2.0入門完全ガイド+実践サンプル AS1と2の基礎が載ってるからASに不慣れな人にも良いと思います。 CLASSを使うのがAS2なんで、どう書くか理解できます。 >同じ道具で(関数で)違う対象(オブジェクト)を処理できないものか? 結局この部分は、JAVAとASじゃ言葉の指す意味が違うの?
333 :
Now_loading...774KB :2006/03/15(水) 10:54:06 ID:ZT5T97ck
はじめてASを触る人間は Design BIBLE FLASH制作工房~ActionScriptで作る演出~ Design Bible よりも FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付] の方がいいですか?
初めて覚えるなら、一冊に絞らず最低2冊は買った方が良いよ。 一冊で分からない場合もう一冊で調べたりすると、理解が早くなる。
>333 あ、>331向けのコメントに意識が向いてたからちょいと説明が足りんかった 「他のスクリプトをやっているなら、 >AS1と2の基礎が載ってるからASに不慣れな人にも良いと思います。 」 ってことで。あくまでもAS2.0をどう使うかって事がメインです。 AS2.0を学ぶわけじゃないなら、他の本のが良いです。
AS2.0のことなら、まずhelpの「ActionScript 2.0 の学習」を読むといいです flash8以外で載ってるかはしらないけど。
337 :
Now_loading...774KB :2006/03/15(水) 13:04:49 ID:ANNq/j8Q
アクションスクリプトの初心者です。 ルートタイムライン上でdomain()を使って「swfファイルが、設置したサーバー上 からきちんと再生されてるか」を判定、trueだった場合・falseだった場合で、 それぞれ別々のラベルのタイムラインへ移動するスクリプトを書きました。 ですが、swfファイルが右クリックで早送りや巻戻しをされてしまうと困るので、 現在は、その一連の動きをムービークリップにまるごと入れることで、早送りや 巻戻しされた場合に対応しています。 この方法で問題あるでしょうか? また、わざわざムービークリップで包まなくても、早送り・巻戻しされた場合に対 応できる記述があったら教えていただきたいのですが… よろしくお願いします。
>>337 Stage.showMenu = false
339 :
Now_loading...774KB :2006/03/15(水) 13:19:55 ID:ANNq/j8Q
>>338 あぁ、そんな簡単な方法が…
ありがとうございました。
>>337 this.onLoad = function(){
domain();
}
とか
Stage.showMenu = false;
とか
menuView = new ContextMenu ();
menuView.builtInItems.forward_back = false;
menuView.builtInItems.rewind = false;
_root.menu = menuView;
的なこと?
時間を取得して午前はa、午後はbのムービーを表示させたいのですが 各ラベルへ飛んで最初の1フレームは表示するのですが続きのフレームが表示されません。 なにか根本的に間違ってますでしょうか? if ( nHour < 12 ) { gotoAndPlay("a") ; } else { gotoAndStop("b"); }
gotoAndPlay("b");
すみません変化なしです if ( nHour < 12 ) { gotoAndPlay("a") ; } else { gotoAndPlay("b"); }
>>341 =343
まだその続きが読み込まれてないんじゃないの?
345 :
Now_loading...774KB :2006/03/15(水) 14:14:17 ID:8dBOKDnr
いえAS消してムービーだけでテストすると最終フレームまで表示されるんです 恐らく連続して各ラベルの「最初のフレームに飛ぶ」を繰り返してる状態だと思うんですけど どうしたらいいのか分からんのです
>>337 その方法がベストです。
ダウンロードされてオフィシャルでないフラッシュプレイヤーでプレイされることもありますから。
>>341 全く関係ないかもしれませんが、Flash5以降では
this.gotoAnd〜
とした方が良いです。
348 :
Now_loading...774KB :2006/03/15(水) 14:23:46 ID:ANNq/j8Q
>>340 そうそう、今調べていたんですけど、いろいろメニュー表示設定できるん
ですね。ご返答どうもありがとうございます。
さすが物凄い勢いで解答してくれるスレw
あ、ローカル再生禁止しているわけね。
>>346 は無しで。
350 :
Now_loading...774KB :2006/03/15(水) 14:27:21 ID:ANNq/j8Q
連続書き込みすいません。348です。
>>346 そうなんですか。あぁ、そんな穴もあるんですね。
勉強になります。ありがとうございます。
すみません全部書かせていただきます week = new Array("日","月","火","水","木","金","土") this.onEnterFrame = function(){ var nDate = new Date(); var nMonth = nDate.getMonth()+1; var nDay = nDate.getDate(); var nWeek = week[nDate.getDay()]; var nHour = nDate.getHours(); var nMinutes = nDate.getMinutes(); var nSeconds = nDate.getSeconds(); tTime.text = ""; //テキスト内を空に // 月 tTime.text += nMonth+"/"; // 日 if ( nDay < 10 ){ tTime.text += "0"+nDay+":"; }else{ tTime.text += nDay; } //曜日 tTime.text += "("+nWeek+")";
352 :
Now_loading...774KB :2006/03/15(水) 14:33:43 ID:8dBOKDnr
// 時 if ( nHour < 12 ) { this.gotoAndPlay("a") ; } else { this.gotoAndPlay("b"); } if ( nHour < 10 ){ tTime.text += "0"+nHour+":"; }else{ tTime.text += nHour+":"; } // 分 if ( nMinutes < 10 ){ tTime.text += "0"+nMinutes+":"; }else{ tTime.text += nMinutes+":"; } // 秒 if ( nSeconds < 10 ){ tTime.text += "0"+nSeconds; }else{ tTime.text += nSeconds; } }
>343 this.onEnterFrame = function() で全部くくってるから。 いつチェックするか条件をつければいいんじゃない? 全部よみこんでから1回だけ実行するようにするとか。
354 :
Now_loading...774KB :2006/03/15(水) 14:56:14 ID:8dBOKDnr
>353 知識が無いので実際にどう記述したらいいのかわかりませんが なんとなく言われてることはわかるような気がしますありがとうございました
tTime.textの部分だけonEnterFrameでかこって閉じて、 00分00秒のときにアニメのチェックをさせる this.onEnterFrame = function(){ 〜 if ( nMinutes == 0 && nSeconds==0 ){ this.anime(); } } //アニメーション function anime(){ // 時 if ( nHour < 12 ) { this.gotoAndPlay("a") ; } else { this.gotoAndPlay("b"); } } 条件付けが甘いけどこんなかんじで。
質問です。 ムービークリップ「MC1」をattachMovieで生成します。 生成したMC1の中には pushkey = new Object(); pushkey.onKeyDown = function(){ this["f"+Key.getCode()](); } Key.addListener(pushkey); function f40(){ trace("check"); } というようにキーボードの↓(コード40)を押すとf40という関数が実行するように記述しています。 しかし実際に↓キーを押しても反応は無くonKeyDownの中でtraceを色々置いてみた所 this["f"+Key.getCode()] は「undefined」 Key.getCode()は「40」となり、 _parent.MC1["f"+Key.getCode()]()、_root.MC1["f"+Key.getCode()]()も「undefined」 となりますがこの二つだとf40の中の「check」は出てきます。 ifを使ってgetCode()で分岐させて実行する手もあるのですがどうしてthisで動かないのかが分かりません。 そういう仕様なんでしょうか?御教授お願いします。 使用ソフト FLASH MX2004 使用OS Windows XP HE
>>356 おれも昔まよった。
なんか相対パスだと動かないんだよね。
とりあえず動くからいつも絶対パスにしてる。
pushkey = new Object();
pushkey.onKeyDown = function() {
_root.MC1["f"+Key.getCode()]();
};
Key.addListener(pushkey);
function f40() {
trace("check");
}
FlashでHTTPS通信するときはScriptがどうこうじゃなくて SWF自体をHTTPSでアクセスすればOK?
バスケットのフリースローのミニゲームを作っているのですが、ボード、リングとの接触時に時々ボールがボード、リングに張り付きます。 どうも、速いスピードでぶつけたときのほうがそんな状態が発生しやすいようです。 (ボールのMCに) if(this.hitTest(_root.board)){ dx = dx * -0.6; dy = dy * 0.6; } このように記述しているのですが、何か問題はあるでしょうか?
重なったときに重ならなくなる場所lまで移動させればいい
>>357 なるほど、仕様っぽいですね。レスありがとうございました。
絶対パスとifを上手く使ってやっていこうと思います。
>>359 その計算だと例えば10ピクセルずつ移動していて、10ピクセル重なれば次のフレームで反対方向へ6ピクセルしか動かないので
また重なっていると判定が行われdxとdyに0.6がかけられ、どんどん絶対値が小さくなるので結果止まってるように見えるのでしょう。
適当にスイッチ用の変数を使って当たり判定は1度しか行われない、または数フレーム置いてまた当たり判定が行われる状態に戻るようにすればいいと思います。
>>356-357 × function f40(){
○ pushkey.f40 = function(){
ちゃんと呼び出す関数をオブジェクトのメンバに加えてあげなくちゃ。
364 :
359 :2006/03/15(水) 22:55:45 ID:dlcikidu
上手く行きました。 ありがとうございました。
365 :
Now_loading...774KB :2006/03/16(木) 02:01:47 ID:SCYTTIwP
FlashMX2004を使って多次元配列を作製し、複数の文章中のある文字 の位置を行列の形で格納しようとしてます。 多次元配列poの宣言は、フレームアクションで(つまり、swf開始時に) po = new Array(); ←文章1,文章2,文章3・・・格納用 po[txt] = new Array(); po[txt][gyou] = new Array(); ←要素[txt][gyou][retu]が作製された? で良いのでしょうか? また多次元配列の作製は、配列に配列を拡張する ような手順になりますが、po[0]とpo[0][0][0]は別の物として扱って良い のでしょうか?
>>365 それでOK.
ただ3次元以上の多次元配列は可読性が落ちるので、
まずクラスで実装できないか考えた方がベター。
367 :
365 :2006/03/16(木) 09:30:00 ID:kKLq2Wz9
>>366 Thxです。
上の質問は具体性に欠けていますので、実際のASで改めて質問します。
(ソフトはFlashMX2004)
メインタイムライン(フレームアクション)
po = new Array();
po[txt] = new Array();
po[txt][gyou] = new Array();
ボタンアクション
on (release) {
txt = 0;
gyou = 0;
retu = 0;
for (idx=0; idx<100; idx++) {
po[txt][gyou][retu] = idx;//0〜99を配列に代入
retu++;
trace("要素= "+po[txt][gyou][retu]);
trace(["gyou, retu= "+gyou, retu]);
}
}
上記のASで多次元配列(3次元配列)の作製を目指し、実行しましたが
要素=
gyou, retu= 0,3
のようにretuはカウントされますが、行列の要素は空の状態です。
間違いをご指摘下さい。
また、配列をクラスで実装する手順が(ググりましたが)分かりません。
こちらもお願いします。
>>367 po = new Array();
for (txt=0; txt<1; txt++) {
po[txt] = new Array();
for (gyou=0; gyou<5; gyou++) {
po[txt][gyou] = new Array();
for (retu=0; retu<10; retu++) {
//0〜9を配列に代入
po[txt][gyou][retu] = retu;
trace("要素= "+po[txt][gyou][retu]);
}
}
}
369 :
Now_loading...774KB :2006/03/16(木) 12:36:07 ID:045FV42L
変数を演算子として使うことはできるでしょうか?flash8を使ってます。 a=10; b=20; sign = <; trace(a sign b); 無理でしたら、演算子を切り替えるのによい方法があれば教えてください。 不等号を逆に出来れば助かります。よろしくお願いします。
>>369 演算子を切り替える条件で普通にif文書けばいいんじゃね?
>>362 なるほど!関数の定義について不勉強でした。ありがとうございました。
>>368 なるほど、for文の度に配列を拡張するのね。
[Comp.as} class Comp{ static function lessThan(a, b){ return a < b; }; static function greaterThan(a, b){ return a > b; }; static function equal(a, b){ return a == b; }; } [flaの中] hikaku = new Array(); hikaku[0] = Comp.lessThan; hikaku[1] = Comp.greaterThan; hikaku[2] = Comp.equal; a = 10; b = 20; for(i = 0; i < 3; i++){ trace(hikaku[i](a, b)); } 比較するための条件が多すぎてifで管理しきれないなら、 比較用の関数を用意しておいて、それを配列や変数にコピーして使うとか。
375 :
Now_loading...774KB :2006/03/16(木) 17:08:52 ID:mMVD71I7
MX2004を使っています。 ActionScript でムービークリップに色をつけるにはどうしたらいいでしょうか? オーサリング環境だと「プロパティ」の「カラー」で「着色」を選ぶ感じです。 試しにルートのタイムラインに mcmc というムービークリップをつくって、 ルートのフレームに mcmc.beginFill(0xFF0000, 100); mcmc.endFill() と書いてもダメでした。 教えてください。
376 :
375 :2006/03/16(木) 17:22:18 ID:mMVD71I7
若干近づいたのですが mcmc.onLoad = function() { my_color = new Color(this); my_color.setRGB(0xFF0000); } としても変わってくれません。 onLoad じゃなくて onPress にすると、 クリックしたら色変わってくれたので 中身は合ってるように思えるのですが。。。
MX2004ならsetTransform 8はColorTransform class
>>376 MovieClip.onLoadはライブラリ内のシンボルにリンクされるクラスに
記述されていなければ呼び出されません
379 :
Now_loading...774KB :2006/03/17(金) 15:51:28 ID:PR3GtjkD
ソフト=FlashMX2004 3次元配列の要素を参照する際のトラブルで質問です。for文で freq_val[ab][gyou][retu] = parseFloat(this["tx"+ab].substring(idx-5, idx+5)); trace(["ab, gyou, retu= "+ab, gyou, retu]); trace("要素= "+freq_val[ab][gyou][retu]); trace("freq_val[0][0][0]= "+freq_val[0][0][0]); retu++; を実行した時、最初の(ab, gyou, retu= 0,0,0 の)中身は、traceにより ab, gyou, retu= 0,0,0 要素= 452.0775 ←※ freq_val[0][0][0]= 452.0775 ←※ と、一致して正しいのですが、2回目以降で同じ ab, gyou, retu= 0,0,0 を 参照すると ab, gyou, retu= 0,0,1 要素= 1430.3091 freq_val[0][0][0]= undefined ・ ・ ・ freq_val[0][0][0]= undefined というように、452.0775という実数がundefinedになります。 原因は何でしょうか? なお、配列の作製にはクラス実装は使わず、freq_val[ab][gyou] = new Array(); の方法で配列を拡張しました。
なんでオブジェクト使わないの?
>>379 よく分かんないけど、
>>379 に書いている部分以外なんか間違いがあるんじゃないの。
後、2行目は読みづらいので、以下のようにしたほうがいい。
trace("ab, gyou, retu= " + [ab, gyou, retu]);
おそらく
>>379 の外側の部分の問題だね。
たぶん、
for(var ab=0;ab<max_hoge;ab++){
for(var gyou=0;gyou<max_mona;gyou++){
for(var retu=0;retu<max_giko;retu++){
freq_val[ab][gyou] = new Array();
>>379 のコード
}
}
}
ってなってるんじゃない?
これだと最内のループを回るごとに、newArray()によってデータが初期化されちゃうから。
もしそうなってるんなら、
for(var ab=0;ab<max_hoge;ab++){
for(var gyou=0;gyou<max_mona;gyou++){
freq_val[ab][gyou] = new Array();
for(var retu=0;retu<max_giko;retu++){
>>379 のコード
}
}
}
こうするように。
383 :
379 :2006/03/17(金) 19:45:43 ID:VROZOaQl
レス有難うございます。
>>381 この記述では
')' または ',' が必要です。trace("ab, gyou, retu= " + [ab, gyou, retu]);
というメッセージが現れました。どこに付けたら良いでしょうか?
>>382 この方法で
freq_val = new Array();
for(var ab=0;ab<max_hoge;ab++){
freq_val[ab] = new Array();
for(var gyou=0;gyou<max_mona;gyou++){
freq_val[ab][gyou] = new Array();
for(var retu=0;retu<max_giko;retu++){
>>379 のコード
では、全ての 要素= と freq_val[0][0][0]= でundefinedになります。一方
freq_val = new Array();
for(var ab=0;ab<max_hoge;ab++){
for(var gyou=0;gyou<max_mona;gyou++){
freq_val[ab] = new Array();
freq_val[ab][gyou] = new Array();
for(var retu=0;retu<max_giko;retu++){
>>379 のコード
ならば、freq_val[0][0][0]= 452.0775が繰り返し出るのですが、
trace("要素= "+freq_val[ab][gyou][retu]); は、gyouが+1された時から全て
undefinedになります。
ご指摘のように、
>>379 の記述以外に問題があると思っていますが、原因の箇所が
分かりません →目下探索中です。
>>382 trace("ab, gyou, retu = " + [ab, gyou, retu]);
もしくは、
trace("ab, gyou, retu = " + ab + ", " + gyou + ", " + retu);
>gyouが+1された時から全てundefinedになります。
そりゃそうだ。
上のは、アンカー間違えた
>>383 あて
多分やりたい事は以下のようなことなんだろうけど、
自分のプログラムの何が間違っていたのかを自分で見つけて理解しないと、また同じ所で引っ掛かるよ。
var max_hoge:Number = 10;
var max_mona:Number = 10;
var max_giko:Number = 10;
//1次元目を初期化
var freq_val :Array = new Array();
for (var ab:Number = 0; ab<max_hoge; ab++) {
//2次元目を初期化
freq_val[ab] = new Array();
for (var gyou:Number = 0; gyou<max_mona; gyou++) {
//3次元目を初期化
freq_val[ab][gyou] = new Array();
for (var retu:Number = 0; retu<max_giko; retu++) {
//値を代入
freq_val[ab][gyou][retu] = ab + ", " + gyou + ", " + retu + "の値";
//デバッグ
trace("ab, gyou, retu = " + ab + ", " + gyou + ", " + retu);
trace("要素= "+freq_val[ab][gyou][retu]);
trace("freq_val[0][0][0]= "+freq_val[0][0][0]);
}
}
}
>>385 Thxです。このレスはZZ-Topの曲を聴きながら書いています。
基本の形は分かりましたが、現在のASへの適用で苦労しております。
進捗があり次第、報告します。
387 :
? :2006/03/18(土) 10:36:12 ID:SmaZDDQ7
質問を フラ板かDreamweaverスレにすべきか迷ったので両方に質問させていただきました。 フラ2004でつくったボタン(swfファイル)を DreamweaverMx2004上のフレーム挿入し、それのボタンを押すことでリンク画像を 分割した隣のフレームに表示させたいのです。 Dreamweaver内でのリンク先設定は「ターゲット」で指定出来るのですが、 フラッシュのアクションスクリプトをボタンに仕込む時 どういうスクリプトを仕込むべきかわかりません。(スクリプト初心者です) on(release){ getURL("〜.html","cont"); } と、フラッシュ側でやれば、新規のブラウザ表示をさせられるのですが、 リンクの表示先を、Dreamweaver上の特定フレーム上に表示させる方法が知りたいのです。 シンプルなHTMLではなく、Dreamweaver上のことなので上手くターゲットを指定できません。 よろしくお願いします。
ラーメンを食べたかったんだけど、 どの店がいいかわからなかったので、 市内のお店全部に出前を頼みました。 「来来軒」のラーメンが食べたいラーメンだったので、 ほかの出前は持って帰ってくれといいました。 みんな騒ぎ出しましたがよく分かりませんw >387の日記より
389 :
Now_loading...774KB :2006/03/18(土) 12:21:54 ID:0Lbn5gjU
ASでムービークリップを縦横だけじゃなく、 自由変形させる事って出来るんでしょうか?
>387 on(release){ getURL("〜.html","フレーム名");}
(3次元配列の要素の参照) うまくいきました。有難うございます。
392 :
Now_loading...774KB :2006/03/18(土) 17:09:33 ID:IuFF2xYl
upload() メソッドについて質問します。
リファレンスの説明には、
> URL にパラメータを追加することにより、upload() 呼び出しを使ってサーバーにデータを送信できます
> (たとえば、
http://www.myserver.com/upload.cgi?userID=jdoe )。
と書かれていますが、このように upload() メソッドを使ってファイルと変数を同時にサーバに送った場合、 cgi を呼び出した場合 userID の内容 "jdoe" はどのように読み出せばいいのでしょうか?
php で受け取ろうとした場合、
$_FILES['Filedata']['name']
$_FILES['Filedata']['size']
などのファイルに関するデータは読み取れるのですが、追加したパラメータは
$_FILES['useID']
$_POST['userID']
などと記述してみても変数の内容を読み出すことができませんでした。
upload() メソッドを利用してファイルとその他の変数を同時にサーバに送信するにはどのようにすればいいのでしょうか?
よろしくお願いします。
393 :
387 :2006/03/18(土) 17:35:17 ID:Qb6Y4QjR
389さま できました。ありがとうございました。
>387 で、結局マルチして他は放置か 解決したならレスつけとけ それと、もう二度とマルチすんなよ
質問させてください あるアクションのゲームを作っていてプレイヤーがAキーを押すと攻撃します ゲームの方は問題なく、効果音をつけていこうと思いライブラリにmp3ファイルを読み込んでリンケージに書き出し、以下のように書きました this.createEmptyMovieClip("msc1", 20); SE1 = new Sound(msc1); SE1.attachSound("SE1"); //check SE1.start() 読み込んだかチェックするように再生してみた所、再生できているのですが プレイヤーとなっているMCの中で this.onEnterFrame = function(){ if(Key.isDown(65)){ _root.SE1.start(); 他の動作 } } としたのですが効果音が再生されません。MCの中からは再生できないのでしょうか? 御教授くださいorz
397 :
392 :2006/03/19(日) 03:34:22 ID:choHGK4m
>>396 ご指摘の通り
$_GET['userID']
を試してみたら解決しました。ありがとうございました。
円“○”を徐々に拡大させるMCを作りたいのですが MCの_xscale,_yscaleを拡大させると、線も同時に太くなってしまいます。 線の太さが一定のまま円を拡大させる方法を教えてください。 (極細線で円を作ると線の太さは変わりませんが、極細線より太い線にしたいのです) お願いします。OSはXPでMX2004です。
>>399 うあー。むずかしそう。それに重そうな気も。
(すばやくたくさん出したいので・・・)
もっと簡単にできる方法ないでしょうか?
>>400 drawOvalを引数付けて呼ぶだけなのだが、、、
402 :
Now_loading...774KB :2006/03/19(日) 07:44:06 ID:n0ejxtNO
asのことじゃないけどシェイプトゥイーンだっけ? それ使えばいいんじゃないですか?
403 :
Now_loading...774KB :2006/03/19(日) 10:02:21 ID:TESW9ST5
スクリプトの基本を全て教えろ
404 :
Now_loading...774KB :2006/03/19(日) 10:07:07 ID:s9NzHwp5
マスクってどうやって使うの?
>>396 そうですかorz
どこかしら自分がミスしているようなのでもう一度スクリプト見直してきます
失礼しました
407 :
Now_loading...774KB :2006/03/19(日) 18:29:00 ID:cWyxGSPf
外部データー(SWF)を読み込むやり方なんですが、 ボタンに on (release) { loadMovie ("読み込みたいデータ.swf", "ターゲットのインスタンス名"); } このようにして。 本の通りにやっているのですが、読み込むには読み込むのですが ターゲット枠から離れた場所に読み込んでるんですよ;; 同じ様になった方、もしくは詳しい方! 解決法をお願いします。
>>407 ターゲットのMCの中心点を左上にしてみたら良いかと思われ。
409 :
Now_loading...774KB :2006/03/19(日) 20:03:31 ID:cWyxGSPf
407 お返事ありがとうございます。 直りませんでした;;
>>409 適当なjpgファイルをロードしてみてもずれるようなら、MCの位置が悪いのかも。
ものすごく、初歩的な質問で申し訳ないのですが、 MCのx方向の長さ、y方向の長さを表すにはどうしたらよいのでしょうか? _xと_yでx座標とy座標を表す、みたいな感じで。
MC._width MC._height
413 :
411 :2006/03/19(日) 21:24:59 ID:fxaGPCGA
414 :
Now_loading...774KB :2006/03/19(日) 22:54:50 ID:cWyxGSPf
407です。
>>410 親切に教えていただいてありがたいのですが。
位置が悪いというのは・・・えっと・・・どうゆうことなんでしょうか?
物が落下するときや、ぴょんってはねる様な動きを簡単に実現する方法ありますか? MCを手でいじって座標を決めるより、AS使って計算結果使ったほうがソレっぽい動きになると思うのですが。 わざわざenterframeとかで制御するのが手間です。 なにか簡単にできる知恵ありますでしょうか? MX2004使っています。
>>415 1フレーム目で問題なし
要はm_se01をサウンドオブジェクトにしてそこにattachSoundでサウンドを生成してるの
>>417 enterframeで制御しないでASをいじろうという考え方が間違い
>>417 単純に一連の動作をclass化なりカプセル関数化するなりして、
設定情報書くだけで動作するようにするのが普通だけど、
君じゃまだmズ浮かしいかも…。(ごめんね)
まずはもう少し勉強してみてはどうですか?
>417 コンポーネントを作る。 重力、跳ね返りとかプロパティを設定して、 数値を入力出来るようにする。 どっかのサイトに落ちてるかもな。 あとな、「わざわざ」ってのは否定的な言葉 人に聞くときにはつかうんじゃねーよ、ボケ
>>417 class化してsetIntervalだな。
物の落下や落下時の跳ね返り等は物理学の基礎であってプログラムにおいても座標制御の基礎。
その程度で質問しているようでは・・・この先微妙。
それ以前に
>>1 の約束もまともに守れないので論外。
動的なカスタムクラスのインスタンスを作るにはどうしたらいいでしょうか。 どなたか教えてください。下のようなコード試しましたが駄目でした。 var className:String = "myClass"; var instance = eval("new " + className + "()");
clickflg = false; if ( clickflg = true ){ trace('ok'); } これを実行すると思いっきりOKってなるんですが なぜですか?
425 :
Now_loading...774KB :2006/03/20(月) 05:21:15 ID:CCpVPWwd
>424 clickflg == true
>423 なんでそんな事がやりたいのかが気になる。。
>>423 var instance = new (eval(className))();
>422 あのなぁ、使う場面を考えろっていってんだよボケ わざわざ○○するのは大変ってのは、○○の愚痴を言ってるわけだろ? 人に頼むときに愚痴をいってんじゃねーよ しかも質問内容が漠然とした何も考えてない雰囲気を出しているから、 なおさら、こいつ使えねぇ人間か?。って判断されまともに相手にされない。 主旨がFlashの技巧を知りたいってわけだろ?最初から言えよ。 やさしく教えてくれる人が出てくる可能性もあるのに。 文章はリアルと違って勘違いされやすいから、仕事のメールじゃ気をつけろよ
>>428 あなたのほうがウザいとみなさん思ってるんじゃないですかね
気に障るならレスしなくて結構
>>418 ありがとうございます。
ということは、普通に使うサウンドみたいにステージに読み込まなくていいみたいですね。
ありがとうございました。
厨の質問に厨が答える
437 :
Now_loading...774KB :2006/03/21(火) 00:17:47 ID:nlLo2uwQ
すみません質問させてください。 ステージサイズ 550×400 の状態で trace(Stage.height) すると 300 と出てしまいます。 この場合は 400 と出てほしいところですが、そうなりません。 原因はどこにあるでしょう? どなたかご教授願います。 当方 win2k Fla var8 です。
438 :
Now_loading...774KB :2006/03/21(火) 00:21:50 ID:nlLo2uwQ
プロファイラを開いてたからでした。 自己解決しました。
439 :
Now_loading...774KB :2006/03/21(火) 02:46:09 ID:GGzqb9W/
初心者です。よろしくお願いします。 WinXPでFlash8を使用しています。 FlashLite1.1用で、数字オブジェクトを使った デジタル時計(ローカルでなくサーバ時間適用)を作りたいのですが、 getTime()の記述が分かりません。 表示は「10 10」(十時十分)という感じにしたいです。 試してみたのですが、分の表示が00〜10の間、 00 01 02 〜 08 09 10 が 00 10 20 〜 80 90 10 と表示されてしまいます。 解決策を教えてください;
>>439 サーバーから時間を得ている部分のASを見ないと解らん
441 :
439 :2006/03/21(火) 03:56:15 ID:GGzqb9W/
hours = fscommand2("GetTimeHours"); hour1.num = substring(hours, 2, 1); hour2.num = substring(hours, 1, 1); min = fscommand2("GetTimeMinutes"); min2.num = substring(min, 1, 1); min1.num = substring(min, 2, 1); こんな感じです。
>>441 戻り値は数値だからそれ使ってこんな感じでできる。
サーバー時間かどうかは謎。携帯内蔵時計の時間だと思うが。
hours = fscommand2("GetTimeHours");
shours = String(hours);
if(hours<10){
shours = "0" add shours;
}
trace(shours);
443 :
439 :2006/03/21(火) 08:33:52 ID:E0u8HAw2
数字はオブジェクトで作成しているのです。。 表示もそのオブジェクト1/2/3/4/5/6/7/8/9/0 を表示させたいのです。
444 :
Now_loading...774KB :2006/03/21(火) 08:35:13 ID:427qU2Pn
>>443 数字オブジェクトってなんだかわからんが、上記でshoursに整形された2桁の文字が
入るからそれをsubStringするなりすればいいのでは?
数字オブジェクトのプロパティは文字?数字?
446 :
439 :2006/03/21(火) 09:09:45 ID:E0u8HAw2
出来ました!!本当に有難うございました。
質問させてください。 ブラウザで初めてswfを読み込む場合はgetBytesメソッドでタイムラインを制御し ローディングムービーを流せますが、2回以降の場合は キャッシュされて ローディングムービーがカットされますよね。 「もしキャッシュされていたら、このMCを再生する」というような方法はありますか?
>>447 ローディングムービーが終わった後に読み込み完了かどうかの判定を入れれば良いのでは?
読み込まれてなかったらそのまま待たせるということで。
449 :
モマ :2006/03/21(火) 11:33:53 ID:rtuT2D0z
押すとムービーがスタートするボタンはどう作るんですか?
450 :
モマ :2006/03/21(火) 11:35:18 ID:rtuT2D0z
押すとムービーがスタートするボタンはどう作るんですか?
>>450 onClipEvent(load){
this.onRelease = function(){
_root.gotoAndStop(飛びたいフレーム番号);
};
_root.stop();
}
ボタンにしたいムービークリップのアクションこれを入れておけば、
ショボイけどとりあえず動くよ。
あと質問です。
ボタンがたくさん並んでる状況で、一時的に全てのボタンを無効化したいときって、
どうやりますか?
グローバル変数で「無効/有効」フラグでも立てて、
全てのボタンにif文噛ませるような方法しかないんでしょうか。
xp, FlashMX2004です。
もう少しスマートな方法があれば知りたいので教えてください。
453 :
451 :2006/03/21(火) 13:04:26 ID:MiUublho
あ、ちょっと追記します。 あるMCの配下にある全てのボタンに対して、 まとめて MC.enabled = false; みたいなことができたらいいなって話です。
>>451 ボタンの可視不可視を切り替えるんじゃだめ?
btn_array = new Array(_root.btn1,_root.btn2,_root.btn3);//配列にボタンのターゲットパスを入れておく
function allDisable(){//無効化したいときはこの関数を呼ぶ
for(i=0;i<btn_array.length;i++){
btn_array[i]._visible = false;
}
}
function allEnable(){//有効にしたいときはこの関数を呼ぶ
for(i=0;i<btn_array.length;i++){
btn_array[i]._visible = true;
}
}
//脳内動作確認
>>444 ちょービックリしたってばYO!。。。orz
>>450 on (press) {
this.play();
}
>>451 for (i in MC) {
this[i].enabled = false;
}
MC - あるMCのインスタンス名
typeofとか使ってボタンかどうか判断した方がいいかも。
ボタン側からonEnterFrame時に毎度フラグをチェックする
というようなひどいコードを書いてたとこでした…。
>>454 onEnterFrameなんかよりそちらの方がスマートでイイ感じっぽいですね。
助かりました。どうもです。
>>456 ボタンは全てAS内で作ってるので、定義時にボタン管理用配列に追加しようと思います。
アドバイスどうもです。
てか、上位のクラスから下方に向かって命令飛ばせば良かったんですね…。
下方から上位にお尋ねする方法しか考えてなかったorz
>>451 ボタンをボタンシンボルじゃなくムービーシンボルにする。
で、
onRelease onReleaseOuteside onKillFocus
onRollOver onDragOver
onRollOut onDragOut
を設定する。
そして、必要無いときは全てのイベントを消す。
イベント設定するMCをクラス/オブジェクトで管理して、
その中にイベント設定、消去用の関数を作っておけば良いと思うよ。
失礼します。 XML.sendメソッドを使い、サーバ側(PHP)にデータを渡したいのですが、 マニュアルやポケットリファレンス等を読んでも、 POSTメソッドを使用して指定されたURLに送ります、 としか書いておらず、PHP側でどのようにして受ければよいのかが わかりません。 ($_POSTの内容を確認しても空でした・・・) どなたかご教授いただきたくお願い致します。
>>459 POSTで送るって書いてるんだから$_POSTで受け取れると思うけど。
PHP側で print_r($_POST); (だっけ?)
をやっても何もなかったら、swfから何も送られてないとか。
ヘルプに書いてあるサンプルやってもだめ?
早々のご返答ありがとうございます。 ヘルプにも書籍にもFlash側のしかかいてなくて。 あまりにも初歩的なことだから書いてないのかなとも思ったのですが。 php側も、XMLファイルを読み込むことについては色々と記述が あったのですが・・・。 ちなみに、教えていただいたように、php側でprint_r($_POST);をしたところ、 Array ( ) とだけ表示されました。 (Flash側でtraceした際には正しく内容が出ています)
462 :
Now_loading...774KB :2006/03/22(水) 01:45:41 ID:0LPUNPhb
Action Scriptで現在Arrayを継承した、CGIConnector というコンポーネントを作成しているのですが、検索してもわからないところがありましたので、ご教授お願いします。 myCGI = new CGIConnector(); myCGI.addItem(new Object()); っとオブジェクトを追加した後、 myCGI[0]=new Object({name:"foo"}); とした場合、↑での変更をmyCGIでキャッチする事はできるでしょうか? イベントディスパッチャー... function dispatchEvent(evnt){ trace("Event Occured"); } っとやってディスパッチャーが呼び込まれないのは確かめましたTωT 当初の浅はかな考えでは、ディスパッチャーでModelChangedのUpdateItemsイベントを呼び出すと思っていたのですが・・・。 ちなみに、 myCGI[0]=new Object({name:"foo"}); //myCGIのアイテムが変更された場合 が呼ばれたときに、CGIConnectorの方で自動で_updateCGIを呼び出したいと考えています。 よろしくお願いします。
クラスからdispatchするの? てかinitializeしたり、リスナーつけたりしてる?
464 :
Now_loading...774KB :2006/03/22(水) 02:22:39 ID:0LPUNPhb
早速ご返答ありがとうございます。 基本的に、listnerは設定していません。が、ほぼ全ての関数はsuperを使いArrayの関数を呼び出しています。 Arrayを継承しているので、自動でやってくれると思っていたのですが。 ちなみに、DataProviderでUIコンポーネントとつなげているのですが、 myCGI[0].name = "changed"; っとやったところ、UIコンポーネントでは変更されます。 リスナーの登録は呼び出しクラス毎に設定したくはないので、(っというのも自動でupdateCGIにアクセスしたいので) CGIConnectorでのdispatchEventで処理したいのですが・・・。 ちなみに今調べていたところ、UIコンポーネントへの変更はArrayでのEventではなく、DataProviderによるイベントの可能性もありますので・・・ Arrayに独自のEventを設定してみたいと思います。
465 :
462 :2006/03/22(水) 02:46:06 ID:0LPUNPhb
>>462 >>464 追記です。
dispatchEvent関数内に
super.dispatchEvent(evnt);
trace("Dispatcher Called: "+evnt.type+","+evnt.eventName);
を追加したところ、アイテム追加時(addItem(obj)を呼び出したとき)に
Dispatcher Called : modelChanged,addItems
は表示できましたが、アイテム変更時
myCGI[0].name = "changed";
にはdispatcherは呼び出されませんでした。
それなのに、UIコンポーネントでは変更されるということは・・・
うぅ〜ん、わかりません。仕様で変更時はイベントを投げないのでしょうか??TωT
466 :
462 :2006/03/22(水) 02:53:43 ID:0LPUNPhb
>>465 さらに追記です。
myCGI[0].name = "changed";
に変わり、myCGI.replaceItemAt(9,obj);
をおいたところ、
Dispatcher Called : modelChanged,updateItems
がされました。
データコンポーネントとしての完成度は低いですが、とりあえずはreplaceItemAt関数でアイテムの更新とCGIの呼び出しを行いたいと思います。
有難う御座いました。
ASbroadcasterは試したの?
468 :
462 :2006/03/22(水) 03:51:17 ID:0LPUNPhb
>>462 仕様上、呼び出し元のクラスではなく、
CGIConnector側でのイベントハンドルをしたかったため、
broadcaster.addListenerではなく、
class CGIConnector extends Array{
function dispatchEvent(evnt){
//ここでイベント分岐処理
}
}
をしたかったのです。○| ̄|_
説明不足で申し訳御座いません。
予想では、Arrayでは myCGI[0]=new Object();というような要素自体の変更にはイベントを監視しているのですが、
配列要素の要素(myCGI[0].name等)にはイベント監視がついていない為と思います。
これの解決策として、watchを設定してあげればいいと思うのですが・・・
次回時間のあるときにやってみようと思います。^^;
有難う御座いました。
>>461 こんなかんじだとおもう。
hoge.var = "abc"
hoge.load(url)
<php
$_POST['var'];
?>
470 :
469 :2006/03/22(水) 07:59:09 ID:a6dOhgJX
hoge.sendAndLoad(url); だった
質問です。flash8です。よろしくお願いします。 擬似配列が長いので変数に入れて短くしようとしましたがうまくいきません。 aの参照先が変わってるのがいけないと思うのですが、 どう書いたら良いのか分からないので、お知恵をお貸しください。 test1 = 10; i = 1; a = this["test"+i]; a += 1; trace(test1);//結果=10←11になって欲しい
test1 = 10; i = 1; a = this["test"+i]; a += 1; this["test"+i] = a; trace(test1);
473 :
Now_loading...774KB :2006/03/22(水) 12:23:07 ID:PnUNnbQs
>>471 なりません。
なぜなら、aにはtest1が3行目で参照ではなく、
test1の値の参照がされました。
それにプラス1をしているのはaに対してなので
aは11になるが
test1は10のままです。
でもそれはaやtest1が変数だから(だとおもう)。
オブジェクトのプロパティにしてやれば参照されると思うので大丈夫でしょう。
var test1:Object = new Object();
test1.test = 10;
i = 1;
var a:Object = this["test"+i];
a.test += 1;
trace(test1.test);
こんなかんじでたぶん大丈夫。
ヒント:プリミティブ
プリミティブ関係ねーよバーカ
>>475 ヒントの意味がわからないらしいな。
その項目でググるなり勉強するなりしてみれと言う意味。
君も勉強するべきだね。
477 :
Now_loading...774KB :2006/03/22(水) 13:18:17 ID:TDKQOL92
外部テキストファイルからASを変更するASってありませんかー;
478 :
471 :2006/03/22(水) 13:26:44 ID:1/NvfX79
>472 これを試してみます >473 今後の参考になりそうです ありがとうございました。
>>477 外部テキストファイルの内容によって、条件分岐が良いと思います。
actionscriptコーディングのベストプラクティスとしてマニュアルに 1フレーム目の1個目のレイヤーに全部記述しろってあるけどみんなそうしてる? ムービークリップそれぞれに書いたほうが後で使い回ししやすそうな気もするんだけど やめたほうがいいのかな。
1フレーム目の1個目のレイヤーに #include "・・・"
あとムービークリップはClassで記述
1フレーム目にはASを書かずに2フレーム目から書けって読んだことがある。 俺はそれぞれのムービークリップに書きたい方だな。 完成して現在の作業と関係なくなったASは見たくないから。
484 :
Now_loading...774KB :2006/03/23(木) 00:13:49 ID:TBz4ci/D
includeが一番いい asファイル分ければ管理もしやすい
質問です。よろしくお願いします。 FLASH8ですが、 BitmapDataを外部イメージを読み込んだMovieClipに、 MovieClip.attachBitmap()で接続した場合、 BitmapData.draw()で画面に複数描画するには 描画数だけオブジェクトを作成して、BitmapData.Clone()で 複製する必要があるのですか?
そのボタンを押すと一番上の階層の1フレーム目に戻したい場合のACは on (press) {_root.gotoAndPlay(1);} で合ってる? 何か上手くいかないよ。
487 :
485 :2006/03/23(木) 02:53:54 ID:1zBlM4vP
さぁ!みんなで this.stop(); を使おう!!! キングワロス
490 :
Now_loading...774KB :2006/03/23(木) 13:52:33 ID:eeU+EVEo
stop();だけでいいよ
>>490 俺のMXでは、 this.stop();じゃないと作動しない.....
関数の中だから?
493 :
Now_loading...774KB :2006/03/23(木) 14:35:06 ID:kOQsYbpq
>>488 環境を書きましょう。
やりたいことを正確に書きましょう。
答えも正確にかけません。
もしボタンをクリックしたら、
配置されているMCの中のフレームを移動させたいのなら
on(release) {
_root.MC.gotoAndStop(Math.floor(Math.random()*x)+1);
}
MC内では、
1フレーム目にstop();を書いてとめとけばいいと思う。
>>493 そういうことじゃなくて
MC内のフレーム移動で処理するのがいいのか、
MCを別々にして表示・非表示やattachMovieとかにするのがいいのか、
SWFにしてloadMovieがいいのかとか、
どういう手段が一番いいのか聞いてるんじゃないのかな?
そうであれば、作る物によって最良は変わると思うけどね。
_root.attachMovie(caraname_l, caraname_l + no_l, 10); で、ムービークリップを作成しているのですが、 これですと、caraname_lに設定してある動画が再生されません。 attachMovieで作成したムービークリップはスクリプトで指定しないと、 座標の移動をできないのでしょうか?
>>495 > 動画が再生されません。
と
> 座標の移動をできないのでしょうか?
これは同じ事を言ってるの?
497 :
495 :2006/03/23(木) 16:04:49 ID:SyMVJlRR
>>496 いえ、
> 動画が再生されません。 は、
もともとアニメーションのあるムービークリップ ※1
> 座標の移動をできないのでしょうか? は
※1をattachMovieで呼び出してきたものです。
シンボル名がcaraname_lなら "caraname_l"でアタッチ。変数なら文字列が入っているか内容をチェック。
>>497 > _root.attachMovie(caraname_l, caraname_l + no_l, 10);
> で、ムービークリップを作成しているのですが、
> これですと、caraname_lに設定してある動画が再生されません。
特にstopとか入れてなければ動きそうな気がするのだが・・・
> attachMovieで作成したムービークリップはスクリプトで指定しないと、
> 座標の移動をできないのでしょうか?
その通りできない。基本的に0,0にアタッチされるので
指定した位置で初期化したい場合は
attachMovieの4つめのパラメータに
_root.attachMovie(caraname_l, caraname_l + no_l, 10,{_x:100,_y;100});
みたく指定する。
500 :
495 :2006/03/23(木) 16:57:24 ID:SyMVJlRR
>>498 ムービーのデバック画面を見ると、インスタンスは作成されているみたいです。
作成されたインスタンスは画面に表示されているのですが、
アニメーションしてくれなひのです。
>>500 caraname_l + no_lで複数のMCをアタッチしてるみたいだけど、深度が10固定なのが
気になる。
t_mc=_root.attachMovie(caraname_l, caraname_l + no_l, 100+no_l);
t_mc._x=100;
t_mc._y=100;
みたくもできるよ。
502 :
495 :2006/03/23(木) 17:03:32 ID:SyMVJlRR
>>499 ありがとうございます。そうしてみます。
MCの座標をスクリプトで制御するより、アニメ入りのMCを持ってきた方が
いいかなと思ったのですが。
他のMCの方向キーによる移動が利きにくかったので。
503 :
495 :2006/03/23(木) 17:06:34 ID:SyMVJlRR
flash内にRSSの内容を取り込むには XML.load() であとはxmlと同じように処理すればいいんでしょうか?
>>488 大変失礼いたしました
環境は WinXP/FlashMX2004
やりたいことは 一つのボタンでランダムにフレームに飛ばし、そこに置いたMCを再生させたい
です
上記のページを参考にしたAS
on(release) {
_root.MC.gotoAndStop(Math.floor(Math.random()*x)+1);
}
で試したのですが、したいようにできませんでした
>>494 質問の仕方がおかしく誤解を招いたこと、申し訳ありません
507 :
Now_loading...774KB :2006/03/24(金) 00:13:56 ID:4ohBDsdm
最近Flashを始めた物ですが....setIntervalで動ごかしているMCオブジェクトがあり、 それをclearIntervarが書かれているボタンオブジェクトでrollOverで止めて rollOutした時にまた動かすのにはどうしたら良いでしょうか?教えていただけませんか?
>>507 まず、Flashを起動して自分で作ってみろ。
話はそれからだ。
509 :
Now_loading...774KB :2006/03/24(金) 00:21:15 ID:4ohBDsdm
508さんへ 作ったんですが、どうしても一旦止まったオブジェクトが動いてくれません。 ifとか使ったんですが...
>>507 function Hoge(){
//MCオブジェクトを動かす処理
}
id = setInterval(Hoge,1000);
をフレームに書いて
on(rollOver){ clearInterval(this.id) }
on(rollOut){ id = setInterval(Hoge,1000) }
をボタンに書く。
511 :
Now_loading...774KB :2006/03/24(金) 00:41:11 ID:4ohBDsdm
ありがとうございます。明日学校でやってみます。
4フレーム分ウエイトを作りたいのです。 スクリプトを教えてください。m(__)m VBとかだったら、Sleep(1000)とか使えるけれど、flashはどうすればいいのか。。
513 :
Now_loading...774KB :2006/03/24(金) 01:40:20 ID:DEqPlmLq
>>512 //フレーム数で
this.stop();
var wait = 4;
this.onEnterFrame = function(){
if(wait--==0) this.play();
}
//時間で
this.stop();
var waitTime = 1000;
var s = this;
var sid = setInterval(function(){s.play();clearInterval(sid);}, waitTime)
514 :
Now_loading...774KB :2006/03/24(金) 05:20:11 ID:uwBhvl8c
質問です。 カスタムクラスでコンストラクタに設定可能なプロパティはどういったものがありますか?
>>514 意味がよくわからん、どういう事やりたいのか例示してくれ。
コンストラクタの引数とかってことなのかな。
自由変形にチェックを入れるとすべてのオブジェクトに自由変形が適応されてしまいますが 自由変形のチェックを外す(解除)にはどうしたらいいですか?
517 :
514 :2006/03/24(金) 09:23:33 ID:tJdRM648
>>515 すいません、コンストラクタにはどのイベントハンドラメソッドも使用可能でしょうか?
menu10.btn5._y=0; ↓変数を使って擬似配列で表示したいのですが、どう書けばいいのでしょうか? i=10;ii=5; this["menu"+i].this["btn"+ii]._y =0; これだとエラーです。よろしくお願いします。
519 :
518 :2006/03/24(金) 10:05:20 ID:3ONisHjd
this["menu"+i]["btn"+ii]._y =0; でした。失礼しました。
>>517 いまいちよくわからんが、例えばMCのイベントをクラスでとりたいなら
class AA extend MovieClip{
function onEnterFrame(){...}
.....
}
なんてやるってことかな
>>518 MCが_rootにあるなら_root["menu"+i].....でやてみて
訂正:extend--->extends
522 :
Now_loading...774KB :2006/03/24(金) 12:19:28 ID:KGYXrgmh
今ダンシングおにぎりを作ってるんですけど、 例えば左矢印の複製スクリプトでは、 if (le_dac[_root.les]==_root._currentFrame+150) { _root.les++; cunt++; if (cunt>=200){cunt=0;} copnam="le_s"+_root.les; duplicateMovieClip("_root.le_s",copnam,980+cunt);//「980+cunt」←深度の事 } で、その上に桜が舞って、矢印をみにくくしようとします。 // 複製元のインスタンス名は「sakura」 counter++; //カウンターに1を足す if (counter > 100) { counter = 1; } // カウンターが100を越えたら1に戻す instance_name = "sakura" + counter; sindo = 10000000 + counter;//桜が舞い散る複製スプライトの深度 sakura.duplicateMovieClip(instance_name,sindo); とします。 深度を見てみると桜の複製スプライトのほうが手前になるはずです。 しかし、どんなに桜の複製スプライトの深度を手前にしても、 矢印のほうが上になってしまいます。 何故でしょうか?教えてください。
524 :
514 :2006/03/24(金) 15:08:02 ID:DPlGzIwn
>>520 すいません。
継承元のクラスの振る舞いをスーパークラスで取り決めしたくて
たとえば
class Oya{
speed = 5;
function Oya(){
this.onEnterFrame=function(){
if(this._x>=550){
this._x=-120;
}
functionGo (){
this._x +=speed;
}
}
とした場合、フレーム1にfuctionGoをイベントハンドラメソッドでトリガ元のボタンでト呼び出すようにように
したのですが、継承先のクラスでうまく動作しません。
functionGoに直接、スーパークラスの if 部分を記入すればいいのですがスーパークラスで取り決めしたいのです。
どうすればいいでしょうか。
525 :
514 :2006/03/24(金) 15:11:00 ID:DPlGzIwn
あ、すいません、functionGoの部分はクラス定義以下で書かなきゃいけないですね。
526 :
514 :2006/03/24(金) 15:12:40 ID:DPlGzIwn
あ、冒頭部分が継承元の振る舞いじゃなくて継承先の振る舞いでした、訂正します。
527 :
514 :2006/03/24(金) 15:16:38 ID:DPlGzIwn
また、まちがいました、functionGoのところです。 class Oya{ speed = 5; function Oya(){ this.onEnterFrame=function(){ if(this._x>=550){ this._x=-120; } } functionGo (){ this.onEnterFrame =function(){ _x +=speed; } }
528 :
514 :2006/03/24(金) 15:18:13 ID:DPlGzIwn
あぁ、落ち着きないな自分でも… functionGo (){ this.onEnterFrame =function(){ this._x +=speed; } } でしたごめんなさい。
>>514 良くわかんないけど、親クラスのメソッドの動作を拡張したいのかな?
親のメソッドは super 演算子で呼び出せるから、オーバーライドされた
メソッドから親クラスのメソッドを希望のタイミングで呼び出せばいい。
this.onEnterFrame =function(){
_x +=speed;
super.onEnterFrame();
}
ってな感じ。
530 :
512 :2006/03/24(金) 19:58:35 ID:jxxt0hZ0
soundという名前のレイヤーに プロパティ→サウンドで音声ファイルを割り当てて 音声を再生しています。 例えば10フレーム目で音声再生を開始して 20フレーム目で音声再生が終わるまで停止(その場でループ?)して 音声再生が終わったら21フレーム目移行を再生…という場合に 20フレーム目に書くASがわかりません。 サウンドオブジェクト名 = new Sound();でやる方法はわかるのですが こういう場合の制御はどういうふうに書けば良いのでしょうか?
>>531 Sound.onSoundComplete
>>531 レイヤーに音楽を配置してるならそういうことは無理。
曲の長さ分フレームが必要(ストリーミングの場合)。
そういうことしたいならSoundクラス使う。
判定用のMCが、何と重なっているか知る方法を探しています。 hitTestだと重なる相手を予め決めておかないと駄目ですよね? 被判定MCが50種類くらいあるので大変かなと。 他にあるでしょうか?flash8です。よろしくお願いします。
>>534 一定のインスタンス名+数字で処理
for (i=1; i<=50; i++) {
if (this["item"+i].hitTest(player)) {
trace("item"+i+"HIT");
}
}
536 :
Now_loading...774KB :2006/03/26(日) 00:35:06 ID:KPhWnuv/
すいません質問です。 イメージファイルの背景をマスクで抜き描画したい場合、 ファイル側で抜き設定したものを使う必要があるのですか?
537 :
536 :2006/03/26(日) 05:45:21 ID:KPhWnuv/
あー解決しました。ごめんなさい。
538 :
534 :2006/03/26(日) 17:20:03 ID:nPMOFsg7
>535 どうも重くなるようなので、仕組みから変えてみます。 ありがとうございました。
539 :
Now_loading...774KB :2006/03/27(月) 15:39:54 ID:vHLDcbI+
フレームの再生について質問です。ソフトはFlashMX2004を使っています。 最初にrootのタイムライン・フレーム1を以下の様にします。 this.stop(); pageC = 0; 次いで、ボタンアクションとして、1回押すとフレーム1〜32が再生するように ASを書きました。 on (release) { pageC++; switch (pageC) { case 1 : this.play(); if (this._currentframe=32) { this.stop(); } trace("pageC= "+pageC); break; } } しかし、この記述では、traceでpageC=1と出るものの、ムービーが開始され ません。どのように修正すればいいでしょうか?
=
541 :
539 :2006/03/27(月) 15:59:56 ID:vHLDcbI+
542 :
539 :2006/03/27(月) 16:49:41 ID:Wtrkan4w
if (this._currentframe=32) を if (this._currentframe==32) と修正したところ、再生は始まりましたが、希望のフレーム(32フレーム目) で止まらず、最後までイってしまします。 どう修正すべきでしょうか?
ちょっと自信ないけど on (release) { ってマウスボタンを離したときに発動だよね この処理だと32フレーム目ちょうどに離さないとstop しないんじゃないか? if (this._currentframe>=32)にしたら良いかも
544 :
Now_loading...774KB :2006/03/27(月) 18:06:51 ID:cPXLbeNq
>>542 >>543 の言うとおり、その記述だとon(release)の時しか動かない。
別に33フレ目以降の部分が関係ないものだとするなら
32フレ目にstop()書いたほうが早い気がする。
33フレ以降もなにかの条件で必要となるなら、if文で分岐するとか。
545 :
Now_loading...774KB :2006/03/27(月) 22:15:04 ID:FlixF6M2
はじめまして。 マウスイベントで、進んだ先のフレームにある インスタンスにムービを挿入するということをやっています。 下のように書いているのですが、 反応しません。 on(release){ _root.gotoAndPlay(3); _root.mv.loadMovie("test.swf"); } フレームに進む(3フレーム)のは、確認出来ているんですが ムービの挿入(test.swf)が反応しません。 なにか間違っているのでしょうか? よろしくお願いします。
546 :
Now_loading...774KB :2006/03/27(月) 22:16:59 ID:FlixF6M2
ちなみに、2フレームより前は、mvというインスタンスはありません。
_root.gotoAndPlay(3); で処理が3フレーム目に移ってるじゃん。
>>545 loadMovieした時点でmvがないんじゃないの?
trace(_root.mv)で確認。
549 :
124 :2006/03/27(月) 23:58:19 ID:xSWj733z
functionの実行の順番を思うように制御できないんですけど、どうすれば良いでしょう? その部分だけ書けば、 v_result1 = f_comparison(v_charLength, char); f_resultExpression(v_result1); です。 f_comparisonの実行結果を反映させて、f_resultExpressionを実行したいんですが。。。 f_comparisonの中でも多少めんどい処理するんで、そっちが終わる(始まる?)前にf_resultExpressionが 実行されちゃうんです。 traceして、実行の順番を見たんですが、たぶんf_comparisonが具体的に始まる前にf_resultExpressionが 実行されてるみたいです。 回答まってます。m(__)m
ASnative(a,b)() っていろいろできるらしいんだけどどんなときに使うの
>>549 詳しいことは知らんけど、順番に実行されるはずだと思うんだけど。
その2つの関数を定義しているとこと呼び出してるところは全部同じ階層?
f_resultExpression(f_comparison(v_charLength, char)); にしたり、
f_comparison関数の最後にf_resultExpression関数を呼び出したりしてみては?
>>550 使わない。
552 :
550 :2006/03/28(火) 01:47:01 ID:9YMNsiW3
ttp://takopus.ru/swf/smk03.html この煙の表現の作りかた載ってる所や、参考になるような所はどこか無いでしょうか?
toyoya Bbのサイトのメニューボタンにもこのような表現が使われているのですが
どの様にすればよいのか気になって・・・
lienToで描いた物をビットマップ化し、エフェクトを掛けてたりするんでしょうかね?
554 :
Now_loading...774KB :2006/03/28(火) 11:02:11 ID:1eD4h4ug
>>549 f_comparison()
f_resultExpression()
の詳細求む。特に戻り値。
ついでに君の環境。
ActionScript1.0ならもしかしたらだめかもよ。
すみませんおしえてください。 1つのレイヤーに2つのキーフレームだけがあるFlashを作りました。 キーフレームにはそれぞれボタンがあり、押すことでキーフレーム間を遷移します。 それぞれのフレームの処理をまとめたく、1つだけフレームを持つレイヤーを追加し、そこにActionScriptをまとめることにしました。 ここで分からないことが出てきました。 イベントハンドラメソッドを使えばボタンのイベントを定義できるはずなのですが、うまくいきません。 フレーム1にあるボタンのイベントハンドラは動作するのですが、フレーム2にあるボタンのイベントハンドラが動作しません。 thisだとフレーム1だけしか反応しないのかと思い、フレーム名を付与してみましたがダメでした。 ----- this.nextPage_button.onPress = function() { gotoAndStop("frame2"); //これは動作する } this.prevPage_button.onPress = function() { gotoAndStop("frame1"); //動作しない } ----- frame2.prevPage_button.onPress = function() { gotoAndStop("frame1"); //やっぱりこれも動作しない } ----- 別フレームのイベントハンドラメソッドを定義するにはどうすれば良いのでしょうか。 環境はWindowsXPSP2+FlashMX2004(7.2)です。 ご存知の方、よろしければ教えてください。
>>555 空白フレームを追加すればいいんじゃね?
557 :
555 :2006/03/28(火) 14:34:46 ID:2mhJo2Pk
>>556 ActionScriptを記述したレイヤーのフレームを2つのキーフレームに掛かるようにするということでしょうか?
キーフレームはそれぞれ1フレームずつなので、それに掛かるようにActionScriptのレイヤーのフレームも2フレームにしてみました。
しかし結果は変わりませんでした。
もしかしてフレーム1に記述したActionScriptからはフレーム2のオブジェクトに干渉できないのでしょうか?
>>557 prevPage_buttonはフレーム1にはないのか?
だとしたら、存在していないオブジェクトには
アクション設定できないと思う
559 :
555 :2006/03/28(火) 14:46:10 ID:2mhJo2Pk
>>558 thisはフレーム1を指すという事でしょうか。
とすれば、フレーム1からフレーム2のオブジェクトを触るにはどうすばいいのでしょうか。
560 :
555 :2006/03/28(火) 14:46:51 ID:2mhJo2Pk
書きかけで送信してしまいました。再送します。
>>558 フレーム1に記述しているため、thisはフレーム1を指すという事でしょうか。
とすれば、フレーム1からフレーム2のオブジェクトを触るにはどうすばいいのでしょうか。
561 :
Now_loading...774KB :2006/03/28(火) 15:14:06 ID:1eD4h4ug
>>560 ファイルアップしたほうが早いんじゃない?
562 :
* :2006/03/28(火) 15:50:37 ID:BVLfqtTF
>>543 ,544
Thxです。
on(release)のswich文でフレーム移動制御を試みましたが、煩雑&誤動作
が あり、これは諦めました。結局フレームアクションのonEnterFrameでの
if (this._currentframe==pageC*押した回数)にしたところ、うまくイッた ので
これで進めました。
細かい所は未だですが、今回のフレーム制御のswfをUpします。
http://www.uploda.org/uporg348866.swf
563 :
562 :2006/03/28(火) 15:54:45 ID:BVLfqtTF
うげっ・・・・・ 名前が汎用名(*)になっていた。
>>560 thisはフレーム1とか2じゃなくて、ここではそのMC(タイムライン)なんだが
そもそも、いない人にむかって話しても通じないってこと。
たとえば、1時間目の授業を休んでる山田君に、「2時間目に答案出せ」といっても
聞こえてるわけない。
2時間目に出席した山田君に「答案は?」ときいても「ハア?」となってしまう。
クラスを使うとか、1フレームの時点で非表示にしておくとか、2フレーム目にアクションを書くとか
好きなように工夫する。
>>560 最初に書いた555のASをコピペして動作させた。
3つめのは書き方が論外だから上の2ついてだが
普通に動いたぞ?
flash8を使ってます。よろしくお願いします。 mc1.mc2を複製して、_root.mc3をつくりたいのですが、 どうすればいいのでしょうか? duplicateMovieClip(mc1.mc2,"mc3",1); ですと、mc1.mc3が出来てしまいます。 trace(_root.mc3)//結果:undefined あと、 duplicateMovieClip関数と duplicateMovieClipメソッドがありますが、 どう使い分ければいいのでしょうか?
メソッド=関数
568 :
566 :2006/03/28(火) 19:16:42 ID:NEeP08sd
>567 ヘルプを見ると書式がちがうんで使い所がちがうのかな?と。 ・関数/使用できるバージョン : Flash Player 4、ActionScript 1.0 duplicateMovieClip(target:String, newname:String, depth:Number) : Void ・メソッド/使用できるバージョン : ActionScript 1.0、Flash Player 5 public duplicateMovieClip(name:String, depth:Number, [initObject:Object]) : MovieClip 関数の方はFlash Player 4だから、もう使わないほうがいいって事でしょうか? どっちも複製できるから、別にいいんですけどね〜^^;
>>568 yes
元の質問については、階層を越えた複製は不可能です。
>>555 nextPage_buttonが1フレーム目にあって
prevPage_buttonが2フレーム目にある。
で、そのASを1フレーム目に書いているんだよね?
そのASを書いた時点(1フレーム目)ではprevPage_buttonまだでてきていないので
this.prevPage_button.onPress = function(){}を書いても動作しない。
どうすればいいのかというと、そのASを2フレーム目に書く。
>>562 32フレーム目で止めたいって話はどこいった?
571 :
549 :2006/03/28(火) 21:00:12 ID:XqA36nuN
詳しく書けばこんなです。遅くてすいません。長いので分けます。 function f_singleSearch(char) { trace("検索モード確認-SINGLE"); v_charLength = char.length; v_result1 = f_comparison(v_charLength, char); f_resultExpression(v_result1); } function f_comparison(num, char) { trace("function comparison 正常起動"); _root.loadVariables("SearchData.txt"); _root.onData = function() { trace("SearchData.txt正常読み込み完了。"); v_resultArray2 = f_judgeAll(num, char); return v_resultArray2; }; } function f_judgeAll(num, char) { trace("function judgeAll 正常起動。"); v_resultText1 = f_judge(st_yuki, sr_yuki, num, char); v_resultText2 = f_judge(st_walkC, sr_walkC, num, char); v_resultText3 = f_judge(st_GikoC, sr_GikoC, num, char); v_resultText4 = f_judge(st_BlueCircle, sr_BlueCircle, num, char); v_resultArray = new Array(); for (f=1; f<=4; f++) { trace("function judgeAll for文実行開始。"); v_resultArray.push("v_resultText"+f); } return v_resultArray; }
572 :
549 :2006/03/28(火) 21:00:38 ID:XqA36nuN
function f_resultExpression(array) { trace("function resultExpression 正常起動。"); v_forNum = array.length; v_finalText = ""; for (c=0; c<v_forNum; c++) { v_finalText += array[c]; } } function f_judge(targetChar, resultChar, num, char) { trace("function judge 正常起動。"); v_forNum2 = targetChar.length-num; for (d=0; d<=v_forNum2; d++) { v_targetText = ""; for (e=d; e<num; e++) { v_targetText += targetChar[e]; } if (char eq v_targetText) { trace("検索にHIT確認。"); return resultChar; break; } } }
573 :
549 :2006/03/28(火) 21:03:15 ID:XqA36nuN
何か暴走して、検索のシステムみたいな作ろうとしてるんですけど、できなくてw 文字列を比較して、片方が片方に含まれているかどうか判別するメソッドみたいの ないですよね。。。
574 :
566 :2006/03/28(火) 21:28:19 ID:NEeP08sd
>569 なるほど。工夫してみます。ありがとうございました。
575 :
549 :2006/03/28(火) 21:33:49 ID:XqA36nuN
多少書き換えました。また1回使って書きます。 myStartSearchBT.onRelease = function() { f_singleSearch(v_text); } function f_singleSearch(char) { trace("検索モード確認-SINGLE"); v_charLength = char.length; v_result1 = f_comparison(v_charLength, char); f_resultExpression(v_result1); } function f_comparison(num, char) { trace("function comparison 正常起動"); _root.loadVariables("SearchData.txt"); _root.onData = function() { trace("SearchData.txt正常読み込み完了。"); v_resultArray2 = f_judgeAll(num, char); return v_resultArray2; }; }
576 :
549 :2006/03/28(火) 21:34:33 ID:XqA36nuN
function f_judgeAll(num, char) { trace("function judgeAll 正常起動。"); v_resultText1 = f_judge(st_yuki, sr_yuki, num, char); v_resultText2 = f_judge(st_walkC, sr_walkC, num, char); v_resultText3 = f_judge(st_GikoC, sr_GikoC, num, char); v_resultText4 = f_judge(st_BlueCircle, sr_BlueCircle, num, char); v_resultArray = new Array(); for (f=1; f<=4; f++) { trace("function judgeAll for文実行開始。"); v_resultArray.push("v_resultText"+f); } return v_resultArray; } function f_resultExpression(array) { trace("function resultExpression 正常起動。"); v_forNum = array.length; v_finalText = ""; for (c=0; c<v_forNum; c++) { v_finalText += array[c]; } }
577 :
549 :2006/03/28(火) 21:35:46 ID:XqA36nuN
function f_judge(targetChar, resultChar, num, char) { trace("function judge 正常起動。"); v_forNum2 = targetChar.length-num; for (d=0; d<=v_forNum2; d++) { v_targetText = ""; for (e=d; e<num+d; e++) { v_targetText += targetChar.charAt(e); trace(targetChar.charAt(e)); trace(targetChar); } trace(v_targetText); if (char eq v_targetText) { trace("検索にHIT確認。"); return resultChar; break; } } }
>>573 >文字列を比較して、片方が片方に含まれているかどうか判別
String.indexOf() じゃだめなん?
579 :
549 :2006/03/28(火) 21:43:36 ID:XqA36nuN
>>578 そんな便利なメソッドがあったのかw
知らなかったわw
とりあえず、実行の順番を変更したいです><
とりあえずvarつけるのを覚えれ。 あと、引数多いときはオブジェクトで渡すとか。
処理終わるまでループさせとくってのは?
>>549 f_comparisonの実行結果を反映させて、f_resultExpressionを実行したいって書いてるけどさ、
ひょっとして正しくは_root.onDataでデータを取得した後にf_resultExpressionを実行したいってことかな?
ソース見づらいし面倒くさいからちゃんと読んでないけど。
もしそうなら_root.onDataの中にf_resultExpressionを書けば済むと思う
あと、_root.onData の return v_resultArray2 も無意味。
それと、利用するクラスにどんなメソッドがあるかくらいは予めヘルプでざっと目を通しておくと無駄な苦労をせずにすむよ。
583 :
549 :2006/03/28(火) 22:15:14 ID:XqA36nuN
fmfm。ありがとうございます。 そのvarって言うのは何なんですか? 買った本には詳しく書いてなくて、いきなり使ってるので。。。 とりあえずは、一時しのぎ的に解決しましたが、、、。
584 :
Now_loading...774KB :2006/03/28(火) 22:34:00 ID:7l0oqOkS
flash MX(2004ではないです)でhtmlタグは使えないのでしょうか? テキストフィールドにhtmlでレンダリングにチェックを入れても駄目でした。 <b>ふと文字テスト</b> <img src="./hoge.gif"> そのままテキストで表示されてしまうんです。 バージョンアップするしかないですかね?
MXでもできたとおもう Mytext.htmlText = "<b>....</b>"; な感じで。
586 :
Now_loading...774KB :2006/03/28(火) 22:54:13 ID:7l0oqOkS
ありがとうです。 <b>タグは使えました。 <img>タグは無理っぽいですね
>>586 gifが無理なだけでimgタグ使えますよ。
imgタグで指定可能な画像はjpgです。
<img src=\"../test.jpg\">
「ActionScript 2.0 の学習」に、 「ActionScript は、できる限りタイムラインの最初か 2 番目のフレームに割り当てるよう」とありますが、 レイヤー1に、全体の制御 レイヤー2に、ボタンの制御 の様に、レイヤー別に書いても大丈夫でしょうか?
>>588 自分がそのほうが分かりやすいんだったらいいんじゃないの
591 :
588 :2006/03/29(水) 12:19:00 ID:/1kP4mxf
だよね!thx
>2 番目のフレーム の理由がわからん
>>592 メインのタイムラインの1フレーム目だけは特殊で、完全に読み込まれなくても再生される(ストリーミング仕様のため)。
以降のフレームはフレーム単位で完全に読み込まれてから再生される。
そのため1フレーム目はやや不安定。同じフレーム上にあっても、タイミング次第で
まだ命令したいインスタンスを読込・構成中なんてことがありえる。
だから先頭フレームを回避して、安全な2フレーム目からコードを書くのが良いとする人達もいる。
まあ、好きに書け。
594 :
Now_loading...774KB :2006/03/29(水) 13:17:47 ID:J9Fl1oBr
MC(A)に書かれた変数の値をMC(B)の変数に代入するには具体的にどのように記述したらよいか教えてください_(._.)_
>>594 値をMC(B)の変数=MC(A)に書かれた変数
パスがわからないなら、まずターゲットパスを学んで理解する
他のことはそれから
596 :
Now_loading...774KB :2006/03/29(水) 14:39:56 ID:2g4H2MPu
mac OS10.3.9 Flash 8 fscommand2のGetDateWeekdayを曜日を取得すると、 本来なら下記のような値が返ってくるはずなのですが、 日 0 月 1 火 2 水 3 木 4 金 5 土 6 何故か日曜が7になって返ってきます。 日 7 月 1 火 2 水 3 木 4 金 5 土 6 日付はシステム環境設定の"日付と時刻"で手動で変更しています。 その後ムービープレビューで確認しています。 (携帯端末では未確認) これはMacだけの現象なのでしょうか? ご存知の方よろしくお願いします。
Flash Media Serverで使うリモートSharedObjectの各種数的な上限に関する資料をどなたかご存じないでしょうか できれば以下の項目について、サーバスペックを無視した実装上の上限情報を知りたいです。 ・SharedObjectを作成できる数 ・1つのSharedObjectで抱えられる最大のデータサイズ(バイト単位) ・もしSharedObjectの作成数や最大データサイズが何らかの数値(割り当てメモリ的なもの)に依存するのであれば、その数値の取得方法 ・1つのSharedObjectにgetRemoteできる上限(NetConnectionの接続数は無視)
599 :
Now_loading...774KB :2006/03/29(水) 21:53:14 ID:2Z8CMmEg
テキストフィールドA テキストフィールドB を一つのスクロールバーで連動させることは出来ますか? XP MX スクロールバーは付属コンポーネントを使用してます。
601 :
Now_loading...774KB :2006/03/29(水) 22:55:25 ID:2Z8CMmEg
簡単に出来るのなら教えてさいm(__)m 説明が難解でしたら 気が向いた時でも・・
602 :
Now_loading...774KB :2006/03/29(水) 22:56:45 ID:2scMiY+V
FlashMX2004を使って、入れ子MC(B)から見た親MC(A)の縦・横の 大きさを知るASは、Bの記述として onClipEvent (load) { Xp = this._parent.width; Yp = this._parent.height; trace("Xp= "+Xp); } ではNaNになります。間違いのご指摘を願います。
>>599 それぞれのテキストフィールドにスクロールバーが付いていて、
片方のそれを動かしたらもう片方のも動くっていう風にしたら?
UIScrollBar.scrollPositionでスクロール位置を設定/取得できるから。
もしくは2つともMCにいれてそれをスクロールするか。
>>602 アンダーバーがない。 _width;
ちょっとお聞きします。 XMLオブジェクトを使ったことがなかったので、勉強がてらRSSリーダでも作ってみようと思ってました。 ですが、汎用的なRSSリーダのおおざっぱな流れを書いてみたところ、 1.読み込みたいRSSのアドレスが記述された"./config.txt"を読み込む。 これはいける。 2."config.txt"をバラしてアドレスをまとめる。 これもおkおk。 3.RSSファイルのアドレスをXMLオブジェクトに取り込む。 …ぽりしーって何?(´;ω;`) 4.RSSファイルって大抵EUCで書かれてるよね(flash内部はutf-8でしたっけ?) …('A`)自動でコード変換シテクレタリシナイカシラ? 4に関しては変換クラスなど無理矢理作ればどうにかなりそうですが、 3について、CGIを噛まさないでswfオンリーではできないでしょうか。 当方FlashMX ver7です。7はダメだが8ならできるよってのでも嬉しいです。 ご教授ねがいます。
605 :
599 :2006/03/30(木) 00:35:38 ID:H3qefHLN
ありがとうございます。 試行錯誤してみます〜!
>>604 XMLクラス使うならswfファイルと同じドメインに属しているアドレスしか読み込めないよ。
607 :
602 :2006/03/30(木) 00:57:16 ID:3UBTBufO
608 :
604 :2006/03/30(木) 01:04:02 ID:pCn6JTOS
>>606 あーやっぱりダメなんですか…。残念です。アドバイスどもです。
onClipEvent (keyDown) {if (Key.isDown(Key.SPACE)){ _root.attachMovie("A","A",100); }} onClipEvent (keyUp) { if (Key.UP(Key.SPACE)){ _root.A.removeMovieClip(); }} ↑失敗 スペースキー押してる間だけ"A"を表示させたいんですがどうすればいいんでしょうか
>>609 Key.UPなんてあった?
それ以前に押してる間ずっとattachされるよ。
キーリスナー使う。
>>610 押したら離しても描画されつづけます・・
連投すいません キーリスナーでググったら分かった気がするので頑張ってみます ありがとうございました
613 :
Now_loading...774KB :2006/03/30(木) 06:56:42 ID:HI209Tdq
TextFieldの行間を動的に指定したいのですが、 ○条件 ・TextField.StyleSheetオブジェクトは必ず使用したい ○現在の状況 ・TextField.StyleSheetオブジェクトは行間を指定するスタイルをサポートしていない ・TextFormatオブジェクトには行間を指定するプロパティが存在する ・TextField.StyleSheetとTextFormatオブジェクトをひとつのTextFieldに適用する事は出来ない どーすればいいの?
>598 ありがとうございます。 ただどう使ってよいのかわからいので勉強してきます。
actionscriptで連想配列ってどうやって作るんでしょうか? A[key]みたいなものです
複数の数字を小さい順にしたいのですが、どうすればいいのでしょうか? numAry = [100,90,5,0,-10]; よろしくおねがいします。
617 :
615 :2006/03/30(木) 10:20:15 ID:HgDgWc5S
連想配列は自己解決しました
>>616 numAry = new Array(100,90,5,0,-10); //配列作成
numAry = numAry.sort(); //小さい順にソート
618 :
617 :2006/03/30(木) 10:22:11 ID:HgDgWc5S
ごめんなさい 数字も文字列でソートされますね 100がうまくソートできないみたいです 失礼しました
あらためて
>>616 numAry = new Array(100,90,5,0,-10); //配列作成
numAry = numAry.sort(Array.NUMERIC); //小さい順にソート
>>616 numAry=numAry.sort(Array.NUMERIC)
でどう?
こんにちは このスレ初めてです。 FlashMX2004を使っています。 次のフレームへ行くASは何ですか? 教えてください。 お願いします。
>>621 nextFrame();
gotoAndPlay();
gotoAndStop();
play();
623 :
616 :2006/03/30(木) 16:44:45 ID:Gz/OfXb2
>619>620 見事に出来ました。ありがとうございます! パラメータ指定ってのがあったとは。勉強になります。
AAAって言う名前のムービークリップを 表示・非表示させるためのボタンに記載するACって on (press) {AAA.chgvisible();} であってますか?
>>624 そういうfunctionを定義済みでターゲットパスも正しければ、あってる。
626 :
Now_loading...774KB :2006/03/30(木) 23:03:21 ID:evaOO16t
>>100 私も同じことで悩んでました。
うまくいきませんね。
解決策がわかったら教えてください。
load1cara.onEnterFrame = f_1cara(load1cara, no, wait4); load2cara.onEnterFrame = f_1cara(load2cara, no, wait3); と書いて、fanctionのf_1caraを複数同時に実行させたいのですが、上手くいきません。 functionを同時に別物として実行させることは可能でしょうか?
>>628 そのやり方だと引数渡せないんじゃなかった?
setInterval(f_1care,1000,load1cara,no,wait4);
>>628 そのアレだと「f_1cara(load1cara,no,wait4)」の返り値が、onEnterFrameに代入されてる形になる
「f_1caraという関数をonEnterFrame扱いで動かしたい」のなら
load1cara.onEnterFrame=f_1cara;
と関数そのものを代入する。onEnterFrameでは引数を持たせられない(と思う)
引数持って回すやりかたがないでもないけど、説明めんどい
>>628 load1cara.onEnterFrame = function() {
f_1cara(this, no, wait4);
};
var txt = "abc"; var myArray:Array = Array(); myArray.push({txt : 10}); のようにした場合、 myArray[0].txtで10を得ることができますが、myArray[0].abcではundefinedになってしまいます。 myArray[0].abcで10を得るにはどうしたらいいでしょうか?
>>632 myArray.push({abc : 10});
634 :
632 :2006/03/31(金) 05:29:05 ID:kDw+TdQ/
>>633 ああ・・・説明不足ですみません
var txt = "abc";
のtxtの中身を例えばforループなどを使ってabc1、abc2、…と書き換えていったときに、
myArray[0].abc1、myArray[0].abc2、…とどんどん作れるようにしたいのです
>>634 var txt:String = "abc";
var myArray:Array = new Array();
var obj:Object = new Object();
obj[txt] = 10;
myArray.push(obj);
普通にインデックス管理の2次元配列の方が良いと思うが、 いちおうこんな感じで実現はできるよ。 var txt:String = "abc"; var myArray:Array = new Array(); myArray[0] = new Array(); for(var i=0;i<10;i++){ myArray[0][txt+i]=100+i; } trace(myArray[0].abc0); trace(myArray[0].abc8); for( i in myArray[0]){ trace(i+"="+myArray[0][i]); }
MX使ってるんですが、 function kansu(){ trace("UP"); } listener = new Object(); listener.onKeyUp = function() { if (Key.getCode() == 38) { kansu(); } }; Key.addListener(listener); としてもダメなので、_root.kansu();というように 絶対パスで指定してるんですが、 相対パスで指定するにはリスナーに関数を 設定しないといけないとどこかで聞いたことがあります。 どうやって設定するのでしょうか。 listener = function kansu(){} でもだめだし、 listener.kansu = kansu(); でもだめでどうしたらいいかわからないです。
639 :
Now_loading...774KB :2006/03/31(金) 15:57:42 ID:EeXUQEDj
ムービークリップの座標のってムービークリップの座標の中心になってるじゃないですか これを左上になるように出来ませんか
>639 F8押してシンボルの変換ウィンドウで、 基準点を決めるとこあるじゃないですかw
641 :
Now_loading...774KB :2006/03/31(金) 16:13:50 ID:EeXUQEDj
>>640 ありました
どうもありがとう御座います
既に基準点が真ん中に設定されているシンボルの基準点を変える方法はありませんか
そうじゃないと今まで作った奴また作りなおさくちゃいけないじゃないですか
>>641 シンボル編集で左上に基準点が来るように移動すりゃいいじゃん。
複数フレームを同時に移動するときは複数フレーム編集で移動すればいい。
そんなことよりも誰か
>>638 を何卒
>>642 listener.kansu=function(){trace("UP")}
つーか
>相対パスで指定するにはリスナーに関数を
>設定しないといけないとどこかで聞いたことがあります。
初めて聞いた。その嘘本当?
644 :
643 :2006/03/31(金) 16:40:45 ID:6kyd7XsB
ああ、
listener.onKeyUp = function() {
if (Key.getCode() == 38) {
this.kansu();
}
にしないと駄目かな?
なんにしても、
>>638 のままでも特に問題なく動作すると思うが
>>643-644 ああ、嘘だったのか・・・
リスナーで使う関数はリスナーで書かないとダメなんですね。
他で使ってる関数をリスナーで使うのに
絶対パスで書くのと解りにくくなるんで
嫌だったんですけどしょうがないですね。
ありがとうございました。
>>642 シンボル編集時のX,Y座標がシンボルの基準点になってるんですね
できました
ありがとう
>>622 ありがとうございます
nextFrame();
gotoAndPlay();
gotoAndStop();
play();
でできるんですね!
最初から配置してあるbox_mcの深度は負(-16383)になると思いますが、 これを正の階層までもって来ることは出来るでしょうか? 正の階層にあるmcとswapDepthsする方法以外で出来ればいいのですが。 よろしくお願いします。flash8です。
>>648 swapDepthsで深度指定するのじゃだめかね
650 :
648 :2006/03/32(土) 13:08:05 ID:wPfTkPL8
>649 どうもです。 表現上、最初から配置してあるbox_mcの下に、 body_mcを生成して消したいのですが、 _root.attachMovie("body","body_mc",1); body_mc.swapDepths(box_mc); body_mc.removeMovieClip(); これだとbody_mcが負にあるんで消せないので困ってます。 ダミーmcを正に作るのがベストなんでしょうかね?
651 :
648 :2006/03/32(土) 13:17:11 ID:wPfTkPL8
解決しました。 box_mc.swapDepths(1); です。お騒がせしました。
FLASH8 proで書き出しはFLASH player7 as2です。 flvファイルを3つ 対応するボタンを押した時に読み込んで再生しているんですが flvを読み込んだ時に 読み込んだflvの長さ(秒数)を取得する方法はありますか? また、再生中にシーンに配置したバーの長さを再生位置と連動させたいのですが 何か方法はありますか? ※コンポーネント・コントロール不使用で。
654 :
652 :2006/03/32(土) 15:23:36 ID:OvRdLDh6
>>653 気合いしかないとですか・・・。
というか、コンポーネント使わないと無理ですか?
>>654 コンポーネントなんて無くてもFlashは作れる
656 :
652 :2006/03/32(土) 15:40:38 ID:OvRdLDh6
>>655 >コンポーネントなんて無くてもFlashは作れる
作れるって言うのは、シークバーのようなものをコンポーネント無しで
FLASHplayer7を対象に作れるって事でしょうか。
onStatusのtimeで再生位置は取得出来るので、もう少しで出来そうなのですが、
flvを再生中のみtimeを再取得する方法はありますか?
forやwhileでonStatusのns.Play.StopまたはEmptyを取得するまでループさせてみたんですが、
再取得→再取得までタイムラグがないせいか無限ループになるのか落ちてしまいます。
解決方法はないですか?
コンポーネントだって一応ASで動いてるだろうから コンポーネントにあるものは普通に作れるんじゃね?
>>656 Flvの長さはFCSじゃないと取得できないっぽいよ。
stream_ns.onStatus = function(infoObject:Object) {
if (infoObject.code == "NetStream.Play.Stop") {
trace("再生終了");
}
};
これで再生終了は取得できるから、Flvの長さも取得できる。
ただ、一回最後まで再生しないとだめだけど。
メディアコンポーネント使っても長さは取得できない。自分で設定しないとだめ。
3つくらいならあらかじめFlv長さを設定しとけばいいんじゃない?
659 :
658 :2006/03/32(土) 19:53:12 ID:OvRdLDh6
>>657-658 どうもです。
実は今のところ長さは手動でセットしてます。
一回最後までっていうのは知りませんでした。
通りでtraceしても成功したり失敗したりするはずです。
で、コンポーネントがasで動いているのは分かるんですが
関連付けする対象ってMCになりますよね?
試しにコンポーネントにビヘイビアで関連付けしたら
videoオブジェクトが勝手にMCに変わっていました。
MCに変わると、videoオブジェクトまでのパスを変更しても
読み込み→再生は音声が出ているので出来ているようなんですが画面表示がされません。
むしろコンポーネント使って、画面表示されないのを何とかする方が早いですかね?
コンポーネント初めて使うんでワケわかりませんが、色々やってみます。
>>659 手動で長さをセットしてるなら、コンポーネント使わなくてもシークバーつくれるしょ。
661 :
652 :2006/03/32(土) 22:00:36 ID:OvRdLDh6
>>660 続けていっぱい書いてすまそ。
ちょっと負荷が高い気もするけど、一応動きました。
「一応」なんで晒すのアレですが書いときます。
※シーンに置いた再生一表示用バーMCに記述
onClipEvent (enterFrame) {
//timefullに数値がセットされたら(flvを読み込んだら)スタート
if (_root.timefull>0) {
_root.timenow = _root.obj_ns.time;
if (_root.obj_ns.time != _root.timefull) {
_root.bar_play._xscale = (_root.timenow/_root.timefull)*100;
}
}
}
変なとことか効率悪いとこあったら指摘してください。
662 :
Now_loading...774KB :2006/04/02(日) 03:56:05 ID:Q9OB+ChB
行き詰ってますorz どなたか助けてください 以下のmyDataクラスはphpからXMLを取得し、取得したデータを プロパティであるdataXmlの子要素に追加し保持させるものです。 class myData { public var dataXml:XML; public function myData() { var dataXml:XML = new XML(); var root = dataXml.createElement("root"); dataXml.appendChild(root); } public function loadData(param:String) { var loadXml = new XML(); loadXml.onLoad = function() { dataXml.firstChild.appendChild(this.firstChild); } loadXml.load("xml.php?param=" + param); } } XMLは間違いなく受け取れており、onLoadの中でのappendChildもうまくいってるんですが onLoadの外に出るとdataXmlはundefinedになってしまいます。 スコープの問題でしょうか。どなたかアドバイスおねがいします。m(_ _)m
663 :
Now_loading...774KB :2006/04/02(日) 07:31:09 ID:xGIXzqfp
FlashMX2004(Player6)で質問です。 Flashで音楽のインジケーター(dBメーター)は実現可能なのでしょうか? 目指すは、20年程前にコンポに搭載されていた程度のL・Rレベルメーター みたいなものです。
664 :
Now_loading...774KB :2006/04/02(日) 08:12:02 ID:AE6WyTaN
すまん、質問させてくれ winの8使ってるんだけど、単純なアクションスクリプトがわからない 全部で3フレームのムービーなんだけど 2フレーム目と3フレーム目にMCが配置されてて、 ランダムでそのどちらかを実行するスクリプトを書こうと思ってます。 で、1フレーム目のタイムラインに n = Math.floor(Math.random()*1); _root.gotoAndStop(n+2); stop(); って書いてあるんだけど、これじゃダメですか? F12で実行すると動くんだけど、htmlで開くと動かなかったり、 2フレーム目にしか止まらなかったりして参っています。 マクロメディアで公開してるランダム値返すスクリプト張っても動かないし。。 @スクリプト的にそもそも間違ってる A実行環境に問題がある どちらでしょうか、教えてください。お願いします。 パブリッシュはplayer8で、ファイル容量は250kb程度です。
>>664 Math.floor(Math.random()*1);
これだと0しか出ないよ。*2な
>>662 どうやってundefinedを確認したか、またloadできてるかを確認したかを
書いてくれないとわからん。
aa = new myData();
trace(aa.dataXml);でだめってことかな。
>>663 無理。自分の耳で聞きながらアニメーション作る。
>>664 読み込み終わってないとか、キャッシュのせいじゃね?
ランダムに飛ばすなら必ず最初に飛びたいフレームまでは読み込みが終わってることを確認する。
>>662 スコープの問題ですね。
解決するには、loadXml.target = this; としてloadXmlにメンバを追加して、
onLoad関数内で this.target.dataXml〜 という風にmyDataクラスのメンバにアクセスするか、
もしくはDelegateクラスを使う。
>>665 >>664 うまくいきました! ありがとうございます。
Now loadingをつけてなかったのがまずかったみたいです。
いやー、250kb程度なら大丈夫だろって思ってたのがまずかったようで…
こんな単純なスクリプトで嵌ると逆にパニックになるというか、、
とにかく助かりました。 ほんとにありがとう!
671 :
663 :2006/04/02(日) 15:14:34 ID:HAQHCi72
>>666 , 668
有難うございます。
「Flash ActionScript 逆引き大全550」を見ると、setPan/getPanのほかに
setTransform/getTransformがありましたので、これを使ってみます。
672 :
Now_loading...774KB :2006/04/02(日) 15:51:41 ID:Dl7l1Y9V
>>663 >インジケーター(dBメーター)
ってのはあの音に合わせてビヨンビヨンってなる
バーみたいなモノの事かな?
だとしたら
SwiftMP3を使えば出来なくもないってはなしを聞いたことがある。
SetPan/getPan 、 setTransform/getTransform
では作れない。
>>666 , 668,672
そうです。あの伸び縮みする棒です。
でも、setPan/getPan、setTransform/getTransform ではやっぱ不可でした。
SwiftMP3で検索すると
ttp://d.hatena.ne.jp/itm/ に、「今のACTIONSCRIPT2
は無理なようです。しかしながらACTIONSCRIPT3からは可能みたい。おーそれって
次バージョンのflashから組み込まれるようです」
とのことです。
携帯端末用のFlashを作ってます 深度も変えつつMCの複製をするにはどうすれば良いでしょうか? 関数duplicateClipを使うことぐらいしか分かりませんorz
FlashとCGIの連携を勉強したいのですが 良いサンプルやHPありませんか
Flash cgi 連携 でググる
>>676 ググッて最初に良いページが出るんですけど
サンプルのコードが分りにくいというか
キャストしてる型の説明とか一切無いので読み下せないんです
でもぐぐって出てくるサンプルでまともなのはあれだけなんで・・・・
「flash perl」 「actionscript perl」 「flash php」 「actionscript php」 ならまた違う結果になるかもよ?
ネットじゃなくて本にしてみるとか 「Macromedia Flash 5/MX」 ActionScript+CGI プログラミング Flash + CGIのプログラムを基礎から解説!
attachMovieしてランダムに配置したインスタンスを どれかひとつクリックした時に、 そのクリックしたインスタンスのインスタンス名を取得する いい方法ありませんか。 連番名のインスタンス名にしてforで回して、 マウスカーソルでhitTestしてるんですが これでいいのか疑問でしたので聞いてみました。 もっといい方法がありましたら教えてください。
681 :
680 :2006/04/03(月) 16:20:14 ID:VaUtTjzd
いまはこんな感じです。 this.onEnterFrame = function() { for (i=0; i<=4; i++) { if (this["btn"+i].hitTest(_root._xmouse, _root._ymouse, true)) { targetMC = "btn"+i; _root[targetMC].onRelease = function() { }; } } };
>680 takoのオブジェクトスクリプトに on(Release){trace(this._name);} takoをtakoMCに入れる。 attachMovieでtakoMC。 オブジェクトスクリプトが嫌なら、Class作るとか? これは良くわかんないw
trace(this._parent._name); こっちだ。すまそ。
どこの何がインスタンス名を受け取りたいのかわからんが attachMovieしたMCに、this.onReleaseで どっかの変数にthis._nameを代入するfunctionを定義するとかかね。 毎フレーム、ループでhitTest()してからファンクション定義は さすがに非効率では? つか、クリックでいいんだよね?
685 :
680 :2006/04/03(月) 18:11:18 ID:VaUtTjzd
>>685 MC内に書かなくてもいい、attachMovie()して出来たMCにfunctionを定義したっていい。
> onRelease = function()の前にインスタンス名が解るようにしたいです。
その理由は?
最初の話だと「クリックしたとき」にそのMCの名前がわかるってことだったよね?
ということは、クリックされるMCのonReleaseイベントハンドラ内に、自分の名前を返すような
ASを書いとけばいいだけではないのかと思うのだが、それがダメだとしたらその理由は?
設計が誤解や思いこみに基づいている場合もあるし、こっちが誤解してるかもしれない。
もっとやりたいことの全体像を説明してみたら?
>>685 たぶん本質ではないと思うので、参考までに。
for文で配列全体をサーチするときに
for (i=0; i<=player.length-1; i++) {...}は
for(var i=0;i<player.length;i++){...}と書くのが無駄な演算と同値比較がないし、いいとおも。
ASはJavaとはちがってファンクションレベルのローカル変数だけど、
var書いておくクセをつけとくのがよか。
で、俺ならグローバルに配列取って、attachしたときにその配列番号をMCに持たせる。
MC側でクリックされたらそのグローバル配列の自分のインデックスを更新する。
自分自身の処理(ボタンの変化のアニメとか)は自分のMCで処理するなんて感じで作るとおも。
688 :
Now_loading...774KB :2006/04/03(月) 22:32:45 ID:snyCMfYn
ぱっと見た感じ、右側で設定した情報をもっと効果的に管理したいんだよね? 右のトレース結果左に出してるし。 つーことは、 units = [ { mc:movieClipPath, id:Number, name:String, p1:Boolean, p2:Boolean, p3:Boolean, NML:Number }, {...}, {...}, . . ] ってな感じのオブジェクト配列作れば良いんじゃないかな。 んで、オブジェクト内容をMCに反映させるメソッドでも作っておけばOKかと。
ムービークリップに onClipEvent(enterFrame){ if(Flag){ }
すみません途中で送信してしまいました ムービークリップに onClipEvent(enterFrame){ if(Flag){ gotoAndStop(1); }else{ gotoAndStop(2); } } のようなscriptをつけて、Flagの変化によってフレームを変えたいのですが、 enterFrameでFlagの状態を監視し続けるの負荷的にはどうでしょうか? 自分の環境では、forなどで繰り返し回数が多くなると明らかに処理が遅くなるのはわかるんですが、 上のようなものはよくわからず、他の環境でどうなのかもわかりません ifの処理って軽いものなんでしょうか?
>>690 最近のコンピュータならそれくらい平気
下のスクリプトならフラグが変わった時だけ
フレーム移動するようになるのでわずかに軽くなると思う
onClipEvent(enterFrame){
if(Flag && _currentframe == 2) gotoAndStop(1);
else if(!Flag && _currentframe == 1) gotoAndStop(2);
}
>>690 for文は終わるまで処理は返ってこない。
そのASが一例ではなくそのまま使うものであれば
if文の処理よりenterframe使うことの処理の負荷を考えた方がいいと思う。
Flagの値を変えたときにgotoAndStop()を実行したほうがいい。関数化したりして。
>>692 に同意。
enterFrame1つくらいじゃ、たいして重くはないかもしらんが
Flagの値を変えるタイミングがわかるなら、監視するのは無駄っぽい。
694 :
690 :2006/04/03(月) 23:59:00 ID:rdSWGYrA
>>691-693 なるほどーありがとうございます
なるべくenterFrame使わないようにがんばってみます
695 :
Now_loading...774KB :2006/04/04(火) 04:09:47 ID:LbgsuUyQ
FlashMX2004を使っています。リンケージされたMP3ファイルの再生法 で質問です。 page1というMCの下のパスに開始ボタンを配置し、「song」というMP3を 再生するASとして on (press) { snd1 = new Sound(); s1_sound.attachSound("song"); snd1.start(); } を書きましたが、再生が始まりません。 間違いのご指摘を願います。
snd1.attachSound("song");
697 :
695 :2006/04/04(火) 04:53:40 ID:rY4qKH7r
2つのキーフレームがあって、それぞれに別のコンポーネントのボタンを置いたFlashを作りました 各キーフレームにはボタン以外に四角形や文字や線が配置されています ボタンを押すとキーフレーム間を行き来できます 単体のFlashでそれぞれのキーフレームの要素だけ表示される事を確認しました このFlashを別のFlashに置いたScrollPaneに読み込んだんですが、ボタンを押してフレームを行き来すると前のフレームのボタンが残ります コンポーネント以外の要素(四角とか文字とか線とか)は表示しているフレームのものしか表示されません キーフレームは空白で追加したので、前のフレームから持ち越した要素はありません ScrollPaneで読み込むとコンポーネントの扱いが変わるのでしょうか? WindowsXPSP2+FlashMX2004(7.2)+IE6SP1+FlashPlayer8で開発しています
特定のキーを押したときに、 ボタンインスタンスを押した動作をさせたいのですが、 ActionScriptでボタンインスタンスを押すことって出来るでしょうか? flash8です。よろしくお願いします。
>>699 考え方を変える。
ASでキーを押した時と、ボタンを押した時、同じ関数を実行させる。
ボタンを押したことも見せたいなら、ボタンMCにgotoAndPlay()とかさせる。
[W]キーを押したときに絵が凹むようにはできたんだが、 [W]キーから指を離したときに別のフレームへgotoAndStopさせる関数(?) はありますかね? ググり方が悪いのかもしれないけど、どうも引っかからないんで。。
>>701 ユー。メソッドのDownをUpに変えてみなYO!
>>701 if elseじゃだめなの?
if(Key.isDown(87)) gotoAndStop(2);
else gotoAndStop(1);
704 :
703 :2006/04/04(火) 17:42:34 ID:m32SDABM
トリッキーに書くと gotoAndStop(Boolean(Key.isDown(87))+1);
705 :
Now_loading...774KB :2006/04/04(火) 17:42:56 ID:nwwatmwn
ソフト=FlashMX2004,OS=Win98SE リンケージされたグラフィックシンボル(B)をあるシンボル(A)の入れ子として 呼び出す場合の質問です。 Aがメインタイムラインの1〜20フレまでグラフィックで、21〜40フレでMCに変 わり、ボタンを押してBをAの中に呼び出す方法が分かりません。暫定的な対 処として、メインの1〜20フレもMCにすればボタンを押して呼び出すことが出来 たのですが、本来の設計とは違う形になり、他の部分に影響が出ます。 言い換えると、 メインの21フレ → ボタン → Bの出現 です。 私の意図は伝わりましたでしょうか?
>705 ボタン押すとAの中にBを作るでいいのかしら? btn.onRelease= function(){ A.attachMovie(B,"newName",depth); }
707 :
699 :2006/04/04(火) 18:09:03 ID:R4bICJXR
>700 ボタンインスタンスじゃなくムービークリップインスタンスでやったほうがいいのですね。 ありがとうございました。
>706 なんか違うかな ムービークリップAの21フレームにMCがおいてあるってこと? そのMCに名前(仮にC)をつけて、 btn.onRelease= function(){ A.gotoAndStop(21); A.C.attachMovie(B,"newName",depth); }
ボタンシンボルの中にテキストフィールドを置いて そのテキストフィールドのtextプロパティーを変更したいのですが 上手くいきません ボタンシンボルのインスタンス名:button ボタンシンボル内のテキストフィールドのインスタンス名:tf この様な条件下で _root.button.tf.text="moji"; としてもテキストフィールドの文字が変わりません 何か対案か何処がま違っているのか分ったら教えてください
>>709 ボタンをMCにする。
ボタンシンボルのなかみはASで制御できない。
>>710 MCだと出来ました
ありがとうございました
712 :
705 :2006/04/04(火) 21:15:54 ID:HKb7h53E
わーい♪、IDが全部小文字だあ♪♪ (それはさておきw)706,708さん有難うございます。設計の概観としては706さん が近いです。 ソフト上では、メインのフレーム1〜20までがグラフィックで、上のレイヤーが少し づつ移動する毎に隠れていたAが表れ、21フレで完全に現れると同時にAはグラ フィックからMCになります。このMC(A)の入れ子に呼び出しボタンがあり、ASは on (press) { pic_rnd = Math.floor(Math.random()*5)+1;//1〜5の数字を発生 picProp = {_x:180, _y:-230, _xscale:1, _yscale:1};//呼び出し場所と大きさ showPic = "pict"; this.attachMovie("pic"+pic_rnd, showPic, -16382, picProp);//呼び出す trace("showPic="+showPic); } です。this.attachMovie()の辺りに問題があると思いますが、解決策が分かりません。
>>698 俺もMX2004だけど、ちゃんと描画されるよ。
714 :
705&712 :2006/04/04(火) 22:04:04 ID:r5NDZMyC
・・・・大変申し訳ないです。 実はちゃんとムービーは現れていましたが、traceのウインドウに隠れて 見えなかったです。つまり希望した位置に現れず、rootつまりステージ の原点(0,0)に現れていました。 重ねてお詫び致します。 恥のついでに質問ですが、MC(A)内の希望した位置に呼び出すには picProp = {_x:0, _y:0, _xscale:1, _yscale:1}; //大きさは徐々に拡大 showPic = "pict"; this.attachMovie("pic"+pic_rnd, showPic, -16382, picProp); をどう書き換えればいいでしょうか? この場合だと先に書いた通り、 ステージの原点に現れます。
>712 this.attachMovie("pic"+pic_rnd, showPic, -16382, picProp);//呼び出す ↓ this.attachMovie("pic"+pic_rnd, showPic, this.getNextHighestDepth(),picProp); 必要があればですが。 >714 Aの原点がステージの原点と同じだからではないでしょうか? Aをずらすか、_xと_yを100などにしてみたら?
>>715 Aをずらすか、_xと_yを100などにしてみたら?
これで何とか出来そうです。
あと、this.getNextHighestDepth()も使ってみます。
717 :
701 :2006/04/04(火) 23:30:40 ID:1ADTBhOz
718 :
Now_loading...774KB :2006/04/05(水) 03:29:16 ID:1U/Ta7N3
test = ["a","b","c","d",]; test2 = [] ; for( i = 0 ; i <= 3 ; ++i ){ kazu = Math.floor(Math.random() * ( 4 - i )) ; test2.push( test.splice( kazu , 1 )) ; } これで配列インスタンスのtestが、test2の中にランダムにソートされると思ったのですが無理でした。 どこが悪いのかを、どなたか教えて頂けませでしょうか。
719 :
718 :2006/04/05(水) 03:41:14 ID:1U/Ta7N3
すみません自己解決しました。 test = ["a","b","c","d"] ; test.push(test.slice(0,5)) ; これでtestの要素数が8に増えると思っていて、 実際の要素数は5つなのに、8個分の処理してました。 本当にすみませんでした。
WキーのMCに onClipEvent(enterFrame) { WKey = 87; if(Key.isDown(WKey)){ this.gotoAndPlay("press"); }else{ gotoAndStop("normal"); } } onClipEvent(enterFrame) { if(Key.isDown(WKey)){ cpoint=1; point=5; _root.score+=point; _root.combo+=cpoint; } } onClipEvent(enterFrame){ if(Key.isDown(WKey)){ presscount++; } }
スペースキーのMCに onClipEvent(enterFrame) { Space = 32; if(Key.isDown(Space)){ this.gotoAndPlay("press"); }else{ gotoAndStop("normal"); } } onClipEvent(enterFrame) { if(Key.isDown(Space)){ cpoint=1; point=1000; _root.score+=point; _root.combo+=cpoint; } } onClipEvent(enterFrame){ if(presscount=3){ cpoint=1; point=10; _root.score+=point; _root.combo+=cpoint; }else{ if(Key.isDown(Space)){ presscount=0; } } }
タイムラインの一番最初に score=0; combo=0; presscount=0; あとはステージ上に[score]と[combo]の変数付きのダイナミックテキストが二つです。 なけなしの知識をふんだんに盛り込んだところ、自分でもわけ分からないASになってきました。。 Wを二連打したらスペースを一回押さないと減点されるスクリプト (WWスペースWWスペースWWスペース....)と操作するゲームのようなものを作りたいのですが、 勝手にスコアがすごい勢い(FPSレートはかなり高く設定)で上がってしまいます。。 欠陥だらけのASですが、バシバシご指摘ください!てか、お願いします!
>>722 被っちゃいましたね^^;
文法やら何やらは学んでる最中で、まずはとにかく動くようにして
その後参考書を片手にASの整理に挑戦してみようという予定なんです。。
>723 とりあえず、何が問題かしぼってみてはどうでしょうか? wを1回押す動作は正常ですか? 2回押したことをどうやって判断しますか? 動作を一つずつ紙に書いて解決していって下さい。
onKeyUp使ってキーを離したときに処理をすればいいんじゃね? var listener = new Object() listener.wordList = [87,87,Key.SPACE] //"w","w","[SPACE]" listener.answerIndex=0 listener.onKeyUp = function(){ var currentAnswer = this.wordList[this.answerIndex%this.wordList.length] if (currentAnswer==Key.getCode()){ trace("あってる") this.answerIndex++ }else{ trace("まちがってる") } } Key.addListener(listener)
727 :
Now_loading...774KB :2006/04/05(水) 12:18:06 ID:xbT9PzES
多次元配列を文字列から作っています。 [[取得するキーの名前,キーコード,押すflg],[〜以下略]] 押すflgはBooleanにしたいのですが、下のASだとStringになっています。 どう書けばいいのでしょうか?よろしくお願いします。 key1 = "Z,90"; key2 = "X,88"; //[取得するキーの名前,キーコード,押すflg] allKeyAry = new Array(); i = 1; while (this["key"+i]) { this["key"+i]+=",true"; allKeyAry.push(this["key"+i].split(",")); i++; } trace(typeof(allKeyAry[0][2]));
>>727 key1 = "Z,90";
key2 = "X,88";
//[取得するキーの名前,キーコード,押すflg]
allKeyAry = new Array();
i = 1;
while (this["key"+i] != undefined) {
allKeyAry.push(this["key"+i].split(","));
allKeyAry[i-1].push(true);
i++;
}
trace(typeof(allKeyAry[0][2]));
729 :
727 :2006/04/05(水) 12:48:38 ID:xbT9PzES
>728 allKeyAry[i-1]ですね。ありがとうございます! i=1にしたの忘れてて、allKeyAry[i]で諦めてました 凡ミス無くならないなぁ while (this["key"+i]) { ↓ while (this["key"+i] != undefined) { となってますが、後者の方がいいんですか?
730 :
720 :2006/04/05(水) 14:54:49 ID:as1mh6mN
nextFrame();って次のフレームに移動した後、 強制的に停止させられるんですか?
>>731 そう。
嫌なら、play(); を使う。
↑どうもです
onClipEvent (enterFrame)で質問いたします。 FLASH5で制作していますので、AS1での方法をお願いいたします。 ステージ上にボタンとドラッグできる画像MC、画像のターゲットになるMCを置き、 ボタンで画像を拡大・縮小するFLASHを作っています。 画像MCにはこのような拡大・縮小用の空MCを入れてあります。 onClipEvent (enterFrame) { _root.img1._x += (_root.img1target._x-_root.img1._x)/3; _root.img1._y += (_root.img1target._y-_root.img1._y)/3; _root.img1._xscale += (_root.img1target._xscale-_root.img1._xscale)/3; _root.img1._yscale += (_root.img1target._yscale-_root.img1._yscale)/3; _root.img1._rotation += (_root.img1target._rotation-_root.img1._rotation)/3; }
(続き)これは縮小用ですが拡大もターゲットが違うだけで要領は同じです。 拡大や縮小はきちんと動作したのですが、問題はimg1targetの位置に縮小で戻った後に ドラッグしてもimg1targetの位置に戻ってしまいます。 縮小後(できれば縮小している最中も)再びドラッグを有効にさせる方法はないでしょうか?
ボタンを押した後は、ドラッグできないって事? enterFrameを止める必要があると思う。 オブジェクトスクリプトの書き方忘れちゃったから、 _rootに書く場合でw img1を押したら、 img1.onPress = function(){ delete img1.onEnterFrame; } 離したら、 img1.onRelease = function(){ img1.onEnterFrame =function(){ _root.img1._x += (_root.img1target._x-_root.img1._x)/3; 〜 }} こんな感じの事すればどうでしょう?
windows2k FLASH MX2004 使ってます。 cgiに関しては最近始めたばかりで勉強中です。 サーバー上のcgiとFLASHで連携させたりしてるんですが、その際 利用したcgi(の結果?)がTemporary Internet Filesフォルダに キャッシュされてしまいます。ファイル名も分かるので、できれば フォルダに残したくありません。 CGIからは、print文で文字列を返しています。 開くと、cgiとFLASHで通信した結果(=print結果の変数)のみが書かれた テキストとして表示できてしまいます。 キャッシュからリンクをたどるとテキストとして認識されてしまうみたいで ダウンロードを促されます。(アドレスを直接ブラウザから叩いてもエラー を返すようになっています) 何か、flashとcgi間で通信した結果をキャッシュで残さない対策は ありますでしょうか。 よろしくお願いいたします。
738 :
737 :2006/04/06(木) 16:04:23 ID:TdkAZ7n+
もしスレ違いでしたらすいませんです。 よろしければで結構ですので、何かご存知の方はご教授ください(__)
リクエストヘッダにno-cacheって書いておく
>>736 その通りです。ターゲットに寄ってきても、その後はonClipEvent (enterFrame)が
止められないので画像がターゲットから離れてくれません。
AS1ですとonClipEventはMCに、on(press)やon(release)はボタンにしか使えないので
どうしたらいいのか…こちらのASの意味は
「ボタンを押す」→enterFrameをdelete(?)する
「ボタンを離す」→enterFrameを実行する ということでしょうか?
deleteは使えないようです。現在if構文で試行錯誤していますがうまくいきません。
741 :
737 :2006/04/06(木) 16:37:50 ID:TdkAZ7n+
>739 ヘッダ・no-cacheでググったところ、 <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> とありましたので、FLASHを載せたHTMLのヘッダ部分に記述したのですが やはりキャッシュに残ってしまうようです。 上記の処方が見当外れでしたら申し訳ないです。 もし違う場合は、詳細をいただけると嬉しいです。 レスありがとうございました(__) 追伸: ついでに、サーバー上でcgiを挟まなくても外部データテキストを単純に 読みこんだだけで普通にキャッシュに残るんですね。LoadVarsを通すと 必ず残ってしまうのかな・・・うーむ・・・
>740 enterframeaは関係ないかもしれません。 すいません。 img1の構造ってどうなってるんでしょうか? ターゲットに着く前に、ドラッグは出来ていますか? img1の中にボタンを配置して、 on(press){ this.startDrag(); } とやる必要があるんじゃないでしょうか?
>>742 ドラッグはできています。
ボタンを入れて、このようにスクリプトを書いています。
on (release) {
if (firstClick) {
if (getTimer()<t0+500) {
this.nextFrame();
firstClick = false;
}
} else {
t0 = getTimer();
firstClick = true;
}
}
on (press) {
this.startDrag();
this.swapdepths(++_parent.n);
}
on (release, releaseOutside) {
this.stopDrag();
}
(続き) getTimerはダブルクリックの処理で入れています。 ドラッグやダブルクリックなど、ボタンとしての処理はすべて機能しています。
>744 なるほど。 onClipEvent(enterframe)の代わりに、 変形用の空mcを2フレまで伸ばして、 の1フレ目に _root.img1._x += 〜 ボタンに、 on(press) this.startDrag(); 空mc.gotoAndStop(2); } on(release){ this.stopDrag(); 空mc.play(); } これでtargetからはがせるはず。 後はお任せします。がんばって下さい。
>>741 残念。(つか、「リクエストヘッダ」って言ってくれてるのに、なんで「ヘッダ」でぐぐるかな^^;)
Flashを読み込んでるHTMLのヘッダじゃなくて、
値をprintするCGIにno-chacheを入れるんだ。
CGIを何で書いてるか分からないから、これ以上詳しいことは言えないけど。
なんにしてもFlashの問題じゃなくて、CGIの問題。
まして、LoadVarsのせいにしちゃ、LoadVarsがかわいそうw
>>737 cgiのパラメータに
?dummy=タイムスタンプとか乱数
を追加なんてのも良いかも
>744 やってみましかが、onClipEvent(enterframe)に入れないと 近づいていく動作にならないようです。 on(press)やon(release)の動作から別MCのonClipEvent(enterframe)のオンオフを制御する ということですよね? もう少し考えてみます。
>748 んー、うまく行きませんね^^; ためしに>745作りましたが、問題はありません。 シンプルなものを作ってみてはどうでしょう? 動作の確認ですが、 1)AはBへ速度を落としながら近づく。 2)Aはドラッグで位置を変えることが出来る。 3)Aはドラッグ中は、1)の動作をしない。 4)Aはドラッグをやめると1)を動作をする。 5)AS1で動作する。 これでよければ、下のAS(少し直しました)でいいんですが。 _root上に、ballとboxをおく。 ballの中にbtnとcoreをおく。 coreのフレーム1に _root.ball._x += (_root.box._x-_root.ball._x)/10; _root.ball._y += (_root.box._y-_root.ball._y)/10; フレーム2に this,gotoAndPlay(1); btnのオブジェクトアクションは、 on (press) { this.startDrag(); core.stop(); } on (release) { this.stopDrag(); core.play(); }
this,gotoAndPlay(1); 点が違う
751 :
Now_loading...774KB :2006/04/06(木) 23:27:08 ID:XaMRPeaZ
すみません質問させてください。 コンポーネントの ScrollPane のインスタンスを生成し、contentsPath で外部 swf ファイルを読み込ませたのですが、 この swf を拡大したり縮小したりすることは可能でしょうか? 作成:flash8 プレイヤー : flash7 OS: win2k です。どなたかご教授願います。
752 :
Now_loading...774KB :2006/04/07(金) 00:15:30 ID:FyYjXpP6
MX2004で、テキストがテキストエリアから複数行になってはみ出した場合、 横にコンポーネントUIScrollBarを追加すればスクロールできますが、これを自前で用意したいのです。 ・テキストがテキストエリアからはみ出したかどうか ・全部で何行中何行がはみ出しているのか を知るにはどのようなスクリプトを使えばいいのでしょうか?
>>751 スクロールペインのインスタンス名をspにする
my_mc
+my2_mc
という階層のmcを用意してリンケージ識別子をmy_mcとする
(my_mcのなかにmy2_mcというmcが入ったもの)
sp.contentPath = "my_mc";
sp.content.my2_mc.loadMovie("./load.swf");
sp.content.my2_mc._width = 10;
をフレームに記述。
[my_mc]-[my2_mc]って階層にしたのはmy_mcだけだったらなんかペインからはみ出るから。
>742 できました! 動作4)Aはステージ上のボタン操作で1)の動作をする こうしたかったので、btnのオブジェクトアクションから on (release) { ball.core.play(); }
(続き) この部分をステージ上のボタンに移したらばっちりでした。 空mcのcoreはgotoAndPlayでループさせておくんですね。なるほど。 ありがとうございました。助かりました。
756 :
「涼宮ハルヒの憂鬱」の支援FLASH作ってください :2006/04/07(金) 00:57:30 ID:pY8KUi5d
757 :
Now_loading...774KB :2006/04/07(金) 01:09:43 ID:5CYQVShs
>>753 ありがとうございます!
ですが、それ以前のスゴイ基本的なところで悩んでいます。
クラス名 foo が定義されている mc の中に ScrollPane があるとして、名前を sp として、下記 class を定義したところ
class foo extends MovieClip {
var sp:mx.containers.ScrollPane;
function foo(){
trace(sp.constructor == mx.containers.ScrollPane); //false
trace(sp instanceof mx.containers.ScrollPane); //false
sp.setSize(300, 400); .//リアクション無し
}
}
となってしまい、ScrollPane が認識してくれません。
AS2 の初歩的な質問だとは思いますが、どなたかご教授願います。
758 :
737 :2006/04/07(金) 02:25:08 ID:9+3cqh0n
>>746 さん
やはり間違っていました・・・。
記述はCGIのほうなんですね。調べてやってみます。
cgiはperlで組んでます。連携は色々出来て、難しくも楽しいですね^^;
レスありがとうございますっ。
>LoadVars
ごめんよーー
759 :
737 :2006/04/07(金) 02:33:51 ID:9+3cqh0n
>>747 さん
ああ、さらにレスが。ありがとうございます。
参考にさせていただきますねっ!
外部ファイルを読み込んだ後に、 次のフレームに移動したいのですが、 nextFrame()のターゲット(スコープ?)指定が分かりません。 _rootはなるべく使わない ターゲットを指定する という方針です。 よろしくお願いします。 myVars.onLoad = function(success) { trace(this); this.nextFrame(); }; //出力:count=123&onLoad=%5Btype%20Function%5D
>>760 べつに_root使えばいいとおもうが、どうしてもというなら_parentつかうとかかな。
ComboBoxコンポーネントを含むムービークリップシンボルをつくり、 attachMovieでステージ上にそのインスタンスを配置して、 ASでComboBoxにアイテムを追加しようとしてるんですがうまくいかなくて困ってます。 addItemをしてもundefinedが帰ってきてる状態です。 for (... in ...) でComboBoxの中を調べるとboundingBox_mcというムービークリップだけしかありません。 これはコンポーネントの使い方がどこかまちがってるんでしょうか。
>>762 ComboBoxもattachMovieすればよくね?
this.attachMovie("mc", "mc", 0);
mc.attachMovie("FComboBoxSymbol", "list", 0);
mc.list.addItem("apple", 1);
mc.list.addItem("orange", 2);
コンボボックスにsetStyleでfontSizeを30に設定したのですが、ドロップダウンされるリストの項目毎の高さが変わらず文字が途中で切れてしまいます。 ドロップダウンされるリストの項目の高さをうまく設定できないでしょうか。。。 WinXPSP2/FlashMX2004(7.2)です
ComboBoxコンポーネントの高さの設定はできなかったと思う。 自分でオリジナルのComboBoxをつくればいいよ
>>765 そうなのですか。。。
ComboBoxを作るほどの余裕は無いので別の手を考えています。
テキストボックスのフォントは30で、ドロップダウンリストのフォントは10といった制御は可能でしょうか?
ヘルプを見ると、テキストボックスはTextInputのインスタンスで、ドロップダウンリストはListのインスタンスと分かれているようなのですが、別々にフォントサイズを設定したり出来ないのでしょうか。
AS1.0で、MC内部に下記のようなコードを書いていたのですが、 (message_txtはダイナミックテキストボックス) ============================================= ClassName.prototype.setText = function(str:String) { this.message_txt = str; } ============================================= AS2.0でクラスを作成し、メソッド内部に記述したところ、 「message_txtという名前のプロパティはありません」 とエラーになってしまいます。 MovieClipを継承したクラスなので、当然なのですが・・・。 リンケージで指定されたシンボル側の変数などに アクセスする方法はありますでしょうか?
ありがとうございます。 ・・・できればもう少しヒントをお願いします。
[]の括弧と言えば配列アクセス
ああっぁぁぁぁぁぁあ!!! 出来ました!!! 本当にありがとうございます!!
>>767 クラスの定義部分にテキストフィールドがあることを書けばいい
class ClassName extends MovieClip{
var message_txt:TextField
function setText(str:String){
this.message_txt.text = str
}
}
テキストファイルの読み込みを待ち tというテキストフィールドのtextに読み込んだ内容を反映したいのですが 上手くいきません 1フレーム目のAS var mondai:String; System.useCodepage = true;//データファイルをSHIFT-JISで読む a_lv = new LoadVars();// LaodVars() 作成 // 読込み時のイベントを設定(直接読む) a_lv.onData = function (src) { if(src != undefined){ mondai=src; }else{ trace("読込み失敗"); } } a_lv.load("mondai.txt");// 実際に読み込む 2フレーム目は空 3フレーム目のAS if(mondai==undefined){ gotoAndPlay( _currentframe-1); trace("wait"); } t.text=mondai; this.stop();
>>773 の内容で実行すると
読み込みが上手くいく時と
いかない時があります
つまり、実行したあとtの内容がちゃんとファイルの内容であるときと
undefinedとなる時とがあります
3フレーム目でmondaiがundefineの時は前フレームに戻って待つようにしているのですが
これが上手くいっていないようなのです
tの内容がundefineになった時、出力の窓にはwaitと出るので
3フレーム目のif文はちゃんとまだ読み込みが出来ていないという判断が出来ています
ということはgotoAndPlay( _currentframe-1);これで前フレームに戻れていない可能性が高いのです
この書き方の何がいけないのでしょうか
もしこれ以外に原因の検討が付く方も
対策をお教えください
宜しくお願いします
質問があります。 x="1,2,3,4,5"; という文字列型変数から数値を取り出して y[0]=1 y[1]=2 y[2]=3 y[3]=4 y[4]=5 と配列に読み込むにはどうすればいいでしょうか。 数値の桁は1〜4桁と不定ですが、数値の数は一定です。
>>774 onLoad使ってみるとか。あと、せっかくloadversオブジェクトに読みこんだんだから、mondai変数って
いらんと思うが。a_lv.question1なんて感じで参照できるし。
>>775 x="1,2,3,4,5";
aa = new Array();
aa = x.split(",");
数値で格納したいときはこのあと配列をparseIntすればよか。
>>776 >aa = x.split(",");
この命令を知りませんでした。
こんな便利なものがあるとは…
ありがとうございました。
何行かの文章が保存してあるテキストファイルの内容を 変数bに読み込んで以下の方法で一行ごとに配列aに分割したとします a = new Array(); a = b.split("\r\n"); この時、ファイルの内容が何行だったのか値を得たいのですが aの配列のサイズか添え字の最大値、もしくはsplitで分割した数 そのどちらかを得る方法はありませんか
>>779 10分前の俺へ
Arrayクラスの
Array.lengthを使えは配列の個数が得られます
>>780 10分後の俺有難う御座います
解決しました
782 :
Now_loading...774KB :2006/04/09(日) 11:36:33 ID:yr1Ko1K+
FlashMX2004 使用 hitTest で当たり判定をしたい。 function hantei(obj){ var m ; //ここでどのMCに弾が当たったか判別したい switch(obj.hitTest(m)){ case obj._parent._parent.mato_h1: trace("当たり判定ありh1"); break; case obj._parent._parent.mato_h2: trace("当たり判定ありh2"); break; default: ; } でもswitchは値の判定らしく条件として?するのは無理? IF文羅列すればできるみたいだが、長すぎて醜いので できればswitchでしたいのだが・・・OTL
>782 私ならfor文つかうわ function hitChk(myMC){ for(i=1;i<=targetMax;i++){ var tarMC = myMC._parent._parent["mato_h"+i]; if(myMC.hitTest(tarMC)){ trace("当たり:h"+i); break; }}} これで動くのかしら・・・ 取り急ぎまで switchの解決方法は知らないデス
>>783 出来ました!動けばOKなので・・
for文勉強になりました。m(__)m
「動けばOKなので・・」とか言う奴と一緒に仕事したくないよ
>785 あら、「動けば(上のactionscriptでも)OK」って事ですか? どこが問題なのかおっしゃって頂けますか?
>>786 いや、そのスクリプトについては全く問題ないけれど
785の考え方思い込みがいけない、と言いたい
中二病かwww
どんなコードを書こうが……最終的に……動けばよかろうなのだァァァァッ!!
790 :
Now_loading...774KB :2006/04/09(日) 19:14:42 ID:Duzc/oja
>>789 無駄があれば計算速度が落ちるし、
下手な組み方すればメモリリークの可能性もある。
でもこの話題の問題点はそんなのじゃないんだよね。
人が親切に回答した答えに対して、「動けば良いので」と返すってのは、
上記で上げたような問題を含んでるかのような言い回しになってしまう。
なのでなるべく相手に不快感を与えるようなことは、
質問者も回答者も慎みましょうねってことで。
__、_、ヽ`ニ、ニ`二、ニ`ニ`、=、=ヾァー:-:ー丶、,、、,,_,.,、 ⌒>\丶\ヽヽ ',!|/〃/ //,. ゙ : ' .: ゙ ,: ゙ ,/ ⌒丶\丶ヽ`、', 《〈 〃ノ/. ' . '_;.,;._ ;.' , ゙ // __\ヽヾ:ヾ_ヾミ[]―‐[〕-''''"~´ 彡 . ゙ .゙〃 ⌒\ ミ|{「己川ロ后叨:.: し___! 彡 ;' . ゙ / ヾレュ三<´{(厶ニニ-‐、>ヽ ; : . ,゙i ⊂ ,{ {(j } }==Y∠r:ュ.ヾ, く;/^ヽ! c { ト >-<ン ,' ~厂 ̄´`ヽ ,ィ个 } マジレスされると困っちゃうぜッ! ' {〔!厂〈ー‐、 '":::... u } )丿,ハ )|h `-'" / (__/,/ . !| 「r三三ヽ J l /⌒l ! l | } ,. ―-| u ,/ 、_,ノj ,r一''"~´) !.ハ ノノ二ニ二! ノ `7〈 / ゝ''"´ __ . | .ハ ヽ-r―‐- ,f 、__// ヽ/-‐''(´ _,,ノ、 _,,.. -ー―ノ / ヽ ゙ー‐ / ! `゙{'′ ノ >‐'''(´_,,/ ー-、 ヽ-r―‐< ,r'゙{:___ノ`ー(、__/ >''"´ 、_,,,,,,,,,,,,,,,}!,,___{ ;' /´ '゙ ̄´ ̄´ 丶イ __ \ r―ー>''"/~"''ーく⌒ヽ._,,ノィ´ `) \ / /7゙ <´ ノ /〈 ><~´ ヽ,/ { ヽr、\ ''" ,. -''"―-ヽ `'ー- 、 // \ \ヽ、`丶、__,,..ィ´}! ,iリ ``丶、 \
コードの質より納期守れるヤツが一番偉い
793 :
Now_loading...774KB :2006/04/09(日) 20:17:02 ID:HfnCsFI1
792がいい事言った。 仕事でやってるとそんなモンだよな?
というか、仕事が出来ない奴に限って、コードが汚い
空気を読めなかったようですいませんでした。 職場で斜め上に指摘する人がいるんでつい>_< >動けばOKなので・・ switchじゃなくて他の方法があったんだ・・・ って気持ちだと思ってたので気にしてませんわw
環境:WindowsXPSP2+FlashMX2004(7.2) ムービークリップの中に読み込んだSWFで問題に悩まされています。 別のキーフレームにあって現在表示中のキーフレームにはないムービークリップが表示されるという現象です。 再現方法は以下の通りです。 SWFは2つあり、SWF1 が SWF2 を LoadMovie する形になっています。 @ LoadMovie を使って SWF1 の中のムービークリップに SWF2 を読み込みます。 A SWF2 の中に createEmptyMovieClip を使って空のムービークリップを追加します。 ※このときの深度は getNextHeighestDepth で取得できる最上位の深度とします。 B Aで作成したムービークリップと SWF2 の1フレーム目にあるムービークリップを swapDepth します。 C SWF2 で gotoAndStop を使い、次のキーフレームに移動します ※次のキーフレームは空のキーフレームとして追加したので、1フレーム目のムービークリップは残っていません。 D 何故か1フレーム目にあったムービークリップが残ります。 どうしてこのような事になってしまうのでしょうか? 対策があれば教えてください。
>>796 仕様だから。
深度が0以上なものは、キーフレームに関係なく
タイムラインの最初から最後まで存在するように配置される。
オーサリング時に配置したものは深度がマイナスになってる。
removeMovieClipや_visible変更などで対応してみてはどうか。
798 :
737 :2006/04/10(月) 15:22:07 ID:dI69lkbT
>>739 739さんに教えていただいたcgi側の対応でキャッシュの問題
クリアできましたっ!
調べるにあたり、その他色々勉強も出来てよかったです。
本っ当に!ありがとうございました(^^)/
今後もas+cgi精進したいと思います。
799 :
796 :2006/04/10(月) 15:33:55 ID:04YPaBN1
>>797 情報ありがとうございます
情報を参考にして createEmptyMovieClip で生成される新しいムービクリップの深度を -2 にし、swapDepth していたムービークリップには深度 -1 を直接指定してみました。
しかし残念ながらキーフレーム別に表示される事はありませんでした。
深度が正か負かでフレームを渡るという情報はどこにありましたでしょうか
検索の仕方が悪いのか、LiveDocから見つけられませんでした
そこを手がかりに調査してみようと思いますので、URLが分かるようでしたら教えてください
>796 ActionScript2リファレンス removeMovieClip このメソッドは、負の深度値に割り当てられているムービークリップを削除しません。 >getNextHeighestDepth で取得できる最上位の深度とします 何もない階層に生成する場合は最下層が割り当てられます。 また、オーサリングツールで作られたインスタンスは空いている最下層に割り当てられます。 _root.SWF2.1フレーム目にあるムービー.createEmptyMovieClip(); にすればいいんじゃね? _root.SWF2. SWF2 の2フレームに移動したときに、 1フレーム目にあるムービーが消えるから中身も消える。 >799 新しいムービクリップは正の深度にして、 2フレームに、 新しいムービクリップ.removeMovieClip(); >深度が正か負かでフレームを渡る これは関係ないです。 (キーフレームじゃ、SWF2を消すことしか命令してない?)
>800 >深度が正か負かでフレームを渡る これは関係ないです。 補正w >796の場合だと正の階層は扱ってないから、 関係ないってことです。
getNextHeighestDepth使わず自分で深度は管理する どの深度になるかわからないなんて不安で使えんがな。
ActionScript2.0でクラスを使うとき、 クラスのフィールドを宣言と同時に初期化するのとコンストラクタで初期化するので違うのでしょうか? var menber: Array = new Array(30); function Constructor() {} と var menber: Array; // 宣言のみ function Constructor() { menber = new Array(30); }
804 :
803 :2006/04/10(月) 16:40:04 ID:q57kcequ
>>803 すいません自己解決しました
ActionScriptではインライン初期化すると共有化されるんですね
>>799 MC内で新たに深度を設定すると、オーサリング時にあったレイヤーの最上位に
新規深度用のレイヤーが作られるような感じ。
だから、オーサリング時のレイヤーに設定したキーフレームの制約をうけない。
正か負かというか、基本的にASで追加する深度は0以上となっている。
getNextHeighestDepthも0以上を返すんだったと思う。
つまり、通常はASで配置したMCの深度は0以上となり、それらはすべて
キーフレームのないレイヤーに存在するから、既存のキーフレームをまたぐように見える。
どうしてもキーフレームをこえさせたくないなら、オーサリング時にMCを作っておいて、
そのなかでswapDepths()でもcreateMovieClip()でもやればよか。
おっと、createEmptyMovieClipじゃった。
807 :
Now_loading...774KB :2006/04/10(月) 18:16:56 ID:GJo6P4Q/
文字を数字に変換したいんですけど、ちょうどいいメソッドはありますか? "1"→1みたいなのです。
>>807 var num = Number("1");
trace(typeof num);
>800 >何もない階層に生成する場合は最下層が割り当てられます。 これ嘘。すまん。無視して。
810 :
Now_loading...774KB :2006/04/10(月) 18:46:58 ID:GJo6P4Q/
>>808 ありがとうございます。
その()の中が数字じゃなければ何がnumに代入されるんですか?
811 :
796 :2006/04/10(月) 19:30:44 ID:04YPaBN1
皆様情報ありがとうございます(本当に感謝です) 皆様の情報を元に試行錯誤して表示制御ができるようになりました。 ・createEmptyMovieClipはフレームをまたぐため、更新が必要になるたびに再生成するように修正 ・作成時の深度はgetNextHeighestDepthは使うが、他は特定の深度に依存しないように ・swapDepthを有効活用し、深度を直接指定せずに交換で解決する方向に みなさまありがとうございました。 とても勉強になりました。
>>810 トレースすればわかるけど、
数字じゃなければNaNが返るよ。
つまりエラーだね。
ASって解析出来てしまうんですよね それならランキング登録CGIのURLとCGIに送るデータの書式を解析して そのCGIに架空の引数をわたしてやれば いくらでも不正が出来てしまいそうなんですが そこらへんはみなさんどういう対策してるんですか
簡単なベクターグラフィックってシンボル作ってattachMovieするか スクリプトで描画するかどっちのほうがパフォーマンス的によろしいですか?
>>813 対策しない。まあ、簡単にはsol使うとか。ちゃんとやるならid:passにするとか。
>>814 物による。複雑で何百個とかだとMCの数がその分増えるから、
attachの方が重くなるでしょうね。
>>813 小細工はいくつかすれど、基本は無視だな。
ASで絶対的なセキュリティなんて無理だし、商用ゲームでも解析や改造は
ありえる。
どんなに対策たてたって、不正やる奴はやるんだよ。
個人の趣味程度なら、不正してまで登録したいと思わせない、とか。
不正登録されても面白さが減らないようなシステム、心構え、そういうので
乗り切る。
まずは不正したくなるようなFlashかどうかが重要
100Fと101Fの間にしばらく留まってから次に進むっていうようにしたいんですが、 まず1Fにa == 0を記入、そして 100Fに a = a + 1; play(); 101Fに if(a > 30){nextFrame();} else {prevFrame();} 要するに両フレームを行き来させてzを増やしていって、 30を越えたら次に進む、という分岐を作ってるつもりなんですが 101Fで止まってしまいます。 どこかおかしい点があるでしょうか?
訂正です × 要するに両フレームを行き来させてzを増やしていって ○ 要するに両フレームを行き来させてaを増やしていって
aの初期値が不定だから。 つか、if分の前にaの値をtraceするとかしてみそ。
a == 0 ↓ a=0; nextFrame(); ↓ play();
>>820-821 ああ、なるほど!
a == 0; を a = 0; にしたらうまくいきました。
a == 0;だと何を足そうが0で固定される、・・・・ってことなんでしょうか?
とにかくありがとうございました。
823 :
Now_loading...774KB :2006/04/11(火) 18:46:24 ID:7qppNOvr
>>822 a==0は「Aは0ですか?」
って意味だよ。
a=0 aはゼロです a==0 aはゼロと等しいです 演算子は基本だから何つーか覚えないとな。
825 :
Now_loading...774KB :2006/04/12(水) 06:44:33 ID:J1uTbw80
ソフト:FlashMX2004 動作:Player6以下希望 ダイナミックテキスト(インスタンス名:kazu_ins,変数名:kazu)を使って ランダムな2桁の数値を縦に、例えば 78 44 13 28 ・ ・ ・ と表示するにはどうしたらいいでしょうか?一応 kazu=Math.random() と までは発想が浮かんだのですが、そこから先が進みません。
826 :
825 :2006/04/12(水) 07:31:50 ID:JoLtDMnp
(とりあえず、ASを書きました) kazuというテキスト欄MCにリンケージ設定して、あらかじめ インスタンス名:kazu0 というMCをステージに置いた状態で this.onEnterFrame = function() { idx++; //初期値 idx = 0 newName = "kazu"+idx; prop = {_x:kazu0._x, _y:kazu0._y+30*idx}; //欄の高さは18pt _root.attachMovie("kazu", newName, idx, prop); kazuA = Math.floor(100*Math.random()); }; ならば、テキスト欄 kazu1,kazu2,kazu3,・・・ は縦に出現するの ですが、個別の数値の設定法が分からず、欄内に何も出ません。 どうしたらいいでしょうか?
t_txt = createTextField(...); t_txt.text = "あいうえお"; もしくはattachするMCにTextFieldをつくっといて名前付けとく
うenterおしちゃっった、すまん。 で、EnterFrameはフレームレートによって呼ばれる関数。 つまりフレームレート30なら、無条件に1秒間に30回呼ばれる。 なので、その処理は、外に書いた方が望ましい。
配列aの結果で配列bの結果を出したいのですがundefinedになります。 期待している出力はBなのでが、どう書けばいいのでしょうか? a = [1, 2]; b = [A, B]; trace(b[a[0]]);
ああ、出来ました。少し落ち着きます。すいませんでした。 b = ["A", "B"];
831 :
825 :2006/04/12(水) 23:33:10 ID:Lu5CUasa
>>827 ありがとうございます。createTextField()で数値が縦に並んで出ました。
引き続き2点質問があります。
Q1)TextFormatの指定法
赤色太字で20ptの数字を並べるため、ボタンシンボルのon (release)内に
text1_fmt = new TextFormat();
for (i=0; i<10; i++) {
kazu1 = Math.floor(10*Math.random());
_root.createTextField("text"+i, i, 200, i*20, 300, 30);
text1_fmt.bold = true;
text1_fmt.size = 20;
text1_fmt.color = 0xff0000;
_root["text"+i].text.setTextFormat(text1_fmt);//TextFormatオブジェクトを適用する
_root["text"+i].text = kazu1;
}
delete text1_fmt;
}
と書きましたが何も変化しません。問題点をご指摘下さい。
Q2)連続ボタン
ステージ上に上記のボタンを含め3つのボタンを並べています。1個目のボタン
ではマウスポインタが指マークになり、押して反応が出ます。しかし、次の操作
として、他のボタンにマウスポインタを重ねても指マークにならず、カーソルの
縦棒になります。この現象の回避方法を教えて下さい。
>>831 Q1は知らん
Q2はテキストを選択できないようにすればいいんじゃない?
Q1:setNewTextFormat
834 :
Now_loading...774KB :2006/04/13(木) 02:25:55 ID:ZB38iNxz
>>831 なんか順番が悪いっぽい。
テキストがある状態でフォーマットを適用
ああ貴重な睡眠時間がTT
text1_fmt = new TextFormat();
text1_fmt.bold = true;
text1_fmt.size = 20;
text1_fmt.color = 0xff0000;
for (i=0; i<10; i++) {
kazu1 = Math.floor(10*Math.random());
_root.createTextField("text"+i, i, 200, i*20, 300, 30);
_root["text"+i].text = kazu1;
_root["text"+i].setTextFormat(text1_fmt);//TextFormatオブジェクトを適用する
}
Thxです。
でも、
>>832 さんの「Q2はテキストを選択できないようにすれば・・・」の意味が
分かりません。
836 :
825&831 :2006/04/13(木) 06:16:31 ID:hE81cy9A
(度々すみません) アドバイスに基づき、書き直しました。記述を簡単にするため、フォントサイズ を20にすることを当面の目標とします。 on (release) で text1_fmt = new TextFormat(); text1_fmt.size = 20; for (i=0; i<10; i++) { kazu1 = Math.floor(100*Math.random()); _root.createTextField("text"+i, i, 200, i*20, 300, 30); _root["text"+i].text = kazu1; _root["text"+i].text.setNewTextFormat(text1_fmt); } としましたが、変化が無いです。どうしたものでしょう?
837 :
Now_loading...774KB :2006/04/13(木) 08:28:21 ID:4LzFEF/q
好い加減にしろって。 いつまでマンツーマン指導求めてるんだ? ・setNewTextFormat ・setTextFormat この2つをヘルプで調べて自分で考えろ。
>>836 _root["text"+i].text.setNewTextFormat(text1_fmt);
ここだけ直したらいけるんじゃない?
.textの意味どこかで見てくると良いよ。
後は.selectableについて調べてみたら?
Flash 8です。 duplicateMovieClip関数というのは複製元のMCと同じパスにしかMCを複製することできないんですか?
>>840 そうでしたか。ありがとうございます、。
2次元配列以上の配列内の変数の型宣言を行うにはどうしたら良いでしょうか?
以下の内容なのですが、書いてることが重複してる気がしてスッキリしないです。 do・・whileのようにスッキリ出来るといいのですが。 よろしくお願いします。 1)jump()を最初に実行して一定間隔で繰り返しています。 jump(); myID = setInterval(this, "jump", 500); 2)実行してフレームを進めて繰り返す jump(); this.onEnterFrame =function(){ jump(); }
>>842 そもそも1次元配列で要素の型宣言ってできたっけな?
>>842 a[0][0]:Number = 0;
試してないけどこうじゃないの?
ASでは配列要素に対する型宣言はできない。 配列に何でも入れられるし、数値、文字列、オブジェクトの混在もできる。 aa[0]=1; aa[1]="hogehoge"; aa[2]=new Date(); なんてのもできる。普通はやらんけどね。
>>843 1),2)共に、初めのjump();だけの行を無くすと何か問題あるのかな。
型宣言した変数を配列に入れればいいんじゃね?
849 :
Now_loading...774KB :2006/04/13(木) 17:15:57 ID:+tzGhRQW
教えてください。 葉っぱが上から揺らめきながら降って積もるscriptってどうすれば良いのでしょうか? 教えてください。
1から10まで人に聞こうとするんじゃなく、少しは自分で努力したところみしてよ。 とりあえず、attachMovieClipでMCつくりまくればよろし。 出現条件はMath.randomつかって乱数発生させる。 ゆらゆらする動きはMC名.onEnterFrameなんちゃらやればよろし。 どこ詳しく聞きたいか自分で調べるか選べ。
851 :
Now_loading...774KB :2006/04/13(木) 17:35:27 ID:sqAjy0wo
>847 1行目のjump();を削除すると、 10フレーム目で命令しても、動き始めるのは11フレームから。 ASを実行した時間とjump()が開始される時間がずれちゃうんです。
>>849 ファジーすぎるw
とりあえず
1枚の葉っぱが揺らめかないで落ちるのを作る
↓
揺らめかしてみる。
↓
数を増やしてみる。
みたいな感じで考えてみ
こういうのはまじめに物理計算なんかやるより
それっぽく見えるように作った方が簡単。
>>849 完全に動きもスクリプトなの?
三角関数で円運動
if文
Math.random
attachMovieClip
for文
hitTest
とか必要になるよ。
久しぶりに来てみたら、丸投げスレになってね?
レイヤーやシーンの名前等は、日本語(マルチバイト文字)で 書いても良いのでしょうか? ASからアクセスしたりする時に問題が無い事は保証されていますか? 色々なサイトを探したのですが、それらしい文章が無かったので・・・。
>>849 葉っぱのアニメーションと経路を数パターン用意して、適当に重ねれば良いんじゃない?
明度調整、サイズ調整、速度調整で立体的に見えるようになる。
降り積もる演出は難しいな。
>>855 レイヤー名は何語で書いても構わない
シーンは絶対使うな
普通、プログラミング言語の変数名は英数字で書くもの
>>855 保証が欲しけりゃMacromediaに聞くよろし
>>855 レイヤーやシーンの名前をASで参照したり指定することはほとんどない。
そもそもシーンは使わない。
よって、好きにしろ。
>>842 Flashで型宣言する意味ってあまりないんじゃない?
861 :
Now_loading...774KB :2006/04/13(木) 20:30:03 ID:F1d5vMow
こんばんは、基本的な事かもしれないけれど質問です。 gotoAndStop(2);やA=2など、複数の処理を1つの変数?に入れておいて、 その変数を読み込めば、その中の処理が全て反映されるようにしたいのですが どのようにすればよいのでしょうか? なにとぞ、おねがいします。。
functionのことかな。
>>860 んなことねぇ。
クラスでは必須だしクラス使わなくても
型宣言することで自動エラーチェックもバッチリコンだ
ASが複雑になればなるほど型宣言様様です
AS2.0の場合、シンボルのプロパティにクラス名を指定するとのことですが、 同じシンボルを複数貼り付けておいて、それぞれに違うクラスを指定 (もしくはコンストラクタの引数で区別)したい場合、 どのようにするのが良いのでしょうか?
865 :
Now_loading...774KB :2006/04/14(金) 00:27:12 ID:kmrQQLNa
>>861 列挙型やマクロはASにない。
定数のような変数を作って
TEISU = 2;
他はそれを参照する
gotoAndStop(TEISU);
>>864 ???
言葉のままにシンボルを複数して、それぞれに違うクラスを指定すればいいんじゃないの?
>>837 , 838
原因が分かりました。
_root["text"+i].text.setNewTextFormat(text1_fmt); の「text.」
が不要で、これが _root["text"+i].text = kazu1; の後でした。
868 :
Now_loading...774KB :2006/04/14(金) 06:21:16 ID:kQeOOqJZ
環境:FlashMX2004,Player7,Win98SE(256MB) 上の環境でのムービープレビューで、2フレーム目のボタンアクションとして下記 のASを書いています(印刷と次フレームへの移動)。 on (release) { print("_root", "bmovie"); this.gotoAndPlay(3); } print("_root", "bmovie"); が無い場合はそのまま3フレに移動できるのですが、 これが有ると印刷が可能な反面、「このプログラムは不正な処理を行ったの強制 終了されました」というメッセージが現れ、次のフレームに移動出来ません。これ はやはり、印刷の際メモリーを消費するからでしょうか? なお、他の印刷を伴わず複雑な処理をするSWFを上記環境で実行しても、このよ うなメッセージは現れませんでした。
>>868 print(_root, "bmovie");
じゃどうかね。
870 :
Now_loading...774KB :2006/04/14(金) 23:09:19 ID:QBGrnxnq
テキストボックスでマウススクロールをさせたいのですが、 テキストボックス内のテキスト(MC:「text」) var wheelListner : Object = new Object(); wheelListner.onMouseWheel = function ( delta ){ delta2 = delta*10; text._y += delta2; } Mouse.addListener(wheelListner); このスクリプトに間違いはありますか? カクカクする上にとろいので、delta*10 (ホイールの10倍動かす)などと書いてみましたが、 書き方はあってますでしょうか?delta * 10 と空白をあけるのとどちらがいいですか?
>>870 スクロールしたいならヘルプのTextAreaクラス嫁
872 :
868 :2006/04/14(金) 23:40:48 ID:ZCfUsvyH
>>869 レスさんきゅうです。でもこの方法では改善されなかったです(印刷は出来ました)。
ボタン1押しで2つの処理を行うため、動作がかち合ってしまうのでは?と考え、代案
として動作を2つに分けました。変数frameCの初期値を0として、1押目では印刷を、
2押目で3フレ目へ移行ということで
on (release) {
if (frameC<1) {
print(_root, "bmovie");
frameC++;
} else {
this.gotoAndPlay(3);//frameCが1になったので3フレ目へ移行
}
}
とすると上手くイキました。アドバイス有難うございます。
873 :
Now_loading...774KB :2006/04/16(日) 14:29:38 ID:1E4BRTIM
var sid = setInterval(function(){ var p1 = new Point(133, 521); var p2 = new Point(224, 343); var checkDistance = function(p1, p2){ var px = p2.x - p1.x; var py = p2.y - p1.y; return Math.sqrt(px*px+py*py); } for(var c=0; c<3; c++){ var time = getTimer(); for(var i=0; i<10000; i++){ if(c==0){ var px = p2.x - p1.x; var py = p2.y - p1.y; var distance = Math.sqrt(px*px+py*py); }else if(c==1){ var distance = checkDistance(p1, p2); }else if(c==2){ var distance = Point.distance(p1, p2); } } trace("p1とp2の距離は約"+Math.round(distance)+", 計算には"+((getTimer()-time)/1000)+"秒かかりました。"); } clearInterval(sid); }, 1000); 暇潰しにこんなの演算速度を色々計ってたんだけど、 関数化すると直で計算するより速度落ちるんだね。 後、Pointクラスの計算遅すぎ。
幅30pxシングルラインのTextFieldをonRollOverで幅100pxにしテキスト全体を表示しようとしています。 幅の変更はうまくいくんですが、それに伴ってかTextFieldとその親のムービークリップが 下に2pxほど勝手に移動してしまいます。もちろんy座標を変更する処理はありません。 これは既知の不具合でしょうか。また回避する方法がありましたら教えてください。
>>874 var mc = createEmptyMovieClip("tf_mc", 0);
mc.createTextField("tf", 0, 0, 0, 30, 30);
mc.tf.text = "幅30pxシングルラインのTextFieldをonRollOverで幅100pxにしテキスト全体を表示しようとしています。"
mc.onRollOver = function(){this.tf._width = 100;}
mc.onRollOut = function(){this.tf._width = 30;}
試してみたけど、ズレないね。
※ASじゃなく、直で配置したTextFieldでもズレなかった。
textfieldかMCの位置が整数じゃないって事は?
整数じゃないとずれるかもよ。
876 :
874 :2006/04/16(日) 15:12:28 ID:wZs4WNpW
> textfieldかMCの位置が整数じゃないって事は? > 整数じゃないとずれるかもよ。 レスありがとうございます。どうもこれが原因臭いです。 検証してみます。
c1_color〜c20_colorという名前を付けて 20個のcolorオブジェクトを作成し、ボタンにsetRGBしました。 その後 for (i = 1; i < 21; i++) { hoge_mc["color" + i + "_btn"].onRelease = function() { trace(eval("c" + i + "_color").getRGB();) }; } こんな感じで、それぞれにsetRGBした値をボタンアクションで呼び出そうとしたのですが、 undefinedが返ってきます。 evalや配列アクセスを試してもダメでした。 アドバイスを宜しくお願いします。
>>877 forの最初に
hoge_mc["color" + i + "_btn"].hensu = i ;
って記述して、release内の記述のパスで
iをthis.hensuに変えてみたら良いんじゃない?
>>878 ありがとうございます。
試行錯誤してたら
for (i = 1; i < 21; i++) {
setColor(i);
}
function setColor(p:Number){
hoge_mc["color" + p + "_btn"].onRelease = function() {
trace(eval("c" + p + "_color").getRGB();)
}
}
って感じでできました。
でも教えていただいた方法の方がシンプルでよさげですね。
いろいろ実験してみます。
SharedObjectで変数の値をセーブする時 保存されるSOLファイルのファイル名、 mySharedObject = SharedObject.getLocal("sample"); たとえばこの場合sampleの部分を ユーザーがテキストボックスから入力した好きな文字に変えて データの保存を行うには、どうすればよいでしょうか。
>>880 入力フィールドのインスタンス名が"txt01"で、
仮にボタンを押したら、押した時に入力されている名前がSOL名に。
ってのなら単純に
on(release){
mySharedObject = SharedObject.getLocal(_root.txt01) ;
}
で良いんじゃない?
ボタン化したMCを使って、最初に深度を0以上に設定してれば
removeMovieClip()で消せば良いよね>SOL作成後に
エンドユーザがSOL名に使用不可な文字を入力した時に、
受付拒否る処理も忘れないでね。
>>881 迅速なレスをありがとうございます。
さっそく試してみます。
成功しました!ありがとうございました。
884 :
◆tNJLG4YYkM :2006/04/17(月) 11:13:29 ID:Zsuw3BAa
質問失礼します。 XMLファイルのテキストを表示させる際に、改行させたいのですが <BR>などでは改行できませんでしたorz 自分で色々なサイトを調べましたが、 どれをやっても画像のほうが改行?されてしまったり成功しません(´・ω・`) どなたか解決法を教えてください(`・ω・´)
885 :
Now_loading...774KB :2006/04/17(月) 11:25:20 ID:wmQQRG7F
左右の音のバランスをフレーム毎に取得するASを書いています。 ボタンアクションで音楽を開始し、下のフレームアクションで変数 t1,t2のテキスト欄に表示させたいのですが、表示できません。 (音はでます) myObj = new myObject(); myObj = {ll:t1, lr:t2};//構造体の記述 this.onEnterframe = function() { tmp = s1_sound.getTransform();//s1_soundの入出力バランスを取得 t1 = tmp.ll;//現在のバランスを表示 t2 = tmp.lr;//t2は、左スピーカー中の右の音 }; どう修正したらいいでしょうか? FlashMX2004_ver7で作製し、Player7での再生が目標です。
環境はWinXPSP2でFlashMX2004[7.2]です デザイン画面でコンボボックスとテキストインプットを置き、コードでテキストインプットの深度を前面に持ってきたらコンボボックスのドロップダウンリストがテキストインプットより後ろ側に来てしまいました。 ドロップダウンリストを必ず最前面にする方法は無いですか? コンボボックス自体は最前面に出す必要はありません。ドロップダウンリストだけ常に最前面にしたいです。 よろしくおねがいします。
>>887 どうやってテキストインプットの深度を変更したかわからんが、
レイヤー分けて配置するとかでいいのでは?
>>887 コンボボックス使わないからあまり伝わってこないけど、
swapDepth使ってるんだよね?
ならドロップダウンリストに
swapDepth(テキストインプット.getDepth() + 1) ;
すれば出来るんじゃない?質問に沿った答えか分からないけど。
インプットテキストの深度変更後に記述してくださいね。
>>888 なるほど
レイヤーの順位が優先されますね
コンポーネント開発でFlashの基礎を失念しておりました
>>889 はい、swapDepthでgetNetHeighestDepthと交換しております
レイヤーで対処できなさそうならこの方法を使わせていただきます
レイヤーなどでは上手く行かなかったです orz
一度深度の扱いを整理して、DepthManagerを使って調整することで対処しました
レスくださった
>>888-889 さん、ありがとうございました
毎フレーム行われている描画を、一時的に止めるにはどうしたらいいのでしょうか? ある状態のときに、setIntervalで呼び出される関数内のupdateAfterEventで描画更新 するので、その間は毎フレームの描画をさせたくないのです。
>>892 MC.onEnterFrame = function(){
if(_root.hantei == 1){
実行処理 ;
}
};
とかでやってみたらどうだろう?
最初から毎フレーム更新なら、hanteiの初期値は1で置いておいて
ある状態の時にsetInterval実行させるなら、その実行命令のついでに
_root.hantei *= -1 ;
で、EnterFrame内の条件式をfalseにするとか・・・。
EnterFrame内の処理を有効にしたくなったら、有効にしたいタイミングで
また
_root.hantei *= -1 ;
でtrueに戻す。
いや、「処理」じゃなくて「描画」です。 設定したFPSで必ず自動的に行われる描画を、させたくない、ということなんです。 能動的に描画機会を増やすupdateAfterEventがあるのだから、 描画機会を減らすなにかってのもないかなと思ったわけなんです。
>>894 絵を動かさなければ描画されないんじゃない?
>>894 MC全てstopしてればFPSも何も、1フレームで止まったまま再描画されませんよ。
EnterFrameを使用しているなら、分岐処理で実行処理をしないようにするしか無いと思います。
実際は毎フレーム空処理されてるわけですが。
EnterFrameを使用せず、モーショントゥイーンなどでやってるという事でしたら
やっぱりstopを使うという事になりますよね。
ムービー全てのFPSを動的に変更したいんだ!って事でしたら
全てのタイムラインを停止し、setIntervalとupdateAfterEventを組み合わせれば良いかと。
全てのFPSを完全に動的に!というなら、モーション関連も全てスクリプト制御になりますけど。
897 :
885 :2006/04/17(月) 20:08:53 ID:LbK+ncQ7
>>886 サウンドのpanは自分で変更しない限り一定だけど
あらら
898 :
Now_loading...774KB :2006/04/17(月) 20:42:10 ID:mxRKJ5nQ
【環境】MacOSX、FLASH MX 2004 rollOverで動きながら出現し、rollOutで逆再生で消えていくメニューを作っています。 MCに下記スクリプトを記述することで再生・逆再生は実現できたのですが、 MC内に複数配置したリンクボタンが機能しません。 リンクはHTMLファイルへのリンクです。 どうすればよろしいでしょうか? 記: onClipEvent (load) { nMove = 0; } onClipEvent (enterFrame) { if (nMove != 0) { nNextFrame = this._currentframe+nMove; if (1<=nNextFrame && nNextFrame<=this._totalframes) { this.gotoAndStop(nNextFrame); } else { nMove = 0; } } } on (rollOver) { nMove = 1; } on (rollOut) { nMove = -1; }
900 :
898 :2006/04/17(月) 21:01:20 ID:mxRKJ5nQ
>>899 レスありがとうございます。
スクリプト初心者なもので、残念ながら頂いたアドバイスでは解りませんでした。
ちなみにMC内に配置しているボタンからは
on(release){
getURL("aaa.html");
}
といった記述をしています。
どうして調べようとしないの? 初心者という言葉は免罪符じゃないのよ?
>>900 □□□□□
□□■■□
□□■■□
□□□□□
白MCの中に黒MCがあって
白MCにヤフーへ飛ぶように、
黒MCにグーグルへ飛ぶようにASを書いたとする。
しかしどこをクリックしてもグーグルに飛ぶことはない
何故なら黒MCは白MC内にあるから。
黒MCを押したつもりでも白MCがイベントを拾ってしまう。
rollOver でもこれと一緒。
リンクボタンを外に出すか、hitTestとマウスダウンで対応。
>スクリプト初心者なもので、残念ながら頂いたアドバイスでは解りませんでした。
わからないと思うのでASは書きませんw
903 :
898 :2006/04/17(月) 21:28:38 ID:mxRKJ5nQ
>>901 申し訳ありません。
テンプレートにあるサイトやグーグルで検索しているのですが解らなかったもので。
イベントを拾っているものとは、配置しているMCだと思うのですが
なぜその中のボタンが機能しないのか解らないのです。
>>898 ボタンが重なってるから、親MCが優先されて子MCにフォーカス行かないんじゃない?
思い切って親MCのrollOverとrollOutを、マウス座標で判定してみては?
//rollOverみたいなもん
onClipEvent(enterFrame){
if(_root._xmouse <= MCの左端座標 && _root._xmouse >= MCの右端座標 && _root._ymouse <= MCの上端座標 && _root._ymouse >= MCの下端座標){
これだと親MCがボタン扱いにならないから、子MCにちゃんと行くんじゃないかな?
rollOutの所は、rollOverの時以外。すなわちelseの時になりますよね。
ただ、これだと898さんのやっているMC内タイムライン制御の挙動がおかしくなると思います。
ですから、そこはゆっくりと考えてやってみてください。
905 :
898 :2006/04/17(月) 21:32:19 ID:mxRKJ5nQ
>>902 ありがとうございます。
アドバイスをもとに色々やってみます。
906 :
Now_loading...774KB :2006/04/17(月) 21:39:08 ID:Bh0eFIgf
904に追記 条件式内の座標は、基準点が左上ならば this._x this._x + this._width this._y this._y + this._height にしておくと、MC自体が動いても修正されますよね。 基準点が左上以外の場合は、上記をベースに修正してください。
907 :
Now_loading...774KB :2006/04/17(月) 21:40:37 ID:Bh0eFIgf
あ、ごめん・・不等号逆だった if(_root._xmouse >= MCの左端座標 && _root._xmouse <= MCの右端座標 && _root._ymouse >= MCの上端座標 && _root._ymouse <= MCの下端座標){
908 :
898 :2006/04/17(月) 21:43:13 ID:mxRKJ5nQ
>>904 細かいアドバイスありがとうございます。
座標の方法、挑戦してみます。
座標使うヤツはメンテ悪すぎる。 ちゃんとMCとイベントの流れ考えればメンテ良いの作れる。
中のMCでイベント拾って親のMC操作するイメージだね
フレームが表示される度に実行されるイベントってありますか? 初回ならアクションに直接書いたActionScriptが実行されますが、gotoAndStopで移動したときは実行されないようです DHTMLのonloadやonreadystatechangeがフレーム単位で実行されるようなイメージです 知ってる方教えてくださいませ 環境: OS:WindowsXP Flash:MX2004(7.2)
>>913 > gotoAndStopで移動したときは実行されないようです
ようです、ってなんだよ。
普通は実行される。
実行されないのがどういうタイミングか確認するのが先だろ。
今いるフレームに移動しようとしたら実行されないとか、そういうことか?
なんとなく、設計や考え方に難がある予感がする。
やりたいことを詳しく書いてみてはどうか。
すみません! 良く動作を確認したら現象が違っていました! フレームに直接コンボボックスを操作するコードを書いているのですが、selectedIndexを指定したのに表示が変わっていないのが問題でした。 こんなコードです。 if(_root.cbIndex != undefined) { _root.foo_cb.selextedIndex = _root.cbIndex; } 初回はundefinedなので変更されないのですが、二回目以降はselectedIndexを_root.cbIndexの値にしてデフォルト値を書き換えるつもりなのです。 でも、表示が変わりません。 試しにドロップダウンリストを表示してみたら_root.cbIndexの位置が選択されていたので、選択内容と表示が一致していない状態です。 これを見て「gotoAndStopで移動したときは実行されない」と勘違いしておりました。 誤った認識で投稿してしまい、申し訳ありません。 それで大変申し訳ないのですが、新しく出たこの問題について情報のある方おりませんでしょうか。 コンボボックスはeditableをfalseにしているので手書きはできません。 dataとlabelはデザイン画面で静的に設定しているので内容はあります。(ドロップダウンリスト上では選択されています) ヘルプを見る限りではselectedIndexを設定するだけでテキストボックスの中身も変わるとあり、どうすればいいか困っています。 知ってる方いたら教えてください。
スペルあってるか?
すみません、転記するとき書き間違いました(恥 実際のコードは間違っていません(.selectedIndexが青色になっています)
更に動作を確認すると、selectedIndexが指すitemのdata/labelと違うもの(テキストボックスに表示されているもの)がselectedItemのdata/labelに設定されています。 コンボボックスが2つ重なっていないかデザイン画面と「ターゲットパスを挿入」で確認しましたがそれは無かったです。 指定する直前で値が書き換わっていないかtraceしてみましたが、値がおかしくなっていることはありませんでした(ドロップダウンリストは選択されていますしね。。。) selectedIndex以外で選択状態をコードから指定する方法はないでしょうか? もしあればその方法で対処してみたいと思っていますが、selectedItemは上手くできず、悩んでいます。。。
度々すみません! 原因が分かりました。 selectedIndexへの代入操作とは別にenabledの設定を行っているんですが、enabledがfalseの時はselectedIndexを設定しても「リストだけ更新されて表示とdata/labelは更新されない」という現象が起きるようです。 コードを修正してselectedIndexの設定時一時的に必ずenabledをtrueにするようにしたら反映されるようになりました。 喜び勇んで同僚に語ったところ「え、常識じゃん?」と返されてしまいました。。。 こんな不可解な動作が常識なのでしょうか? 私にはバグにしか思えません。。。 Javaや.NETやDHTMLではenabledがfalse(disabledがtrue)でもちゃんと反映されるのに。。。 原因が釈然としませんが、動作ベースでの対応はできました。 何度も書き込みすみませんでした。 この不可解な動作についてはAdobeに問い合わせてみます。
自分の判断でスクリプト抜き出したりしないで全部書いて欲しい と思ったけどどうでもいいや
すみません、他の開発系の常識で見たのが間違いでした。。。 enabledをfalseにするだけでこんな摩訶不思議な動作になるなんて思ってもいませんでした ヘルプにもそういう記述は無かったと思いますし、あらゆる可能性を探る必要があると痛感しました ただ、コードの転載は無理です。。。 ビジネスアプリなので全体で1000行以上あり、複数のasファイルで構成されているので。。。
いちいちレポート書かなくていいから
ここに来てJAVA云々って言うヤツ怪しすぎ
XP,Flash8です。 動画の外部FLV再生をやってます。 FLVPlayBack.contentPathにURL入れると 動画再生しますが、このときにUser Agentの 指定はできないでしょうか? FLVPlayback.addRequestHeader("User-Agent","HOGEHOGE"); とかやっても意味ありませんでした。 参考になるアドレスでもいいので、お願いします。
>>924 MediaクラスにaddRequestHeaderなんてない。
ユーザーエイジェントってブラウザの種類じゃないの?
それを指定するってどういうこと?
取得ならjavascript使えばできると思う。
927 :
ami ◆ami/FR.DVU :2006/04/19(水) 10:45:16 ID:+ANxbIGG
質問お願いします。 『ボタンを押したら、1フレ目まで逆再生』 の書き方をおせえてください('A`)
>927 状況がわからんけど、基本的にはこんな感じでどうよ? btn.onRelease = function() { target.onEnterFrame = function() { this.prevFrame(); if (this._currentframe == 1) { delete this.onEnterFrame; } }; };
状況をエスパーが予想するとこうか? on(release) { _root.onEnterFrame = function() { _root.prevFrame(); if(_root._currentframe == 1) { delete _root.onEnterFrame; } } }
930 :
Now_loading...774KB :2006/04/19(水) 11:16:53 ID:+ANxbIGG
お二人さんありがとう。
説明下手でゴメン
いくつかシーンがあって、その中のあるシーンで1フレ目までrootごと逆再生したい。
MCを逆再生だったらサイトにも沢山晒してあるけれど...これはわかんなかったorz
今の状況的に
>>929 が近いみたいですが
そのASですと、シーンまでさかのぼって本当に一番最初まで戻ってしまいます('A`)
シーンの中だけでの逆再生をおせえてください。
931 :
ami ◆ami/FR.DVU :2006/04/19(水) 11:18:11 ID:+ANxbIGG
↑トリ忘れ。私ですorz
AS使うならシーン分けをしてはいけません。
933 :
ami ◆ami/FR.DVU :2006/04/19(水) 12:12:28 ID:+ANxbIGG
ですよね...orz それでは、無理でしょうか?
特定のフレーム間だけを再生することってできますか? こんなイメージです //10フレームから20フレームまで再生する play(10, 20); WindowsXP+FlashMX2004です
>928 応用すればいいんじゃね? とめたい場所のフレーム番号を調べる。 trace(this._currentframe); >(_root._currentframe == 1) そしたら、1に代入しれ。
936 :
ami ◆ami/FR.DVU :2006/04/19(水) 12:47:53 ID:+ANxbIGG
今、シーンわけをやめて全部単品にして mainのmcに単品たちを読み込ませるようにしました。 そしたら今度は↑のAS書いても動いてくれなくなりましたorz パスの指定が原因かと思って、rootを_parent._parent.などにしてみましたが ダメです。。。どうしたらよいのでしょう。
100%ターゲットパスの問題。ちゃんと調べな。
>936 target.loadMovie("test.swf"); ってやったんだろ? _root→target
>>936 最低限ターゲットパスは把握できるようになっておけ。
階層が変わる度に「どうしたらよいのでしょう」ではやっていけん。
940 :
ami ◆ami/FR.DVU :2006/04/19(水) 15:30:48 ID:+ANxbIGG
違います('A`)
説明不足でゴメンorz
>>930 のことが出来なくて困っているんです。
target.loadMovie("test.swf");
など、読み込み関係はできているので大丈夫です。
シーンわけをやめて単品にしたら
>>929 のAS書いても
動かなくなったという意味です('A`)
だからパスの問題じゃネーの? loadMovieした時にパスが変わるからでしょ?
942 :
924 :2006/04/19(水) 16:18:32 ID:Kl9ZgoPC
>>926 とりあえずUserAgentなんですが、
アクセス時のヘッダの書き換えができれば、
Basic認証とかレンジアクセスともできるので夢が広がるかと。
無理っぽいですね。
すいませんでした。
オラなんだかワクワクしてきたぞw >940 >違います('A`) 何が違うの?具体的に書いてください。 パス関係なら、 >target.loadMovie("test.swf"); 例えば、_root.loadMC.loadMovie("test.swf");としたのなら、 >929の_rootを全部loadMCに置き換えて下さい。 例) _root.onEnterFrame = function() { ↓ loadMC.onEnterFrame = function() { 今後の参考に、あなたの年齢を大体で構いませんので教えていただけますか? 説明の仕方が年齢によって変わってきますので。
943うぜえ バカは黙ってろ
945 :
ami ◆ami/FR.DVU :2006/04/19(水) 17:26:43 ID:+ANxbIGG
on (release) { _root.mc.loadMovie("service.swf"); } で読み込み、逆再生ボタンには on(release) { mc.onEnterFrame = function() { mc.prevFrame(); if(mc_currentframe == 1) { delete mc.onEnterFrame; } } } と書きました。 動かないです。
>>945 だからパスの問題じゃん
もう教えたくない
>>945 とりあえず、すべての
mc
↓
_root.mc
と変えて実験してみて。
>>945 .flaうp
↓
直す
↓
.flaうp
↓
見てみる
↓
ブラクラになってた
↓
もうこねぇよ
の流れを是非
>945
>動かないです。
何がうごかないんでしょうか?具体的に書くと話が早いです。
onEnterFrameは機能してる?
書き出しのヴァージョンによっては動かない事もありますよ。
差しさわりが無ければ、.flaファイルアップするとか。
>948がいじってくれるかも。↓アップローダー
ttp://www.uploda.org/ ここまで付き合ったんだから是非教えてください。
歳いくつなんだ?教えてくれ。
その不理解っぷりにすごい興味出てきて止まんないんだよ
どうすればこうもコミュニケーションのとれない人間が育つんだ?
質問するヤツとりあえず一行目に "16歳♀です" って入れておけ
>>949 初心者なんてそんなもの。
あんたは何を期待してるんだ?
最近MXからflash8に変えたんだけど AS書いてて、キーの入力から実際にコードが表示されるまでに なんかレスポンスない? MXの頃はそんなこと無かったと思うんだが、これってPCのスペックの問題か? 当方セレロン2G メモリ512のPC使ってます。 flash8つかってる方で同じような現象の方いますか?
>>952 確かに少し重いよ。
MXで出来ることはMXで作る。
8でしか出来ないことは8でやるのがベスト。
簡単なシューティングを作ろうと思ってるんですけど… 複製の弾で複製の敵に影響を与えるにはどう組んだらいいですか?
>>954 影響?
シューティング作るなら、
複製:duplicateMovieClip
じゃなく、attachMovie使った方がいいよ。
MovieClip.attachMovie
MovieClip.hitTest
MovieClip.onEnterFrame
あたりをヘルプで調べてみ。
弾をattachするときにそのMCを tama_arrayに登録 敵をattachするときにそのMCを teki_arrayに登録 _root.onEnterFrame=function(){ for(var ia in tama_array){ for(var ib in teki_array){ if(tama_array[ia].hitTest(teki_array[ib])){ //衝突処理の関数にtama_array[ia]とteki_array[ib]を渡す } } } }
957 :
Now_loading...774KB :2006/04/20(木) 03:43:30 ID:Ui7yjCTB
FlashMX2004を使ってkamiというMCの内部に曲線を描くASを書いています。 rootに開始ボタン(インスタンス名:startB)を配置し、これを押してkamiのタイ ムラインのフレームアクション(下) r = 100; this.lineStyle(3, 0xffffff, 100); this.moveTo(0, r);//インスタンスkamiの中心点から開始点に動かす _root.startB.onRelease = function() { this.curveTo(r, r, r, 0); trace("Play"); }; から、曲線を描きたいのですが現れません。どう修正すればいいでしょうか? なお、trace("Play")でPlayは出ます。
線の色白でいいんか。 _parent.kami.curveTo(r, r, r, 0);
959 :
957 :2006/04/20(木) 05:12:10 ID:iWM4FSQc
>>958 はい白でいいです。うまく出来ました。
ところで、_parent.kamiはthisとどう違うのでしょうか?
kami上に描いているので変わらないと思いますが、違いが分かりません。
ボタンに設定したんだからボタンからの相対パスになるわけ。 trace(this);してみそ。
>>959 イベントハンドラメソッド内でのthisは、
イベントをハンドリングするオブジェクトを参照する。
この場合のthisは_root.startB。
962 :
ami ◆ami/FR.DVU :2006/04/20(木) 10:03:41 ID:xStnOidD
963 :
ami ◆ami/FR.DVU :2006/04/20(木) 10:16:38 ID:xStnOidD
>>947 置き換えたら逆再生が出来て、問題解決しました!
みなさん馬鹿にアドバイスありがとうございました。
ですが!逆再生すると通常の再生はできなくなってしまうんです('A`)
@ボタンを押して1フレーム目から10フレーム目までを再生
↓
A別のボタンを押して10フレ目から1フレ目まで逆再生
↓
Bここで@をやることが出来ない
お前が馬鹿だからできないんだろ 丸投げ厨は消えろや
もう、「作ってくれ!」と言ってくれた方がはるかに早そうだ・・・
966 :
ami ◆ami/FR.DVU :2006/04/20(木) 10:38:26 ID:xStnOidD
迷惑掛けてすみません。 ノシ
>>954 シューティング作るなら、まずオブジェクト指向を
覚えるといい、敵の管理と玉の管理するのに必要と思われ
while中に、1フレーム進めながらif判定をしたいのですが、どうすればいいのでしょうか? i=0; ii=3; while(i<1=10){ if(ii==10){ trace("ok"); break; }else{ //★ここで1フレーム進めたい }i++;ii++;} よろしくお願いします。
>>968 普通は、onEnterFrame とか onClipEvent(enterFrame){} を使うけど、
場合によっては、★部分に
nextFrame();
updateAfterEvent();
かな。
途中経過の表示が必要なければ、nextFrame();のみでいい。
訂正。 調べたら、updateAfterEvent();に関して、 forやwhileループ処理内から実行したときは、画面の更新が行われません。 と書いてありました。
これ、意図がよくわからん。 while(i<1=10)
>969 空いてるMCが無かったんでwhileでどうかな?と思ったんですが、 用意してonEnterFrameしてみます。 調べてくださってありがとうございました。 >i<1=10 着にスンナw
最近の質問側は終わってるな
そもそも質問する側が「努力して理解したい」のか「努力理解抜きで結果は欲しい」のか 自覚せずに、なんでもかんでも「教えてください」と言うから混乱するんだろうな。 後者なら「代わりにAS書いてください」「作って下さい」と言って欲しいもんだ。 そうすれば、誰も説明とか余計なことしないし、理解や努力も期待しないだろ。
最近は丸投げが多すぎて、質問に答えなくなった。 ヒント貰うくらいにして、後は自分で考えないと本人のためにならん。
>>975 別に本人のためとか考える必要はない。
質問者は私たちに難解な問題を提供してくれています。
国語のな。
980 :
Now_loading...774KB :2006/04/21(金) 09:41:27 ID:+AR1bETe
(上のやりとりを見ると怒られそうなのですが・・・・) 環境:FlashMX2004,Player7 ボタンを押すと _root.attachMovie("txt1", txt1a, 2, prop); により、txt1というMCが別名:txt1aでステージ上に現れ、フレームアクション this.onEnterFrame = function() { txt1a._y += speed; }; で、上に動くようにしたいと思っています。 このASでは、txt1aはステージ上に現れるのですが全く動きません。 原因のご指摘を願います。
attachMovieの第二引数をダブルクォートで括ってないなら、 変数txt1aの内容を名前としてアタッチされると思う。
982 :
980 :2006/04/21(金) 10:01:49 ID:+AR1bETe
しまった! 上方向だから txt1a._y -= speed; だった。
983 :
980 :2006/04/21(金) 10:33:09 ID:Jtjjz3Z9
>>981 _root.attachMovie("txt1", "txt1a", 2, prop);
ですよね?
動かないです。
>>983 動くよ。
this.onEnterFrameはいつ、どこのフレームに書いてるの?
speedの初期値は入ってるの?
propに矛盾する関数とか入れてない?
985 :
980 :2006/04/21(金) 12:07:28 ID:uxadYFVf
>>984 ありがとうございます。
this.onEnterFrameは、rootの1フレ目に書いています。
speedの初期値は、this.onEnterFrameの前に speed=5 としています。
propは、出現場所として prop={_x:10, _y:100} などとしています。
>985 attach直後の命令はフレームを進める必要がある。 macromediaサイトに書いてあったのを昔呼んだことがあるがどうよ? _root.attachMovie("mc","mc",i); _root.onEnterFrame=function(){ mc.onEnterFrame=function(){ ステートメント } delete _root.onEnterFrame; }
1フレ目は扱いが特殊なんで、ここにAS書くのはあまりおすすめしないが、 それは別として自分の環境では以下で動いた。 1フレ目に以下の内容コピペして、ボタンがわりにMC「b_mc」を配置。 prop = {_x:10, _y:100}; speed = 5; this.onEnterFrame = function() { txt1a._y -= speed; }; this.b_mc.onRelease = function() { _root.attachMovie("txt1", "txt1a", 2, prop); }; この最小構成でも動かないのか?
988 :
980 :2006/04/21(金) 15:25:38 ID:nrG2su4o
>>986 ,987
出来ました。987さんの方法を採用しました。
ところで、「1フレ目は扱いが特殊なんで」とのことですが、どのような弊害が
生じるのでしょうか?
1000が近づいてます。 残り10だけとなると質問しづらい、回答もしづらい微妙な間です。 といって、一つ埋めてみるテスト
では埋めましょう
for(var i = 993 ; i <= 1000 ; ++i){ name.text = "" ; mail.text = "sage" ; hatugen.text = i + "ゲット埋め" ; }
for(var i=0;i<10;trace("1000Get!!!"),i++);
while(trace("1000Get!!!"));
995 :
Now_loading...774KB :2006/04/21(金) 20:27:24 ID:rXBgIwUy
ムービー内のスクリプトが原因でFlashPlayerの実行速度が遅くなっています。
996 :
Now_loading...774KB :2006/04/21(金) 20:31:15 ID:fPzVoZd6
996
>>995 ループ内でtraceしてると
そのメッセージ出ないで死ぬ場合が多い
if ( 質問 == "日本語" ){ return 回答 } else { return スルー }
そういえばフラッシュ1クリックしないとアクティブにならなくなったけど 外部JSで対策してる人居る? 居たとしたらjaba切られてるユーザへの対処はどうしてるんだろ・・・ 999で聞いても無意味かw
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。