ActionScript 誰かが物凄い勢いで解答するスレ 23

このエントリーをはてなブックマークに追加
952Now_loading...774KB:2009/07/30(木) 12:58:28 ID:kZIg9djd
なんだろね。MX2004はアクションパネルで押しピンみたいなの押してスクリプト固定すると、反映されないようなバグがあった気がするけど
953Now_loading...774KB:2009/07/30(木) 13:15:46 ID:r054Uwy/
お答えありがとうございます。

>>951
正規品です。
アップデートというのは
MXからMX2004へのアップデートとか言うことですか?
それならしてません。
最初にかったMX2004のままです。

>>952
押しピンは使ってますので
それなんですかね

とりえあず保存する時は押しピンを戻してからやってみます。
954Now_loading...774KB:2009/07/30(木) 13:52:16 ID:gKBBvU3A
>>951
ボタンを押すタイミング……とかそういうことですか?
見当違いなことを言っていたらすみません
955Now_loading...774KB:2009/07/30(木) 14:22:56 ID:Jtquc1pC
>>953
そうではなくて、2004用のアップデータね。Adobeにあるよ。

>>954
フレーム遷移を行う場合は、必要なフレームまで確実に読み込んでから
スクリプトを実行するように設計しないと意図した動作にならないよ、ってこと。
ネットで動画を見る時のように、Flashの実行にもファイルを読み込むには多少
(たとえ一瞬にみえても)の時間はかかるわけです。
で、たとえばフレーム1が読み込まれていても、フレーム15が読み込まれていなければ
その時点ではフレーム15に移動することはできません。
Flashには、ファイルの読み込み完了を検知する方法もあるので、それを使えば
この問題が回避できます。
もしかしてこれが>>950の原因じゃないかもしれないが、考えられる可能性のひとつ。
956Now_loading...774KB:2009/07/30(木) 15:01:29 ID:gKBBvU3A
>>955
全て読み込まれるまで操作を待つ、ということですか
ためしに十分に待った後操作をしましたが、今回の原因はそれではないようです

どうもnextFrameではなく、goto〜で直接フレームに飛んだ際に、
そのフレームにあるnextFrameやprevFrameのボタンが無効になっているように思えます。
一部、特定のフレームのみであって、直接フレームに飛んだ場合すべてが同じ状況になるわけではないです。
957938:2009/07/30(木) 15:06:32 ID:yL4vyFit
すいません。
何かヒントはないでしょうか?

ググっても1件だけ症状の報告があるだけです。
958Now_loading...774KB:2009/07/30(木) 15:06:46 ID:Jtquc1pC
>>956
だとすると、これ以上はもっと具体的な情報がない限りわからんです。
そもそも、たとえボタンが無効になっていなくても、フレーム遷移しただけでは
ボタンのアクションは実行されないはず。
trace()するとか、flaの内容を簡略化するとかして、再現の条件を絞り込んでみるのがよさそう。
959Now_loading...774KB:2009/07/30(木) 15:14:24 ID:gKBBvU3A
>>958
onReleaseの中でtraceしてみたんですが
なんかボタンが上手く動いているときにすら出力がなされないというよくわからない結果になりました……
960Now_loading...774KB:2009/07/30(木) 17:41:48 ID:JI885zbu
>>959
同じインスタンス名のボタンやらが
ステージ上に重なって2つ以上あるとかない?
961Now_loading...774KB:2009/07/30(木) 19:47:34 ID:gKBBvU3A
>>960
そういうことも特には……

ちょっと長いこと悩みすぎてるんでここいらで終わらせてしまいます
ありがとうございました
962Now_loading...774KB:2009/07/30(木) 19:51:47 ID:ZWLf89EU
>>961
ボタンはどうやって配置してるの?
actionscriptで配置してたりする?
963Now_loading...774KB:2009/07/30(木) 20:24:32 ID:gKBBvU3A
>>962
ライブラリで作ってそこからドラッグで持って行っていますが
964Now_loading...774KB:2009/07/31(金) 17:26:45 ID:wW3yEn/+
なんかスプライト同士がくっついた時に、それをキャプチャーして
そのスプライト同時を画像にする事は可能ですか?
965Now_loading...774KB:2009/07/31(金) 22:35:05 ID:PMVsfUGA
>>955
アップデートしてみました。
おかげで今日はきちんと保存されてました。
ありがとうございました。
966Now_loading...774KB:2009/08/01(土) 11:23:51 ID:in6hWdnU
BitmapData
967Now_loading...774KB:2009/08/02(日) 15:44:56 ID:TaflAZnC
AS2、parafla、vistaです。
ローカルに変数を保存しようと思っています。
paraflaのプレビューでは、paraflaを再起動させても保存されているのが確認できます。
しかしswfファイルを再生した場合、一度終了させると保存されていません。
どうしたら保存がうまくいくでしょうか。下にコードも書いておきます。

so = SharedObject.getLocal("data"); //書き込み
so.data.hiscore = _root.score;

so = SharedObject.getLocal("data"); //読み込み
_root.hiscore_text = so.data.hiscore;
968Now_loading...774KB:2009/08/02(日) 20:24:01 ID:66yggHSp
保存確認はどうやってるの?
data.solの有り無しorタイムスタンプだけで調べてる場合は
保存場所がプレビュー時と違ってるとか?
969Now_loading...774KB:2009/08/02(日) 22:45:05 ID:ph0efH/F
質問です。
xp/AS3でoverrideをしようとしてるのですがうまくいかず
「1020:override としてマークされたメソッドは、別のメソッドをオーバーライドする必要があります。」
というエラーがでます。

overrideしようとしてるのは、papervison3dのdrawParticleです。

何か原因に心当たりがある方はいらっしゃいませんか?
970Now_loading...774KB:2009/08/03(月) 00:30:21 ID:jzVO9nNY
写真が5秒ごとに切り替わるスライドショーを作りました。
mcに写真を格納するのですが、
removeChild(mc)
として確かに表示が消えているのですが、
numChildrenでstage上の子オブジェクトの数を数えると、
どんどん5秒ごとに一つずつ値が増えていってしまいます。

mc = nullと加えてもだめでした。
どうやれば、確実にnumChildrenの値をずっと、
1に保つことができますか?

数が増えていくってことは、メモリを食って言ってるってことですよね?
971Now_loading...774KB:2009/08/03(月) 00:31:51 ID:jzVO9nNY
※すみません、970です。足りない部分があったので、
再度書き込みます。

写真が5秒ごとに切り替わるスライドショーを作りました。
mcに写真を格納する仕様です。
5秒経過後に、
removeChild(mc)
としていったん、mc自体を消します。
そしてまたmcを表示して、次の写真を表示します。

これを行うと、確かに表示が消えているのですが、
numChildrenでstage上の子オブジェクトの数を数えると、
どんどん5秒ごとに一つずつ値が増えていってしまいます。

mc = nullと加えてもだめでした。
どうやれば、確実にnumChildrenの値をずっと、
1に保つことができますか?

数が増えていくってことは、メモリを食って言ってるってことですよね?
972>>967:2009/08/03(月) 09:21:56 ID:ujJFBngZ
>>968
レスありがとうございます。
保存確認は特にしていません。
あと、プレビュー時とswf実行時の保存場所は違っていても良いです。
しかし、swf実行で保存したはずのデータも、次のswf実行時には消えています。
973Now_loading...774KB:2009/08/03(月) 12:42:23 ID:mmKf45dT
>>972
保存確認というのは、つまり、何をもってして「データが消えている」
「保存されていない」という判断をしているのか?ってことじゃないかな。
単に確認の仕方が悪くて、保存されていないように見えてるという可能性はないのかどうか。
ところで、任意の時点で保存したいなら、flush()したほうがいいよ。
974Now_loading...774KB:2009/08/03(月) 15:59:41 ID:4G00Ridm
質問です。

下記のようなxmlを表示させたいのですが
その場合のXPathの書き方ってどうなるのか不明です

<example id='1' name='abc'>


nameの中身を取り出したい場合の記述がわからず。

失敗例)
aa['example'] = XPathAPI.selectNodeList(xml.firstchild,"example/[@id=*]")

環境はAS2.0、
xmlのverは1.0です

以上、よろしくお願いします
975Now_loading...774KB:2009/08/03(月) 16:27:27 ID:jzVO9nNY
AS3初心者です。よろしくお願いいたします。
下記にようなエラーが発生しました。

何が原因なのかエラー一覧のAdobeの公式をみてもわかりませんでした。

エラー内容

--1084: シンタックスエラー : identifier が ○○ の前に必要です。--

上記が何をどう示しているのか皆目検討がつきません。
ご指南ください。 よろしくお願いいたします。
976Now_loading...774KB:2009/08/03(月) 17:13:43 ID:FdwocMVL
var or function
977Now_loading...774KB:2009/08/03(月) 17:23:18 ID:ujJFBngZ
>>973
ローカルに保存した変数を普通の変数に代入し、テキストボックスに表示させているので
そのテキストボックスを見て確認しました。
また、保存フォルダを見てみると、paraflaのプレビューで作られたsolファイルはありますが
それ以外には見当たりません。なお、flush()しても変わりませんでした。

プレビューなら正しく動くということは、AS以外の問題である気がしてきました…
あまり長引くのも迷惑かと思うのでもう終わりにしても構いません。
回答してくれた方々、ありがとうございました。
978Now_loading...774KB:2009/08/03(月) 22:13:42 ID:TmhPyRuY
AS3,FlashDevelop,FlashPlayer10で開発してます。

var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, traceData);
loader.load(new URLRequest("xml.xml"));

private function traceData(event:Event) : void {
var xml:XML = new XML(loader.data);
var xmlList:XMLList = xml.item;
trace(xmlList.length);
}

<?xml version="1.0" encoding="utf-8"?>

<data>
<item id="1">
<name>DQ</name>
<price>80</price>
</item>
<item id="2">
<name>FF</name>
<price>100</price>
</item>
<item id="3">
<name>TOV</name>
<price>120</price>
</item>
</data>

これでEvent.COMPLETEのメソッドは呼ばれるんですが、
取得したデータの中身が空っぽで、lengthが0になってしまいます。
どうかご指南ください。
979Now_loading...774KB:2009/08/03(月) 22:40:04 ID:0kLh3GXr
>>978
URLLoader.dataFormatの指定がいるかも
>URLLoaderDataFormat.TEXT の場合、受け取るデータは、読み込まれたファイルのテキストを含むストリングです。
>URLLoaderDataFormat.BINARY の場合、受け取るデータは、生のバイナリデータを含む ByteArray オブジェクトです。
>URLLoaderDataFormat.VARIABLES の場合、受け取るデータは、URL エンコードされた変数を含む URLVariables オブジェクトです。
>デフォルト値 : URLLoaderDataFormat.TEXT.
980Now_loading...774KB:2009/08/04(火) 00:31:09 ID:xT8iMwDP
失礼します、質問させて下さい。環境はFlashCS3 の AS3.0です。
ボタンクリックで、時差でムービークリップを再生後に動くようにしたく、Timerを組み込んで作っています。
中に入るムービークリップが入れ替わりたいため、それぞれa_1 a_2 a_3〜というようにインスタンス名をつけています。
今、仮にスクリプトを組んでいるのですが、クリックでa_3は動くものの、Timerを作動させて再生&動かすa_1 a_2に関しては
「条件は未定義であり、プロパティがありません。」と出てしまいます。
先に変数 ii を宣言し、それを後の this["a_"+(ii+1)]というように代入させていっているのですが、
Timer内のものたちには数値がきちんと代入されていない、ということなのでしょうか。
ひとつの変数をすべてに生かすことは、できないのでしょうか?
大変初歩的な質問で申し訳ありません、、教えて頂けると幸いです。


981Now_loading...774KB:2009/08/04(火) 00:33:24 ID:xT8iMwDP
980です。仮に組んだスクリプトは、以下の通りになります。
var ii:int = 1;
a_btn.addEventListener(MouseEvent.CLICK,xClick);
function xClick(evt:MouseEvent):void {
this["a_"+(ii+2)].play();
var a_3xTimer:Timer = new Timer(900,1);
a_3xTimer.addEventListener(TimerEvent.TIMER,do3xTimer);
function do3xTimer(e:TimerEvent):void {
this["a_"+(ii+2)].x += 57
}
var a_2Timer:Timer = new Timer(200,1);
a_2Timer.addEventListener(TimerEvent.TIMER,do2Timer);
function do2Timer(e:TimerEvent):void {
this["a_"+(ii+1)].play();
}
var a_2xTimer:Timer = new Timer(1100,1);
a_2xTimer.addEventListener(TimerEvent.TIMER,do2xTimer);
function do2xTimer(e:TimerEvent):void {
this["a_"+(ii+1)].x += 57
}
982Now_loading...774KB:2009/08/04(火) 00:36:40 ID:xT8iMwDP
//981のつづきです

var a_1Timer:Timer = new Timer(400,1);
a_1Timer.addEventListener(TimerEvent.TIMER,doTimer);
function doTimer(e:TimerEvent):void {
this["a_"+ii].play();
}
var a_1xTimer:Timer = new Timer(1300,1);
a_1xTimer.addEventListener(TimerEvent.TIMER,do1xTimer);
function do1xTimer(e:TimerEvent):void {
this["a_"+ii].x += 57
}
a_3xTimer.start();
a_2xTimer.start();
a_1xTimer.start();
a_1Timer.start();
a_2Timer.start();
}
983Now_loading...774KB:2009/08/04(火) 01:53:08 ID:Kq0quiXn
それぞれのタイマーのaddEventListenerで指定しているリスナー関数が、関数xClick内にあるためthisの参照先が変わっているからです
関数
do3xTimer
do2Timer
do2xTimer
doTimer
do1xTimer
をxClickの外に書けばいいと思います
984Now_loading...774KB:2009/08/04(火) 02:33:42 ID:xT8iMwDP
>983さん

ありがとうございます、無事解決できました!!
xClick関数でいうthisとは、xClick命令をかけているa_btn自身になってしまう、というかんじなのですね、
納得です。。。
985Now_loading...774KB:2009/08/04(火) 05:38:33 ID:V1icudO4
>>979
お答えいただき、ありがとうございます。
しかしURLLoader.dataFormatを変えても
XMLファイル内のデータを取得できませんでした。
loader.bytesLoadedプロパティでみても0と出てきてしまいます。

もう少しがんばってみます
986Now_loading...774KB:2009/08/04(火) 10:39:44 ID:BCHoRaF0
Flash Player 9 です。

外部の mp3 ファイルを再生しようとしています。
例えば test.mp3 を再生します。

var mcSound:Sound = new Sound( this );
mcSound.loadSound( "test.mp3", true );

ところが、結果は、
早送りみたいな再生になってしまって、
8分あるはずの mp3 ファイルが
1分ほどで早送りの音で再生されてしまいます。

ビットレートや長さが違う mp3 ファイルに代えても
結果は同じで、早送りみたいな再生になってしまいます。

どうすれば普通に再生してくれるでしょうか?
987Now_loading...774KB:2009/08/04(火) 10:48:19 ID:JEqDeZnR
>>986
間違いなくMP3側の書き出し設定の問題
サンプリングレート:44100Hz
ビットレート:128kpbs
あたりで書きだして読み込んでみ?
988Now_loading...774KB:2009/08/04(火) 10:57:46 ID:JEqDeZnR
>>985
lengthじゃなくてlength()じゃねーのかな
たぶん読み込めてんじゃない?
trace(xmlList.length(),xmlList[0]);
989Now_loading...774KB:2009/08/04(火) 11:07:03 ID:BCHoRaF0
>>987

おっしゃる通りでした。
モノラルで 16kbps, 32kbps の mp3 ファイルでは
上述のように早送りになってしまったのが、
64kbps にしたら、正常に再生してくれました。

低ビットレートの mp3 ファイルを
普通に再生する方法はないのでしょうか?
990Now_loading...774KB:2009/08/04(火) 12:26:56 ID:RVAbsNtM
FLASHとMYSQLを連携するのに一番簡単なのはPHPを使う方法ですか?
991Now_loading...774KB:2009/08/04(火) 12:47:54 ID:Rchse4OL
オライリー「詳説 ActionScript 3.0」ですが、CS4の環境で学習書とするには
内容が古いでしょうか?
高価なものなので悩んでいます。
992Now_loading...774KB:2009/08/04(火) 13:01:45 ID:d57xYwwQ
>>990

assqlってライブラリがあるらしいよ。
詳細は自分で調べて

ttp://code.google.com/p/assql/
993Now_loading...774KB:2009/08/04(火) 13:12:50 ID:JEqDeZnR
>>991
AS3.0の本だからCS4でも問題ないんだけど、あの本は1冊目に読む本では無いかなあ
良い本なので、持ってて損はしないけど、ちょっと深めの話題なんだよね
難しいとかではなく、「なんでAS3.0はこういうつくりなのか」という事が載ってる本
994Now_loading...774KB:2009/08/04(火) 13:22:40 ID:JEqDeZnR
>>989
外部サウンドを読み込んで使う方法じゃあ、無いんじゃないかなあ
効果音みたいなものだったら、Flashだったらライブラリに埋め込んでおいて、Flashをパブリッシュする際にビットレート落として書きだすとかできるんじゃないかな
995991:2009/08/04(火) 16:54:04 ID:Rchse4OL
>>993
Flash本体の学習書は別ですが、AS3.0では1冊目で、少々高くても1冊で済めばと考えました。
原著が2年前ですし、どこかで古い(FlashPlayer10向けには?)という書評を見かけたもので
一度は決めたんですけど心配になりました。書店で立ち読みしても判断付かないんですよね。
オライリー本は好きで、JSやCSSなどを学習しています。

最近の入門書を含めて再検討してみます。ありがとうございました。
996Now_loading...774KB:2009/08/04(火) 16:59:35 ID:0+uGJArf
>>995
ああいう本は、ある程度やりたいことが出来るようになってから
知識と応用範囲を広げるために読む門じゃないのかな
面白いのは分かるけど、読むことが目的になりがちなので注意
997Now_loading...774KB:2009/08/04(火) 18:55:37 ID:R19pxm6s
AS3.0で、文字列比較がうまくいきません。
文字コードなどは関係あるのでしょうか?

ついでに次スレ建てておきます。
http://pc12.2ch.net/test/read.cgi/swf/1249379608/
998997:2009/08/04(火) 21:02:46 ID:R19pxm6s
自己解決しました。

ByteArrayを.toString()で文字列にして比較したのが間違いでした。
ByteArrayを.readUTFBytes()で読み込んで等価比較したらif文がすんなり通りました。
1時間悩んだのが恥ずかしいですw
999Now_loading...774KB:2009/08/05(水) 00:01:20 ID:joiUa8TU
kinenn kakiko
1000Now_loading...774KB:2009/08/05(水) 00:02:30 ID:joiUa8TU
umeume
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。