ActionScript 誰かが物凄い勢いで解答するスレ 225
1 :
Now_loading...774KB :
2009/11/21(土) 05:43:15 ID:BR9ifWLt
2 :
Now_loading...774KB :2009/11/21(土) 14:57:24 ID:yay0fwcT
はじめまして。 actionscriptでボンバーマンを作っています。 爆弾の火炎がブロックを突き抜けないようにするにはどうしたらよいですか?
3 :
Now_loading...774KB :2009/11/22(日) 05:30:31 ID:7sPqax9t
質問 socket通信でMCにアクションを与えるにはどうしたらいいでしょうか?
4 :
Now_loading...774KB :2009/11/22(日) 10:34:15 ID:u7HRRkOR
配列について誰かおせーて var list = new Array(); var Y = 7; if (配列の中に変数Yがあるか){ trace("あるよ"); } if文の条件式はどうやって書いたらいいんだ?
var list = [ 4,5,8,3,1,7,6,4,3] var Y = 7; var check:Function = function():Boolean { for each( var a:String in list ){ if ( a == Y ) { return true; } } return false; } if ( check() ) trace("あるよ"); else trace("ないあるよ");
for each( var a:String in list ){ ↑あーstring型になってるけど直して
7 :
Now_loading...774KB :2009/11/22(日) 18:26:58 ID:u7HRRkOR
FLASH内の速度を保つ為フレームスキップをする時は無音のWAVをストリーミングをかけて行っていたのですが 他にも良い方法はあるのでしょうか
10 :
Now_loading...774KB :2009/11/22(日) 22:42:16 ID:7sPqax9t
>>10 具体的に何がやりたいかが見えない・・・
どっかからsocketでデータを読んできて、
その内容に応じてMCを動かすってこと?
12 :
Now_loading...774KB :2009/11/22(日) 23:08:31 ID:7sPqax9t
>>11 例えばKeyboard.UPを押したらMCを上に移動させたいです
>>10 [サーバ(何らかのCGIなどが動いているサーバ)]
↑ │
(1.Socket で情報要求 ⇒ 情報返却)
│ ↓
[ SWF ]
2.取得した情報を元に、MovieClip なりなんなりを動かす
>>12 socketクラスは使わないんですかね
そうだとしたら、「flash キーボードイベント」とかでググればいいと思います
環境を書いてくれたら、エロい人がコードを載せてくれるかもしれません
>>12 要はネットワーク越しにリモート操作みたいな事をしたいって事か?
1.[PCその1] キーボード押す「ABC」
2. → 押された内容をサーバに送信
3. → [PCその2] サーバに情報要求、1の内容を取得
4. → PCその2上で、MovieClip を動かす
みたいな。 あるいはマッチングサーバ上でIP受け取って、Peer2Peer で通信するってなら
2を端折って、3はPCその1から取得になるが
人を下手に見る俺のいやな性格がにじみ出てるぞ、おい
質問の仕方が曖昧で詳しい内容を書いてない所から、初心者なのかな?と推測した上で簡単に補足しておくと、 マッチングサーバやPeer2Peerあたりの処理は、基本的にCGI他で自作する必要がある。 その為に必要な知識は、ネットワークは当然として他にマルチスレッドや、場合によってはDBの知識もいるので、 (あるいはDBのようななんらかの処理もいる、かも、しれないので) 質問にあった 「やりたいこと」 は簡素でシンプルでも、理解して実装するには結構な経験が必要になるよ 手前の素養が十分なら、資料探して実験でもすれば あぁなるほど って簡単にわかるとは思うけど 既にこの辺お手の物って人だったら、老婆心スマン
18 :
Now_loading...774KB :2009/11/23(月) 10:00:12 ID:ei6HublK
スティッカムやUStreamのカメラやキャプチャを使ったライブ配信で 送信する映像の圧縮をブラウザのflashプラグインではなく、 別ソフトでエンコードしてライブ配信したいのですが可能でしょうか? どちらも映像の送信帯域が100kbps程度しかなく激しい映像は ブロックノイズだらけになり視聴に耐えません。 flvのh264フォーマットを別ソフトでリアルタイムエンコすればマシになるのではと考えてます。
19 :
Now_loading...774KB :2009/11/23(月) 16:35:26 ID:obJthXtc
質問させてください socket通信機能までは作ったのですが ユーザー毎に違うMCを配置するにはどうしたらいいでしょうか?
>>19 お前、上の ID:7sPqax9t か?だからもっと具体的に。
上の方のレスとか読んで無いのか?
質問の内容が、実装のアイデア次第でどうとでも作れるような内容なので答えようが無い。
ユーザー毎に違うMCって何? ログインさせてそれぞれ違う絵を表示させたいって事なら、
最早ASの質問じゃなくて、実装方法の質問になる。 そうだった場合、 ID:MseXE1s7 のレスを見ろ
21 :
19 :2009/11/23(月) 17:23:02 ID:obJthXtc
ライブラリにはmc1とmc2があります。 user1がログインしたときmc1をuser2がログインしたときmc2を表示させたい。 ASはどのように書いてよいのかさっぱりわかりません。 そもそもuser1からuser2は見えるの?
>>21 ひょっとして前にドラクエ作るとか言ってた人か?
>user1がログインしたときmc1をuser2がログインしたときmc2を表示させたい。
>ASはどのように書いてよいのかさっぱりわかりません。
ASだけで出来る訳無い。 ログイン、って言うのはどこに?
その辺の仕掛けを既に作っているなら、単にサーバから 「そのユーザのID」 を返してもらって、
そのIDに紐づく別の swf なり画像なりをサーバからロードでもすりゃいいんじゃね?
それほど多く無いのなら、単にそのライブラリ上のMovieClipを表示すりゃいいんじゃね?
とりあえず、これASの質問じゃないと思う
>>22 を訂正というか補足というか。
「ASだけで出来る訳無い」 ってズバっと書いちゃったが、そもそも話の前提が何も書かれてなかったので、
例えば Socket で Peer2Peer しながら、って話なら ASだけでも出来ると言えば出来るし、
Flex の Multimedia Server 使うって話なら、AS の範疇かもしれない。
いずれにしても前提も内容も最初から書いて質問してほしい。じゃないと答える方がしんどい
24 :
19 :2009/11/23(月) 17:59:51 ID:obJthXtc
>単にそのライブラリ上のMovieClipを表示すりゃいいんじゃね? いや、user2がログインしてMC2を表示させるだけだと他のuserからuser2は見えませんよね? ただ単にMCを表示するだけじゃダメですよね。その辺のASの書き方がわからないのです。
>>24 だからPeer2Peerで、とかサーバを介してとか、自分で前提を出せよ。 全部の例書かせる気か。
見えませんよね?じゃなくて見えるようにすりゃいいだけだってば。
それは実装方法の問題。 ASの書き方、じゃなくて。
あと失礼だけど質問の様子から見て、多分やりたい事と自分の技術のギャップがデカ過ぎないか
あと、付いたレスに対して、「ここがわかる、ここはわからない」 をせめて書いてくれ これじゃどこまで話すべきかすらわからない。 全部エスパーしないといけない
tweenで右に移動しているオブジェクトがあります ボタンを押すと動きを高速化させたいのですがどうすればよいでしょうか またtweenは1フレームに何px動くというような設定は出来ないのでしょうか
>>25 もういいですあなたは。
あんなやり方やこんなやり方があると言われてもこっちはわからないから質問してるのですよ。
そもそも以前からあなたはASのAの字も出さない(出せない)じゃないですか。
こうやってみたら?とささっとAS書いてくれたら一番助かりますしそれを望んでいます。
親切な方のレスを心よりお待ちしています。
29 :
97 :2009/11/23(月) 19:18:55 ID:9nHXmO5M
ドラクエ君だよね?パターンおんなじだもんw
>>28 なんだそれ。わかんないから質問してるって?だから どこがわからないか書けと言っているんだよ
ちゃんと内容読んでるか? 開き直って何逆ギレとかしてんだよ。 最低過ぎて何も言えない、もう
ASのAの字も出さないでって、内容も理解しないでコピペする気まんまんかよ。 正直ここまで糞な奴って、見たこと無いわ。頭おかしいんじゃねぇのか?
>>32 それはあなたに潰されたスレでしょ
いちいち貼らなくて結構です
初心者イジメて何が楽しいの…
>>33 俺もそのスレ見たけど、悪いのはあきらかに君だと思う。
出てた意見は言い方はキツいとは思うけど間違ってはないと思うぜ
潰すとか潰されたって発想はどうかと思う
てか、上でも書いてる人いるけど、何がわからないのかちゃんとレスしなきゃ
それすらもわからないなら、多分スキルが足りてないからググるなりして調べなきゃ
自分で作りたいんだろ?
>>33 しょうがくせいは おとなに なってから 2ch(にちゃんねる)に きてくださいね^^
そんなにわけわからない質問ですかね?
>>19 でsocket通信機能までは作ったと言ってるのですから
JAVAのサーバー動かしてsocket通信できていることくらいは理解して欲しいです。
普通に多数ユーザーでチャットもできます。
しかし
>>19 で言ってるようにユーザー毎に違うMCを配置する方法がわかりません。
つくづく自分主体だなお前。 だからそれに対して、
>>22-23 の話になるんじゃないの?
>その辺の仕掛けを既に作っているなら、単にサーバから 「そのユーザのID」 を返してもらって、
>そのIDに紐づく別の swf なり画像なりをサーバからロードでもすりゃいいんじゃね?
>それほど多く無いのなら、単にそのライブラリ上のMovieClipを表示すりゃいいんじゃね?
で、このレス内容に対して理解出来ない部分があるなら、それをちゃんと言えって話なんじゃないの?
スレの流れ読み直してみると、あきらかに自分がわからない所はスルーしてね?
>>38 > つくづく自分主体だなお前。 だからそれに対して、
>
>>22-23 の話になるんじゃないの?
それについては
>>24 でレスしています。
> で、このレス内容に対して理解出来ない部分があるなら、それをちゃんと言えって話なんじゃないの?
> スレの流れ読み直してみると、あきらかに自分がわからない所はスルーしてね?
ちゃんと言ってます。スルーしてません。
とりあえず、
>>37 の要件で言うなら、すでに Javaでチャットが出来るサーバソフトウェアを書いたんだろ?
それは複数クライアントから接続されて、それぞれのクライアントに対して内容を返すんだろ?
ならそれを修正して、文章の文字列だけでなくパラメータも一緒に文字列として送信して、
受け手がそれを解釈してMovieClipを表示するなりなんなりするだけじゃないの?って話だよ
例)
"<user id="foo">
<param>
<mc>abcdef0123</mc>
</param>
<text>
発言内容
</text>
</user>"
例えばこれを送信してやりとりして、テキストとしては text ノードの内容を表示し、
param の子要素は別のロジックに解釈させて表示でもすりゃいいんじゃないの?
あくまでこれは一般的な方法(SOAPでぐぐれ)とも言えるし、俺の個人的な方法とも言えるが
>>39 だから
>>24 でレスしてます、じゃなくてさ… 見えませんよね、じゃなくて方法の話だと言ってるだろ
そしてその一つの方法が
>>40 だよ。Javaでチャットサーバのコードって、もしも自分で 1から作ってたんなら、
ちょっと捻れば出てきそうなんだが
あと、スルーしてませんじゃなくて、出た案に対して
「それはどういう意味ですか? こういう事では無いんですか?」 って反応が一度も無いだろ
逆にわかってるから不要ってんなら、もうちょっと聞き方変わって来ると思うんだが、違うの?
あと逆ギレしといてその事について何も無いの?
つーか、やりたいことと問題点を文章のみで説明しようとしているから 皆が混乱する。 適当なお絵かきソフトかPowerPointで図解したらいいじゃん。 あるいは、試作品をUpするとか。
44 :
Now_loading...774KB :2009/11/24(火) 01:17:06 ID:RKxm75XE
AS3.0(CS4, WinXP-Pro) Socketで受信したデータの16進数表示で質問です。 接続を確立した後、var socketObj:Socket=new Socket(); の socketObj を使って function socket_progress (progressEvt:ProgressEvent):void { var tmpObj:Object=socketObj.readUTFBytes(progressEvt.bytesLoaded); trace ("Data= "+tmpObj.toString()+", "+progressEvt.bytesLoaded);//バイト数は4または5 } などとtrace出力しました。これはOKだったので、顧客デモ用に受信データを 16進数表示したいのですがうまく変換できません。 ※受信データは1.305とか1.215といった1.2〜1.3の小数です。 試しに trace ("Data= "+tmpObj.toString(16)+", "+progressEvt.bytesLoaded); とすると ArgumentError: Error #1063 が出ます。また、readUTFBytes()ではなく、readDouble()を 使うと Error: Error #2030 のEOFエラーになります。 どうしたら良いでしょうか?
45 :
Now_loading...774KB :2009/11/24(火) 03:25:29 ID:p475QxiA
短い効果音をタイムラインに差し込んでいます。 この効果音をボタンクリックで聞こえないようにしたいのですが。 (2回押すと今度は聞こえるトグル式のボタン) 簡単な方法ありますか? 音楽をローディングするような大層なことをするわけでは ありませんが、Soundオブジェクトとか用意しないといけないの でしょうか?
>>44 まず、少数値のデータを受信しているが、readUTFBytes で取り出してOKだった、って事は、
受信してるバイナリは IEEE754 形式の浮動小数点の即値でなく、"1.2345" みたいな文字列でやりとりされているって事だよね?
var tmpObj:Object = socketObj.readUTFBytes(progressEvt.bytesLoaded);
なので↑この部分って、tmpObject を toString() でなく、
var tmpObj:String = socketObj.readUTFBytes(progressEvt.bytesLoaded);
^^^^^^^
だよね。※リファレンス参照
そしてこれを 16進ダンプしたいとしたら、ここは readUTFBytes() や readDouble() でなく、
単純に bytesAvailable の値分、readUnsignedByte() とかを使って取り出してから、それを toString(16) しないとダメ。
// 未確認だけど多分大丈夫な気がする。もしアレだったら while の条件に回数制限をつけて無限ループ回避仕込んでおいて
function socket_progress (progressEvt:ProgressEvent):void {
while(socketObj.bytesAvailable>0) {
var tmp:uint = socketObj.readUnsignedByte();
trace ("Data= " + tmp.toString(16));
}
}
※ポイント1: readDouble() が使えるのは、それがダブルの即値の場合のみ。そうでないとエラー
※ポイント2: toString(変換指定の数値) が使えるのは、数値オブジェクトの場合のみ。それ以外はエラー
※ポイント3: 16進ダンプは結局バイト単位で文字列表現するって事になるので、一つづつ取り出さないとそもそも意味無理
要は 「今受け取っている内容はなんなのか」 を正しく把握しなきゃだめってこと
>>45 Scriptで制御する以上、Soundオブジェクトが無いと無理だと思う。
stage からコレクション辿って列挙する方法でもあれば、それを対象に操作出来ると思うけど、
とりあえず AS2 では無理だと思う。 AS3 の場合、そのサウンドが放り込まれてる MovieClip に対して、
ムービークリップ.soundTransform.volume = 0; で、制御出来るかもしれないけど、未確認。
これで無理なら素直に Soundオブジェクトから操作
「star」というインスタンスをいくつか配置し、それをマウスのx位置のみによって移動させ、
端っこのインスタンスが来たら中央付近で停止させるという、一定の範囲内だけで右往左往するようなスクリプトを作りたいと思っています。
しかし、一方方向だけ移動・停止させるスクリプトはなんとかできたのですが、両方向に動かす方法が思いつきません。
条件文がもう少しうまく作れればいいと思うのですが、どうやったらうまくいくでしょうか。
もしおわかりになる方がいましたら、アドバイスよろしくお願いいたします。
/*
ドキュメントサイズ:500x200
starのサイズ:100x100
Action Script 2.0
参考にしたページ:
ttp://www.geocities.jp/flashiroha/script/as9/as9.html */
var star:Array = new Array();
var s_num:Number = 8;
for (i=1; i<=s_num; i++) {
_root.attachMovie("star","star"+i,i);
star[i] = eval("star"+i);
star[i]._x = 250 - 110*(s_num-i);
star[i]._y = 80;
}
_root.onEnterFrame = function() {
for (i=1; i<=s_num; i++) {
if (_root.star[i]._x < 600 - 110*(s_num-i) || _root._xmouse > 250) { // 元にしたページから
_root.star[i]._x += (250-_root._xmouse)/10;
}
}
}
>>48 if文つかったらいいんじゃね?
それと、for文の中で同じ計算をするのはどうかと思うよ
こうかな
_root.onEnterFrame = function() {
a = 250 - _root._xmouse;
if( 50 > Math.abs( a ) ){
m = a / 10;
}
else { m = 0; }
for (i=1; i<=s_num; i++) {
if (_root.star[i]._x < 600 - 110*(s_num-i) || _root._xmouse > 250) { // 元にしたページから
_root.star[i]._x += m
}
}
}
50 :
48 :2009/11/26(木) 01:22:21 ID:UwDqI6PZ
>>49 ありがとうございます。
試してみましたが、ちょっと意図していたものと違いました(;´∀`)
マウスで動く範囲はドキュメントの全ての範囲でいいんですが、
インスタンスの動く範囲を制限したいんです。
8つのインスタンスであれば、1番目の左のものは左の方から250pxのところまで、
一番右の8番目のものも、右の方から250pxのところまで。
ちょっとわかりにくくて申し訳ないです。
すみません。ダメ元で聞きたいのですが、 AS3.0で大量の変数が必要になり、扱いに困っています。 C言語でいう構造体配列のようなもの作れませんかね?
構造体→クラス
クラスって・・・。配列もarrayクラスなのに別途クラスを配列化できるんですか?
ろくに勉強してない人間からですが public class hogehoge{ public var item:type=なんちゃら; public var item2:type=ホニャララ; private function hogehoge(){中身無し} } みたいなアイテムだけ定義したクラスを作って そのアイテムを使いたいところで var hoge:hogehoge = new hogehoge(); ? だかなんかで呼び出した後プロパティ使ってはどうだろう・・・ アクセス制限とか気にするならget()辺りが使えるかも
>>53 配列にStringとか入れますよね。Stringもクラスなんです
あと、Object型でも構造体作れる
obj:Object = {name:"勇者さま", hp:24};
>>54 AS3.0ではコンストラクタはprivateに出来ないです
ミスかわかりませんが一応
みなさん、どうもありがとうございます。 でも、何かどれも、使い勝手が悪いですね・・・。 すんなり巨大な構造体を100要素の配列にできないものか・・・。
>>57 どういうことがやりたいのかいまいち分からないが
Arrayは何でも入れられるし、Vectorは特定のクラスのみ受け入れ可能だけど
その構造体をクラスとして宣言してインスタンスをArrayやVectorに入れる、ということではダメなの?
それで使い勝手悪いなんて言ってたら他言語なんて使えないって話になるが‥ ASには struct は無いので似たことするばあいでも class で表現する。 もしも特にメソッドなど不要な場合には、 public class Foo { public data1:String = null; public data2:String = null; } のように定義して置いて、それらに別途ローダでも書いてロードするのが常套手段 var ar = new Array(個数); for(var i:int = 0; i < 個数; i++) { ar[i] = new Foo(); ar[i].data1 = データをセット : } 構造体で書いても結局同じになるが
元C使いだけど、クラスで全然おk
>>51 が勉強してないから通じないだけの話
61 :
51 :2009/11/27(金) 15:27:49 ID:+ClGUtiP
>>60 詳しいようなので、ちょっと、お聞きしたいんですが、
C++でクラスの中のプライベートに構造体を宣言するようなことを
AS3.0でできますか?
>>59 サンクス。
ソースコード見てたら、
クラスの配列は昔やってたようで、ただ単に忘れてただけみたいでした。
>>59 とほぼ同じコードがソースあって、物忘れに危機感を覚えました・・・。
クラスってもんを大げさに考えてる子なんだろうなあ。コストも技術も大した事ないのに
63 :
51 :2009/11/27(金) 15:49:14 ID:+ClGUtiP
いや、その、C++のクラスと性質が違って戸惑っているだけだ。
他言語の話なら、俺もC/C++、C#、Java、PHP、JavaScript、Pythonを普段必要に応じて使うけど、 ASのクラス表現はC/C++でのそれよりJavaに近い。オペレータオーバライドもないし、 純粋仮想関数のような意図表現もない(Javaで言うAbstructやInterfaceはある) あと、細かい事言うならクラスの配列って言い方は普通あまりしないかも。 オブジェクトの配列、○○のインスタンスの配列って言う‥ っては書いてはみたものの、 Flashの世界だとオブジェクトやインスタンスって語が違う対象に使われているので、 話ややこしくなるかもとちょっと不安に思った
forループ内で30個のMCのリスナー登録をすべてしてしまおうと 試みているんですが、押された際の処理がエラーになります。 おそらく、forループ設定時には、forで使う変数の「i」が生きているだとは思うのですが、 押されたときの処理では、iが存在しないのでエラーになるのではと思ってます。 なのでエラーは以下みたいになります。 TypeError: Error #1010: 条件は未定義であり、プロパティがありません。 コードは以下です。 押された際にtxと、tyをmcの座標に置き換えてしまおうというだけのスクリプトを、 以下のforループで実現しようとしているだけです。 何かいい方法はないでしょうか。。。?? for(var i:uint=1; i < 30; i++){ this["mc" + i].buttonMode =true; this["mc" + i].addEventListener(MouseEvent.CLICK, function():void{ tx = this["mc" + i]["x"]; ty = this["mc" + i]["y"]; }); }
>>65 逆に i は問題ないけど、無名関数内で this は使えないと思う。違ったっけ?
あと念のため、自身のコレクションからオブジェクト引こうとしてるみたいだけど、
それ存在してるの?
ちょっとASの仕様忘れたかもだけど、そう言うブラケットアクセス出来たっけ?
一点訂正。ああ言う無名関数内での this は、使えない、んじゃなくて 対象が違うから、思った通りには動かない、の間違い。スマソ
>>65 こんなんでいけるかも
this["mc" + i].addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void{
tx = event.target.x;
ty = event.target.y
});
>>68 早速ありがとうございます。
完璧すぎます!動作しました!!
ありがとうございます。
ちなみに、この方法以外はありえないのでしょうか。
自分は、この教えてくださった方法以外はありえないと思っています・・・
>>67 thisは確かに対象が違うのでおかしい感じなのかもです。
無名関数の使い方がいまひとつ理解し切れていないのですよね・・・
すみません、もう一点だけ今の流れで質問させてください。 動いたスクリプトは以下ですが、 変数kに、iの値を反映させたいと思っていますが、 ここでもiのせいでうまくいかない状態です。 kを取得するのは、今押されているmcのナンバーを取得して別の用途で使えるようにするためです。 うまい具合に、mcのナンバーだけ取得するにはどうすれば一番スマートでしょうか。 for(var i:uint=1; i < 30; i++){ this["mc" + i].buttonMode =true; this["mc" + i].addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void{ tx = e.target.x; ty = e.target.y; //この以下が問題の1行です。 k = i -1; }); }
>>70 無名関数の領域は別のクラスって考えないとダメ
その k はその関数内のスコープで消滅するか、名前のないクラスのメンバでないといけない
実際には包含クラス側(forとか書いてる方のクラス)の、メンバ変数か
メソッド内の変化しない変数を参照できるが、それは包含側で一意な存在なので、無名側の複数の値を別個には保持できない。
スマートな方法としては、やりたい内容によるが、無名をやめて保持するクラスに整理するか、
包含クラス側に配列や連想配列用意して記録しないとダメ
>>70 iっていうプロパティを持ったMovieClipを継承したクラスを作るのが理想だけど、とりあえず実現するなら
parseInt(e.target.name.substr(2, e.target.name.length - 2))
こんなんとかw
てか、無名関数をハンドラとして渡すのと、別クラスのメソッドの参照をハンドラとして渡すのと、 自分のメソッドの参照をハンドラとして渡すのの3パターン、サンプル見せれば一発なんだけど、 出先で携帯から書いてるのでソース書くのしんどい。 無名関数の領域は、自分を包含するクラスのメンバを参照できる特殊な空間だけど、 あくまで別の名前の無いクラスって理解しておくれ
名前の無い別クラスって言い方は語弊があるか とにかく別のオブジェクト。単体の他人。 別のメソッドオブジェクト、関数オブジェクト。
75 :
51 :2009/11/27(金) 19:48:03 ID:+ClGUtiP
>>64 うむ・・・。やはりそうですよね・・・。
やっている内に、何とかこのコードを書いた頃を思い出せそうですし、何とかなりそうです。
>>52-以降の皆さん、どうもありがとうございました。あと、お騒がせしました。
>>73 ありがとうございます。
無名関数内で、そのforループで使ってるiが使えないというのはよくわかりました。
そこで3つ挙げていただいた関数の種類の、
1)無名関数をハンドラとして渡す
2)別クラスのメソッドの参照をハンドラとして渡す
3)自分のメソッドの参照をハンドラとして渡す
ですが、1)が自分がやっているものですよね。
2)が無名関数ではないfunctionのことで、
最後の3)がよくわからないのです。
あえていうなら、2)が一番スマートなのでしょうか。
>>72 名前から抜き出して利用するという方法ですよね。
力技な感じがしますが、一番実は最短ルート?なんでしょうか。
>>76 1) 無名関数をハンドラに
foo.addEventListener(HogeEvent.SOMEID, function(e:EventData): void {
// 無名関数オブジェクトの空間
});
2) 別クラスのメソッドをハンドラに
public class Bar {
public function method1(e:EventData): void {
// クラスBar のメソッドmethod1 の空間
}
}
〜前後略〜
var bar:Bar = new Bar();
foo.addEventListener(HogeEvent.SOMEID, bar.method1);
3) 自分のメソッドの参照をハンドラに
public class 自分 {
public function huga() {
foo.addEventListener(HogeEvent.SOMEID, this.method2);
}
public function method2(e:EventData): void {
// 自分の空間
}
}
どれも、addEventListener には、イベントのキーワード文字列と、"関数参照を" 渡している。
それぞれのハンドラ関数内で this とした時、それはどれを指すか良く考えればわかるって話
MovieClipクラスがダイナミッククラスなのを利用して、for内で各MCにiの値入れたプロパティ作るってのはどう? AS2的なやり方って感じだけど
AS3.0ですがAS2.0のように自分自身をremoveChildすることは出来ないのでしょうか 指定した DisplayObject は呼び出し元の子でなければなりません。と出てきてしまいます
parent.removeChild(this);
>>81 回答ありがとうございますFLASH CS3を使っているのですがシンボル内のタイムライン上に書いている為それだと
null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。とエラーが出てしまいます…
>>82 じゃあ stage とかに変えてみるとか。 stage に removeChild があったかどうかはリファレンス見てもらわないとだけど
要は、「そのオブジェクトの親から見て、そのオブジェクトを削除する」 の形になればいいだけのような気がする
CS3 はわからないけど、コードアシストで候補出てくる中にそれっぽいのが居ないかどうか確認してみる、とか
あるいは adobe のリファレンスにそれっぽいのが居ないかどうか見てみるといいかも
>>82 んー
消したいオブジェクトの参照(del_obj)から
if (del_obj.parent) del_obj.parent.removeChild(del_obj);
とかで問題ないはず
>>78 76です。ありがとうございます
3パターンとも理解できました thisの話はわかりました。
となるとあとは前に書かれたようにループで使用するiは
自クラス内で終わらせようと思うと
配列にいれていくというかんじでしょうか
ただ配列に格納していっても取り出し時に
配列のインデックス番号が必要となるので
そのインデックスがまさにkの値なんで
どうしたものかとおもってます
やっぱり自クラスで完結しようと思うと プロパティを一つ作ってそれにiの番号を突っ込んでく感じかなとも思っています
>>82 シンボル内のタイムライン上
これって「オーサリングで配置」ってこと?
それなら、元々駄目。
俺はこう理解している:
Stageという島があって、そこの法では新たに持ち込んだ外来種の
植物の撤去は可能だが、自生している植物(固有種)の撤去は禁じ
られている
・・・ オーサリングで配置オブジェクトとaddChildによるオブジェクトの関係
また、異なる植物分類同士の交配(例えば、イネ科とバラ科)には
遺伝子工学的な作業が必要。
・・・ キャストが必要の意味
87 :
Now_loading...774KB :2009/11/29(日) 13:58:44 ID:POlt4o0G
BrightcoveのプレイヤーをFlashに埋め込みたいのですが やり方を詳しく書いているサイトなどありましたら教えてください。
>>87 そんな物凄く狭いニーズ(マイナーな物)を細かく説明してるようなサイトって無いんじゃなかろうか
てか、今ググッたらこれ一応商用ソリューションの一部みたいなので、商用サイトのページ内に追加して
用意されている機能を使ってサーバサイドと通信して連携は出来るようだけど、
SWFで提供されてるプレイヤーを別のSWFに埋め込むって、普通に loadMovie だっけ?で扱うぐらいしか方法無いと思う
もしもその意味がわからない場合、必要な知識は広がる一方になるので、敷居は高いかもしれない。
自分で実験して調べるのをお勧めする
コマ割りされた絵をまとめた1枚の画像を分割し順番にアニメーションさせたいのですがよいサンプルなどはないでしょうか
91 :
Now_loading...774KB :2009/11/30(月) 01:07:35 ID:cV3PW/Qn
SpriteAにBitmapXをaddChildしたのち、SpriteBにBitmapXをaddChildをしたらSpriteAからBitmapXが表示されなくなってしまいました。 なぜこのような現象が起こるのでしょうか。また、SpriteA,BともにBitmapXを表示させたい場合の一般的な解決方法はどのようなものなのでしょうか。 また、BitmapXをcloneせずに1つのBitmapリソースでSpriteA,Bに表示することは可能なのでしょうか。 問題丸投げで申し訳ないのですが、お詳しい方見えましたら教えていただけないでしょうか。
>>92 質問の答えになってなかった・・
複製じゃなくて完全に同じものを表示するなら
新しいBitmapを同じBitmapDataで作れば大丈夫
BitmapY:Bitmap = new Bitmap(BitmapX.bitmapData);
>>93 なるほど、そういうことだったんですね。
リソースを食うプログラムなので複製したくなかったのですが、それが一番ベストっぽいですね。
ありがとうございます。
96 :
Now_loading...774KB :2009/11/30(月) 14:57:48 ID:cgKn0vv6
>>94 おおお、なるほど!ありがとうございます!
クラスをimportするときにimport flash.text.*といったように*で省略できますが 読み込みの速さ的にはパッケージ内のクラスを2つ以上使用するならば*を使うという認識でよいのでしょうか?
勘だけど 仕組み的には、最初に全部読み込むのではなく、 ソースの中に見つからない名前が出てきたときに初めてimportしてるパッケージから探すから、 強いていうなら、個別に書いたほうが検索する箇所が少なくて速い気がする。 でもインポートするファイル数百あったとしても体感できる差はないと思うよ。 *を使わない理由があるとすれば、どのクラスがどのパッケージのものを使ってるのかわかり易くする為か、 名前の衝突を防ぐためとかじゃない?
>>98 なるほど。確かに省略するとどこで何のために使ったのかわかりにくくなりますね。
個別に書く方向で行こうと思います。ありがとうございました。
横やりだけど、
>>98 の話は大体合ってるけど、あくまでそれはコンパイル時の話って言う
大前提を忘れてはいけない
考えればわかると思うが、実行時ではない
一応横から補足しとく
質問失礼します 【環境】 AS3.0(FLASH CS3, WinXP-home) 【目的】 ウェブカメラ映像(画像)を二値化し リアルタイムに画面の特定座標が白か黒かによって ムービークリップをひとつ表示・非表示にしたい 超初心者でAS3.0はまだ自力で書けないヘタレっぷりですが ググってコピペコピペでthresholdで二値化とgetPixelで色を取り出す事はできたものの ライブラリからインスタンスを一旦表示したら非表示にしたりするところができません。 スクリプトはパッケージで外に書いています。 【エラー文】 255 TypeError: Error #2007: パラメータ child は null 以外でなければなりません。 at flash.display::DisplayObjectContainer/removeChild() at Threshold2/tick()
102 :
101 :2009/11/30(月) 19:46:57 ID:ZO/oVcnH
>>101 です連レスすみません
ソースは長いので分割します
private function tick(event:Event):void {
if (video == null || camera == null) {
return;
}
if (camera.muted == true) {
return;
}
var s:BitmapData = new BitmapData(video.width, video.height);
s.draw(video);
var r:Rectangle = new Rectangle(0, 0, video.width, video.height);
bdTmp.fillRect(r, 0xffffffff);
103 :
101 :2009/11/30(月) 19:47:36 ID:ZO/oVcnH
// 2値化 var threshold:uint = 0x00aaaaaa; var color1:uint = 0xFF000000; var color2:uint = 0xFFFFFFFF; var maskColor:uint = 0x00FFFFFF; bdTmp.threshold(s, r, new Point(0, 0), "<=", threshold, color1, maskColor, true); bdTmp.threshold(bdTmp, r, new Point(0, 0), ">", threshold, color2, maskColor, true); //ポイントの白黒判定 var col:uint = bdTmp.getPixel(100, 50); var ten:int = col >> 16 & 0xFFFFFF; trace(ten); if (ten == 0) { var menu_mc:menu=new menu(); menu_mc.x=0; menu_mc.y=0; addChild(menu_mc); } if (ten != 0) { //removeChild(menu_mc); //menu_mc.visible = false; parent.removeChild(menu_mc); } } 以上です。どうかよろしくおねがいします。
>>103 パッとみた時点でとりあえず二つ。
1つは、menu_mc のスコープが合ってない。コピペコピペ以前に知ってなければならないミス。
{
var a = ほにゃらら とした時、この a はこのブロックの中だけにしか存在しない。
}
{
なので、
ほげほげ.ほにゃらら(a); とした所で、a はこのブロックでは見えない。
}
もう一つは仕様のミス。 初回動作時、いきなり ten が0以外だった場合どうなる?
また、必ず addChild → removeChild の順で実行されるの?
>>103 menu_mcはそのループないでした有効じゃないから
menu_mcをクラスのメンバ変数にするか、removeChildAtでインデックスを指定して削除かな
すみません。ちょっと、マニアックな質問なんですが・・・。 まず、リンゲージして、共有から動的に配置したMCを用意しました。 そのリンゲージにしたMCには、中にMCとかテキストフィールドとかがあるんです。 で・・・問題なのは、MCそのもののプロパティにはアクセス出来るのですが、 中のテキストフィールド等のプロパティなどを認識してくれないんです。 どうやったら、中身を認識してくれるのでしょうか?
>>106 そんなマニアックか?
単に外側のMCにパブリックな関数でも持っておいて、それをインタフェースとして使えばいいだけじゃね?
1.配置されるMC内
// AS2 の例。3でも考え方は多分同じ
function setText(s) {
テキストフィールドのインスタンス.text = s;
}
2.1をつかう別のMCまたはフレーム。
1のインスタンス.setText("ほげほげ");
108 :
101 :2009/11/30(月) 20:34:09 ID:ZO/oVcnH
>>104-105 早速のレスありがとうございます
>menu_mc のスコープが合ってない
お、お恥ずかしいところを…
メソッドの場所を色々移して試していたのですが
変数を宣言する位置までも移し替えていたようです
それでも基礎がなっていないのは確かですが
>初回動作時、いきなり ten が0以外だった場合どうなる?
その時はmenu_mcが非表示で特にエラーも出なかったので
まあいいやと思っていたのですが
>また、必ず addChild → removeChild の順で実行されるの?
この順序にならないのはやはりまずいんですね…
>menu_mcをクラスのメンバ変数に
をしてみたら、tenが0か否かで切り替わり今のところこの動作が希望通りなのですが
255
ArgumentError: Error #2025: 指定した DisplayObject は呼び出し元の子でなければなりません。
at flash.display::DisplayObjectContainer/removeChild()
at Threshold2/tick()
とエラーが出てしまいました
やはり順序無視がいけないのでしょうか…
109 :
Now_loading...774KB :2009/11/30(月) 20:40:25 ID:HEK6+H7k
質問です <policy-file-request/>の対処法をわかりやすく教えてください。 ぐぐったけどよくわかりませんでした…orz
>>109 接続を許可するswfのドメイン名を規則にしたがって書いて flush() すればいい。
cf. 全てのドメインと接続先のポート番号
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
>>108 コメントを3つ。
1.順序無視はとりあえずNG。たまたま動いたとしても考え方的にNG.。 たまたま動いてくれない物もその内必ず出てくるから、
順序が保障されるロジックを自分で考えること
2.そのエラー、良く読むこと。あと、
>>103 のソースを見直してみて、「誰に add してて、どこから remove しようとしてるか」
3.てか表示非表示を切り替えたいだけなら、add や remove みたいな構造を変えるような処理でなく、
単に visible だったか visibility だったかで切り替えたらいいだけでは?
>>107 そんなものは、とっくに試してます。
が、なぜかプロパティの通りに更新されないんです。
作動時には認識するんですが、結果はそうではないっていう・・・。
あぁ、マスク解いたら、更新して表示されました。これはバグ?、仕様? どうも、お騒がせしましたw
>>112 そんなものをとっくに試していたとしても、リンケージ使って生成したムービーは、
一度Flashが表示処理を行わないと表示系プロパティが即時には反映されないっていう、
動作サイクルについては知らなかったと言う事か?
1フレームおいてから、インタフェース読んでみ。 インスタンス化した後、プロパティにセットしている処理を良くおいかけて、
1フレームも進んでいない状態で走っていないかどうか
115 :
101 :2009/11/30(月) 21:03:13 ID:ZO/oVcnH
>111 またしてもありがとうございます >単に visible だったか visibility だったかで切り替えたらいいだけでは? おっしゃる通りです menu_mc.visible = true; menu_mc.visible = false; などで当初記述していたのですが、やはり基礎が(ry でうまくできず… 差し出がましいですがこちらの記述はどうすればいいかお聞きしてもいいですか?
なんか書き込みでエラーになったと思ったら書き込めてた…
>>113 マスクもそう。マスクなどの判断はFlashが表示処理する段階で評価されてるみたいなので
(そりゃそうだという話もあるが)、最短1フレーム置かないと(結果的におかれている流れなら上手くいく)、
安定して期待した通りにならなかったりする。 どこにも明記してないような気がする不親切な仕様だが、仕方ない。
>>115 ちゃんと実験して基礎やれよww
>>103 のソース、ちゃんと追いかけてないので結果が望みどおりかどうかは知らないが、
元のロジックのまま書き直すなら、こうじゃね?
パターン1)
// if 文の中の ten==0 や ten!=0 は、評価結果の論理値(true/false) を見ている。なので、そのまま代入してしまう
menu_mc.visible = ten==0;
パターン2)
// より素直に書いた物。パターン1はこれを意味的に省略した格好
if(ten==0) {
menu_mc.visible = true;
} else {
menu_mc.visible = false;
}
タダの四角いマスクをかける場合ドロー描画のマスクとビットマップのマスクではどちらか軽いのでしょうか
中の処理的に考えてBitmapだと思う 大体そうでないなら、パフォーマンス向上の為にcacheAsBitmap なんて使わない
120 :
109 :2009/12/01(火) 08:47:21 ID:K9cJNqNf
>>110 すみません。それをhtmlのソース内に書けということでしょうか?
<head>内に書いても<body>内に書いても解決できませんでした。
>>120 サーバ側のポリシーファイルだと思う
html はブラウザが解釈してクライアント側で表示するだけなのでまったく関係ない
122 :
Now_loading...774KB :2009/12/01(火) 12:25:33 ID:N31TqzL5
FlashCS4+ActionScript3.0で適当なボタンを配置し、それが押されるたびに for (var i = 0; i < 100; i++) { if(TArray[i] != null) delete TArray[i]; System.gc(); TArray[i] = "STR"; } というコードが実行されるようにしたんですが、スタンドアローンのプレイヤーで実行し タスクマネージャで見ているとボタンを押す(このコードを実行する)たびにメモリ使用量が 増えていきます ActionScript3.0ではメモリ管理はできないものと思ったほうがいいのでしょうか?
System.gc();はデバッグプレーヤのみで機能する
>>122 リスナーを弱参照にして、不要になったらremoveEventListenerする。
>>123 なるほど
となるとある程度メモリに余裕のあるマシンで実行していると、
ガベージコレクションは起こらずにメモリ使用量は基本的に
増えていくってことですか……
>>124 イベントリスナーはマウスのボタンを押すときのMouseEvent.DOWNしか使ってないです
>>117 自宅が規制中なので遅くなりましたがどうもありがとうございました!
ちゃんとエラー出ずに思い通りになりました
自分でやってみた時うまくいかなかったのは
とりあえず最初は非表示にしとこと思い
if分岐する前にvisible=false;を記述してた所為でした
つくづく自分アホス
ここまで付き合って下さり本当に感謝です
127 :
Now_loading...774KB :2009/12/01(火) 13:55:45 ID:csT/f330
開発環境:flashdevelop as3プロジェクト 問題: テキストフィールドをスクロールしたいと思いUIコンポーネントのTextAreaのimportをしようそしたところ、できませんでした。 TextAreaを仕様するにはどうすればよいのでしょうか。 一般的にテキストフィールドにスクロールバーを追加するにはどうしたらよいのでしょうか。 詳しい方よろしければ教えてください。
128 :
127 :2009/12/01(火) 14:23:26 ID:csT/f330
TextAreaの件自己解決できました。 一般的なスクロールバーの実装方法ご存知の方見えましたら教えていただけないでしょうか。
129 :
45 :2009/12/01(火) 14:42:17 ID:pU5yx5Ry
(Socketで受信したデータの16進数表示)
>>46 レス有難うございます&検証が遅くなり、申し訳ございません。
先ほど実験しました。
小分けして(バイト単位で)中身を見るとのことですが出来ませんでした。頂いた
while (socketObj.bytesAvailable>0) {
var tmp:uint=socketObj.readUnsignedByte();
trace("Data= " + tmp.toString(16));
}
ではDataが表示されないので、検証のためのtrace出力として
trace("動作情報= "+progressEvt.bytesLoaded+", "+tmpStr+", " +socketObj.bytesAvailable+", "+progressEvt.bytesTotal);
を書きました。
これだと、動作情報= 5, 1.255, 0, 0 という表示になり、後ろの2つ(socketObj.bytesAvailable
とprogressEvt.bytesTotal)は常にゼロです。
16進数表示のため、先ずは小分けして中身を見たいのですが、どうしたら良いでしょうか?
【関連の質問】
Socketのリファレンス
ttp://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/net/Socket.html を見ると以下の説明があります。
ActionScript コードでソケット接続を確立して生のバイナリデータを読み書きできます。
これは XMLSocket に似ていますが、送信あるいは受信するデータの形式に制約がありません。
ここで、「受信するデータの形式に制約がありません」とのことですが、扱えるのは
「生のバイナリデータ」と書いてあります。
これは平たく解釈すれば、『どの拡張子のファイルでも送受信できる』ということで良いでしょうか?
※
>>46 さんの文中に「"1.2345" みたいな文字列で」とあり、Socketクラスはバイナリデータ以外に
文字列の扱いもOKなのかと疑問に思いましたので。
130 :
45改め44 :2009/12/01(火) 15:02:39 ID:pU5yx5Ry
フレームごとにfillrectをかけて画面をクリアしているのですがfillrectをかけない場合はCPUが10%くらいなのにfillrectをかけると80%くらいまで跳ね上がります fillrectって物凄い重い処理なのでしょうか他に軽い処理などはないのでしょうか
>>131 普通にclearじゃ何か不都合あるの?
>>132 BITMAPDATAにclearも使えるのでしょうか
>>133 clearはない
何故故にその処理をしているのかがわからないから、アドバイスのしようがないな
とりあえずbitmapdataを塗りつぶすにはfillRectが恐らく一番負担が少ない
>>134 ビットマップにアニメーションを連続描画しているので
毎回画面をリフレッシュする為にbmp_data.fillRect(bmp_data.rect, 0x0);と記述しているのですが
すごく重くなってしまうのです
>>135 俺、前にこんなゲームのような物を作った時、
http://up.mugitya.com/img/Lv.1_up107512.png 背景スクロールの為に、マップチップ(bitmapData)を毎回高速に転送する必要があって調べた事があるんだけど、
多分お望みの用途であれば、例えば予め任意サイズで 0x00 で埋まったデータを用意しておいて、
var p:Point = new Point(); // p に描画開始位置を
var r:Rectangle = new Rectangle(); // r に塗りつぶしたいサイズを
bitmapData.copyPixels(真っ黒のbitmapdata, r, p);
ってやった方が速いやもしれん。 以前 adobe に tech系コラムだったか何かの記事で、copyPixelは高速って話を見たので試した。
実験した所、リアルタイムでスクロールできるほどだったので、採用したという訳だ。
Win32で画像処理系の何かを作った事ある人ならピンと来ると思うけど、恐らく copyPixels は、中で bitblt を行ってる。だから高速なのかも
>>135 一度描画したビットマップ自体をアニメーションさせるのはだめなの?
具体的に何がしたいのかわからないけど、wonderflとかでサンプル探して処理方法を見直したほうがいいかも。
>>135 俺、前にこんなゲームのような物を作った時、
http://up.mugitya.com/img/Lv.1_up107512.png 背景スクロールの為に、マップチップ(bitmapData)を毎回高速に転送する必要があって調べた事があるんだけど、
多分お望みの用途であれば、例えば予め任意サイズで 0x00 で埋まったデータを用意しておいて、
var p:Point = new Point(); // p に描画開始位置を
var r:Rectangle = new Rectangle(); // r に塗りつぶしたいサイズを
bitmapData.copyPixels(真っ黒のbitmapdata, r, p);
ってやった方が速いやもしれん。 以前 adobe に tech系コラムだったか何かの記事で、copyPixelは高速って話を見たので試した。
実験した所、リアルタイムでスクロールできるほどだったので、採用したという訳だ。
Win32で画像処理系の何かを作った事ある人ならピンと来ると思うけど、恐らく copyPixels は、中で bitblt を行ってる。だから高速なのかも
・・・なんか書き込みエラーが出たと思ったら… 何で連投になってんだ・・・orz
>>129 >「生のバイナリデータ」と書いてあります。
>これは平たく解釈すれば、『どの拡張子のファイルでも送受信できる』ということで良いでしょうか?
>
>※
>>46 さんの文中に「"1.2345" みたいな文字列で」とあり、Socketクラスはバイナリデータ以外に
>文字列の扱いもOKなのかと疑問に思いましたので。
ActionScript に限らないプログラミングの基礎的な話だけど、文字列だろうがなんだろうが、元のデータはバイナリです。
バイナリ値を、「文字列として扱えば文字列として扱える」 って事。 なのでOKなのか? って話じゃないのです。
そういう意味で、「どんなファイルでも」 ではなくて、「どんなデータでも」 送れるでしょう。 受け取り側がどういうデータが分かっていようがいまいが送れます。
ちょっと脱線するけど、例えば 0x31 0x32 0x33 0x34 という4バイトの値がSocketなどを通じて送られてきた時、
これを 「文字列として扱えば」 "1234" という文字(ASCII表現でこの文字)になる。 同じデータを4バイト符号無し整数として扱うと、
これは10進で 1,234 という数値ではなく、825,373,492 という数値になる。 またそれぞれ1バイトづつの生データとして扱うと、
これらはそれぞれ10進で 49 50 51 52 という4つの数値になる、ってこと。 要は送り手が、どんな値を送っているか理解出来ていないと、
多分望みどおりの結果は得られない。 この辺はプログラミングというかコンピュータと言うかのド基礎なので、勉強必須。
あと、Socketの件についはループ条件がそれでダメだったら、他の何か動く条件で回してみて。
要は、readUnsignedByte() で取り出したバイト値をそれぞれ uint#toString(16) で"16進文字列"に変えて吐きたい訳だから、
条件さえ整うならいけるはず。
140 :
44 :2009/12/02(水) 00:40:18 ID:aOtGOEBq
あ
AS3 CS4です NumberをtoString(16)は出来るのですが、その逆で aなどがまじったのを10進数に戻すとNaNになります。 多分、プログラムしたら出来るでしょうが簡単に16進数を数値として認識してもらえることはできないでしょうか?
144 :
Now_loading...774KB :2009/12/02(水) 15:45:15 ID:SqaJ+k9C
var array:Array = [ 111, 222, 333, 444, 555 ]; function deleteObj( nnn:Number ):void { for each( var n:Number in array ) { if( n == nnn ) { trace( n ); array.splice(.... } } } deleteObj(333); AS3 FlashCS3です。 対象の要素を引数で渡し、配列の中にある要素とfor eachで比較。 その対象を配列から削除するという関数を考えているのですが、 結局この要素が、配列の何番目に入っているかを取得するにはどうすればよいのでしょうか。 また、この目的の処理をする場合でもっと効率の良い方法があればどうか教えてください。 お願いします。
foreach使わないなら、indexOfで何番目かわかる var idx:int = array.indexOf(nnn); while (idx != -1) { array.splice(idx, 1); idx = array.indexOf(nnn, idx); } for eachは参照される順番が保障されてないから、 forで回してカウントしないと何番目かはわからない Vector使えるなら使った方が処理は早いと思われる
ActionScript2.0 の勉強を始めようとしている者ですが、質問させてください。 (1)ActionScript はFlashの画面を使わずに(絵を動かしたりボタンを配置せずに)、C言語のコンソールアプリみたいな作り方はできますか? (2)もし上記の作り方ができるなら、main関数みたいなものは、どこでどのように宣言すれば良いでしょうか? おバカな質問で申し訳ございませんが、お答え頂けると嬉しいです。 ちなみに、C/C++ の経験は多少ありまして、基本的なクラスの概念は理解しているつもりです。
いまからas2を始めるのはお勧めしない
>>142 です
パルセイントでできました
ありがとう
>>146 標準入出力を受け取る手段がないので、
いわゆるコンソールでやりとりするような物は出来ません
あくまでASはFlashと言うただの1アプリケーションが解釈実行する組み込みマクロのような存在、
あるいはGUIの基本ウィンドウを持つVMのような物です
何も配置しない真っ黒/真っ白画面にして、中で何か処理をするのは普通にアリだとは思いますが、
それはただそういうスクリプトを実行してるだけであって、
OSが直接実行する何かと並列な存在ではありません
150 :
146 :2009/12/02(水) 21:02:42 ID:PegJ7Dl/
>>149 さん、教えて頂いてありがとうございます。
コンソールでいろいろできるなら、画面設計を一切考えずに簡単でいいなぁと思ってました…
でも、Flashって結構便利ですね。
携帯でもゲーム機でも使えて、Javaよりも動作が軽そうなので、頑張って何か作ってみます。
入れ子になったムービークリップがあります。 それぞのムービークリップにアニメーションをつけています。(アニメーションはスクリプトではなくフレーム上です。) 現在のスクリプト mc1_mc.stop(); mc1_mc.mc2_mc.stop(); 入れ子になったムービークリップが停止するスクリプトをまとめて書く方法を教えたください。 よろしくお願いします。
152 :
144 :2009/12/03(木) 23:50:12 ID:qkVKYVWx
>>145 ありがとうございました、indexOfで場所を把握できました。
var idx:int = array.indexOf( nnn );
array.indexOf( idx, 1 );
とても勉強になりました!
153 :
Now_loading...774KB :2009/12/04(金) 05:44:24 ID:xqtS0h9c
String型の変数が空かどうか判別したいのですが、 どのような方法があるでしょうか? 以下の方法では駄目でした。 if (str == "") { trace = ("空です"); }
154 :
153ですが :2009/12/04(金) 06:06:36 ID:xqtS0h9c
重ねて質問します。Stringのmatchの使い方が、わかりません。 以下の方法では駄目でした。 ■ソース var str: String = new String("*"); if (str.match(str)) { //←これで駄目な意味が分らない trace("合致"); str = word[a]; } else { trace("合致せず。str=" + str); } ■結果 合致せず。str=*
え?
>>153 これは動くと思います
trace = は誤植でしょうか?
>>154 match(pattern:*):Array
戻り値はBooleanじゃなく、patternに一致した文字列の配列です
引数は正規表現として扱われます
*(アスタリスク)
直前のアイテムについて 0 回以上の繰り返しに一致します。
>>153 型宣言してたらnull
してなかったらundefineだ
たしか
158 :
Now_loading...774KB :2009/12/04(金) 13:05:31 ID:M3ZYVQDm
変数名を連番、あるいはある所から取得して生成するみたいな事ってできないでしょうか? おかしいですが、下記のようなイメージです。 var i:int; for (i = 0; i < 10; i++) { var test-i:int; } test-1,test-2,test-3…みたいな感じで変数名が連番になって変数が生成されるという事です。
this["test-" + i] = i; みたいな感じ
>>159 すみません、いろいろ思考したのですが、
どのように使用すればよいのかわかりません。
this[]で囲むことでどのような意味を成すのでしょうか?
調べてもthisをそのように使用するというのが見当たりません
>>160 159じゃないけど
例えば
this["test-1"]
と
this.test-1
は同じこと。
[]を使えばプロパティ名に文字列を使える
一応書いておくと識別子にハイフンは使えないからね。
配列の宣言で var hoge:Array=[1,2,3]; とした場合hoge[0]から数値が入ると思いますがhoge[-1]から入れることはできるでしょうか 今は先に0から宣言してその後でhoge[-1]を宣言するようにしていますが 見た目がよろしくないので質問させていただきました
>>161 ,163
ありがとうございます。
調べてなんとなく理解できた気がするのですが、
これはあらかじめ、自分で連番の変数を宣言しておかないとダメと言うことでよろしいでしょうか?
そうではなくて、宣言時に動的に連番に出来ないかなと思いまして…
>>167 どういう理由で連番が必要か分からないから一概には言えないけど、Array使えば?
169 :
Now_loading...774KB :2009/12/04(金) 23:30:48 ID:O7JtxJof
環境:WinXP-Pro,AS2.0,Player7,PHP5.2.6(Apache2.2)
LoadVarsのsendAndLoadでPHPとFlash間のデータ送受信を実現したいのですが、
全く分かりません。近い例として
ttp://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=1105&forum=7 ttp://www.artful.jp/blog/archives/2006/12/flashphp_1.html があったので、これを参考にPHPとASを組んだのですが完全に手詰まり状態です。
下記の流れをやりたく思っています。
AS(Flash)で値を発生させる → LocalhostのPHP(valueSum.php)に送る
→ PHPが計算(合計)して答えを出す → Flashに返信する
※平たく書くと Flash → PHP → Flash です。
実際の記述は以下通りです。
【AS】
var formData:LoadVars = new LoadVars();
var receivedData:LoadVars = new LoadVars();
doB.onRelease = function() {//ボタン(doB)を押して実行
function sendForm() {
formData.value0 = 10;
formData.value1 = 20;
}
};
var receivedData:LoadVars = new LoadVars();
receivedData.onLoad = function() {
trace("合計:"+receivedData.valueSum);
valueT2.text = receivedData.valueSum;//理想では返信された値(合計30)が表示されるハズ
};
formData.sendAndLoad("
http://localhost/ 〜/valueSum.php",receivedData,"GET");
【PHP】
$valueSum = $_GET["value0"] + $_GET["value1"];
print("$valueSum=".$valueSum);
170 :
169の続き :2009/12/04(金) 23:32:05 ID:O7JtxJof
ブラウザで上の記述でPHPを起動すると下記のエラーメッセージがブラウザ内に 現れます(コマンドプロンプトでも同じ)。 PHP Notice: Undefined index: value0 in C:\hajimete_php5\valueSum.php on line 5 Notice: Undefined index: value0 in C:\hajimete_php5\valueSum.php on line 5 PHP Notice: Undefined index: value1 in C:\hajimete_php5\valueSum.php on line 5 Notice: Undefined index: value1 in C:\hajimete_php5\valueSum.php on line 5 0=0 また、合計値表示用のvalueT2には「Undefined」と出ます。 この場合、どうすれば良いでしょうか? また、PHPを先に起動すべきといった検証手順があるのでしょうか? アドバイス願います。
>>169 めちゃくちゃ過ぎる。
自分の書いたソースの各行を説明できる?
【AS】
var formData:LoadVars = new LoadVars();
var receivedData:LoadVars = new LoadVars();
receivedData.onLoad = function(success:Boolean) {
trace("合計:"+receivedData.valueSum);
valueT2.text = receivedData.valueSum;
};
doB.onRelease = function() {
formData.value0 = 10;
formData.value1 = 20;
formData.sendAndLoad("
http://localhost/ 〜/valueSum.php",receivedData,"GET");
};
【PHP】
$value0 = (isset($_GET["value0"])) ? intval($_GET["value0"]) : 0;
$value1 = (isset($_GET["value1"])) ? intval($_GET["value1"]) : 0;
$valueSum = $value0 + $value1;
print("valueSum=".$valueSum);
For文の処理を1回1フレームごと処理したいのですが無理でしょうか
173 :
169 :2009/12/05(土) 19:05:47 ID:AUvglW2r
>>171 レス有難うございます。
教えて頂いた記述でOKでした。traceのところは
trace("success, 合計:"+success+", "+receivedData.valueSum); で
success, 合計:true, 30 と出ました
最初、PHPの3項演算子のところは理解しづらかったですが、なんとか理解
できました。
>>172 どゆこと?
まさかenterFrameで解決しないよね…
>>174 EnterFrameで解決しますがプログラムが汚くなるので他の方法はないかと模索しています
176 :
44&129 :2009/12/06(日) 00:43:19 ID:v+XqfF/1
(Socketで受信したデータの16進数表示) ※最初の質問は44
>>46 さんの「無限ループ回避仕込んでおいて〜」の
while(socketObj.bytesAvailable>0) {
var tmp:uint = socketObj.readUnsignedByte();
trace(" Data= "+tmp+", "+tmp.toString(16));//tmpも表示するようにしました
}
を、私の当初の記述(下)
-------------------------
接続を確立した後、var socketObj:Socket=new Socket(); の socketObj を使って
function socket_progress (progressEvt:ProgressEvent):void {
var tmpObj:Object=socketObj.readUTFBytes(progressEvt.bytesLoaded);
trace ("Data= "+tmpObj.toString()+", "+progressEvt.bytesLoaded);//バイト数は4または5
}
-------------------------
に適用すると trace(" Data= "+tmp+", "+tmp.toString(16)); は何も出なかったのですが、
readUTFBytes(progressEvt.bytesLoaded) の引数を0にしたところ[つまりreadUTFBytes(0)]
下記の出力を得ました。
Data= 49, 31
Data= 46, 2e
Data= 50, 32
Data= 49, 31
Data= 56, 38
これと 31→0x31 の変換を用いると、上記は Data= 10進ASCIIコード, 16進ASCIIコード
の関係になっていることが分かりました。
つまり受信したデータは、文字列(10進ASCIIコード)の並びだと言えると思いますが、何故
readUTFBytes(0)で
>>46 さんのwhile文が有効になったのかが分かりません。
引数がprogressEvt.bytesLoadedの場合、単純にreadUnsignedByte()のカーソルの位置が
終端に移動してしまってそれ以上読めないからなのでしょうか?
177 :
44&129 :2009/12/06(日) 04:01:03 ID:v+XqfF/1
あー、また間違えた・・・ 『当初の記述』部分は修正していました。 var tmpObj:Object=socketObj.readUTFBytes(progressEvt.bytesLoaded); ↓ var tmpStr:String=socketObj.readUTFBytes(progressEvt.bytesLoaded);
>>175 汚くなるかなぁ
どんなのが汚いのかわからんけど
わざわざenterFrameのために空MC作るのがいやってこと?
>>172 >>175 >For文の処理を1回1フレームごと処理したいのですが無理でしょうか
そもそも動作の単位が違うので無理です。
フレームの繰り返しは、大きな Flash のアニメーション処理の単位で、for などの繰り返しは、
それよりも小さな Scriptコード上での繰り返し単位だから。
良く考えればわかる事だけど、例えば 1フレームの中に for 〜 処理 のように書く事が出来ますが、
もしもこれを 「for 〜 フレーム」 のように書きたいと思ったら、Script の処理逐次処理単位をフレームにしないと
実現できません。 フレーム1:何かの宣言、フレーム2:for、フレーム3:処理… のような。
で、実際にはそれだと使えないので、そのような事は出来ません。
なので、後は望んだ意図次第で工夫して、例えば gotoAndPlay や if の分岐などを使って
実現する必要があります。 内容次第ではそもそもそういう実装方法自体せずとも実現出来る事もあるので、
あとは自分のやりたい内容次第でロジックを考えてください。
>>176 >何故readUTFBytes(0)で
>>46 さんのwhile文が有効になったのかが分かりません。
Socket#readUTFBytesの引数に0を渡した場合、多分リファレンスには書いて無いけど、
「その時取得可能な最大の内容を取得する」 あるいは UTFの単位で取得する際の最小の一塊を
取り出してるのかも。 あくまで推測。 何故 0 にしたらいけるのか、についてはごめん俺も知らない。
※余談:
http://www.adobe.us/livedocs/flex/2_jp/langref/flash/net/URLStream.html URLStream の readBytes については、0 にすると全て読み取るみたいな記述はあるけど、
この事から 0 を特別扱いをする傾向を感じる。
あと、UTFの単位で取り出して文字が返ってきてるって事は、サーバ側も文字を送ってる訳だよね?
あとは質問の雰囲気から察した老婆心だけど、readUTFBytes と readUnsignedByte が取得している単位の違いは理解してるよね?
なんていうか最終的には結果オーライでもいいかもしれないが、今やってる内容を乗り越えた後に、
何かでまたつまづいて止まるような気がしないでもない。 あと、ものすごく基礎的な話であれだけど、文字とバイト列の関係とか
181 :
Now_loading...774KB :2009/12/07(月) 06:56:51 ID:tpmuvQTR
AS3 CS3です。 ボタンクリップに対してcを付けて addEventListener(MouseEvent.CLICK,evt); などと、イベントのクリックの指定を行いたいのですが、 場合によって、イベントされないことがあります。 エラーの表記は 「(インスタンス名)のプロパティがありません。」とかです。 でも、ボタンクリップでなくムービークリップだと きちんと思い通りのイベントが反応されます。 これは何が問題なのでしょうか? 基本 ボタンクリップに対して、マウスイベントを与えるのは よくないのでしょうか?
182 :
Now_loading...774KB :2009/12/07(月) 18:13:35 ID:8yMyTb+b
先ほど初心者の方でも書き込んだんですが(マルチですまないです) 【環境】 AS2.0(FLASH CS4, MacOS X) 【目的】 swfに埋め込んだflvの動画が再生終了した後、 自動的に別のフレームに移動させたい フレームに var flv_listener= new Object(); flv_listener.complete = function(){ this.gotoAndStop(57); }; flv_player.addEventListener( "complete" , flv_listener ); stop(); で試しているのですがうまくいきません。 どうすれば良いでしょうか…? どなたか、よろしくお願い致します。
アクションスクリプトだけで無限に横にスクロールする画像を作りたいのですがどのような方法があるでしょうか
184 :
183 :2009/12/07(月) 20:04:20 ID:zyUBTaqv
すみません画像を無限に横にスクロールさせる方法です
>>181 addEventListener(MouseEvent.CLICK,evt); 前後の記述をヨロシク
>>183 左から右に流れる場合:
ステージと同じ大きさの図を2つ並べる(例 [A][A'])
→ [A']をステージから見えるようにして[A][A']を同時に右に動かす
→ [A]の右端がステージの右端付近に来たら[A']を[A]の左に移動させる
→ [A'][A]のセットで右に動かす
→上に戻る
あとは微調整してくれ。
>>180 いつも懇切なアドバイス有難うございます。
>なんていうか最終的には結果オーライでもいいかもしれないが、今やってる内容を乗り越えた後に、
何かでまたつまづいて止まるような気がしないでもない。
色んなサンプルを当たって練習&理解してみます。
187 :
Now_loading...774KB :2009/12/07(月) 20:45:45 ID:FVkpebQE
var left:Number = 0; var right:Number = stage.stageWidth; var top:Number = 0; var bottom:Number = stage.stageHeight; if (ship.x - ship.width / 2 > right) { ship.x = left - ship.width / 2; } else if (ship.x + ship.width / 2 < left) { ship.x = right + ship.width / 2; }
XMLSocketなんですが、
警告 : [strict] 構文が正しくないため、xmlsocket://hoge.net:843 のポリシーファイルは無視されます。この問題の解決方法については、
http://www.adobe.com/go/strict_policy_files_jp を参照してください。
と出ます。
サーバーからは
<cross-domain-policy><allow-access-from domain="*" to-ports="*"/></cross-domain-policy>(\0)
と返しています。
どうすればいいのでしょうか?
>>188 どうすればいいのでしょうかって、丸投げ過ぎでは…
1.XMLの構文が正しくないと言っているのだから、構文をチェックする
2.チェックする先は、ポリシーファイルと、ついでに送受信しようとしたXMLの中身
3.解決法はこちらとリンクが出ているので、そこを確認。
※飛んだ先は多分英語だが、「XMLSocket ポリシーファイル」 でググると話は簡単に見つかる
どうすれば、って意味だとエラーメッセージ通り多分記述ミスがある、あるいはドメイン制限を越えているなど
もろもろ理由は思い当たると思うので、それらに対処すればおk
190 :
Now_loading...774KB :2009/12/08(火) 15:03:34 ID:gmInxnvs
AS初心者、知識はCをかじった程度の学生です インスタンスは表示されるのですが関数が適応されません var url:String = "../obj/top.gif"; var urlReq:URLRequest = new URLRequest(url); var top:Loader = new Loader(); top.load(urlReq); top.x = 100; top.y = 50; addChild(top); top.addEventListener(Event.ENTER_FRAME, test); function test(eventobj:Event):void { var target_mc:MovieClip = eventobj.target as MovieClip; target_mc.x += 5; } 関数内を下記に書き換えると実行されます top.addEventListener(Event.ENTER_FRAME, test); function test(eventobj:Event):void { top.x += 5; } 引数の型変換の部分が上手く記述出来てないと思うのですが 試行錯誤しても解決できないので アドバイスいただけたら助かります
MovieClipではなくてLoaderではないですか?
>>190 自分で上で Loader のインスタンスを addChiled しているのに
target として取得したオブジェクトを MovieClipクラスにキャストしようとしてるのが誤り
Adobeのリファレンスサイトで、DisplayObjectか何かのページに周辺クラスの
継承図があったと思うけど、それによると確か Loader と MovieClip は継承関係には無かったと
思うので、キャストは出来ません
as MovieClip の所を as Loader に変えればおk
193 :
Now_loading...774KB :2009/12/08(火) 20:43:38 ID:n+zyz8lA
>>191 ,192
通りました!さんくすです
OOP初めてなので助かりました
追加で質問ですが
Loaderで読んだ画像をMovieClipとして扱う方法はないのでしょうか?
現状はHPに使いたいと思ってるのでLoaderやBitmapでも問題ないですが
ちょっと気になりました(´・ω・`)
>>193 MovieClipはただの入れ物だから、
そのままmcにaddChildするか、bitmapData.draw()で写してビットマップとして追加するか
195 :
Now_loading...774KB :2009/12/08(火) 21:24:14 ID:n+zyz8lA
>>194 そういうやり方があるんですね
調べてみます!ありがとうございます
自宅からレス。
>>192 です
>>193 MovieClip として扱う、の範囲がどこまでを指してるのかによるのであれなんだけど、
もしも単純にMovieClipのインスタンスとして扱いたいというならば、
>>194 氏 のレス通りにすればいいと思う。
というか、1点だけ。 OOという観点でASを使う場合、勉強や具体的な実装含めて、
基本的な考え方については別段問題は無いんだけど、用意されているライブラリのクラス構成については
罠が沢山待ち受けているので、あまりお勧めは出来ないかもしれない。 …知った上で使う分には便利だけども。
例えば先ほどの Loader クラス。 これは名前の印象から、例えば Java で言うところの net系クラス、あるいは io系クラスのように
見えるけれど、正体はここにある通り ↓
http://livedocs.adobe.com/flash/9.0_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000143.html DisplayObject系の派生クラスです。つまり名前は "Loader" なんて汎用的な io風の名前が付いているけれど、
Sprite や MovieClip の仲間です。 他にも、Video系クラスの使うストリームは、net パッケージのストリームとまったく互換性が無いとか、
分離も出来ないとか、OO的な観点から見ると???な状態となっています。 OOP初めてなので、とレスにあったので
この辺にも注意、とコメントだけしておきます。
あ、忘れた。 >MovieClip として扱う、の範囲がどこまでを指してるのかによるのであれなんだけど この↑一文の意味は、つまり単純に stage に addChild して座標を動かしたい程度だったら、 特に MovieClip や Sprite と入れ子にする必要はなくて、そのまま(Loaderインスタンスのまま)addChild してやればいい、 (何故って、Loaderの正体は上記の通りなので) でももしも何かの事情でどうしても MovieClip インスタンスにしなければならないとしたら、入れ子にすればよい、 という意味です。 念のため補足。
>>196 ,197
わかりやすい解説ありがとうございます
勉強になりました!
addChild(new Bitmap());をした場合 中心点は必ず左上になるのでしょうか中心にすることはできませんか?
x,yを縦横の半分マイナス
201 :
Now_loading...774KB :2009/12/10(木) 23:30:58 ID:Iz90nhwq
package { 〜 var t:TestClass = new TestClass(); t.num = 234; trace( typeof( t ) ); } class TestClass { public var num:Number } 変数格納用のクラスが使いたくて、packageの外で定義する方法をやってみたのですが、 このインスタンスtをtypeOfで調べてみた所、object型と出ました。 object型の変数を使うと処理が重くなるといった事を思い出して、この方法をやってみたのですが。 (最初はpackageの中でObject型の変数を指定して、 object.num とobjectインスタンスの外から変数を指定していました) 何度もTestClass.numにはアクセスするので、あまり重くない方法を取りたいのですが・・・。 結局packageの中でobject変数を用意するのと、上のように別の変数用クラスを用意するのでは、 結局同じObject型へのアクセスという事で、処理負担はどっちが有利という違いは無いのでしょうか? それともObject型を回避する為に class TestClass extends Sprite のように、スプライトを継承したりした方が何も継承しない上の方法よりは負担は軽くなるのでしょうか?
>>201 別個でクラス作った方が基本的に早くなるよ
でもたぶん10万回とか100万回くらいループしないとほとんど差はないけどね
普通の
var obj:Object = {};
で生成するオブジェクトはプロパティの数も型も決まっていないダイナミックなクラスだから遅いものと思われる
パフォーマンスが気になるときは↓みたいにちょちょいとテストするとよかろう
import flash.utils.getTimer;
var start:int = getTimer();
for () { ... }
trace(getTimer() - start);
Objectを継承していない変数なんて存在するの?
ASの場合、プリミティブ型(int、uintなど)もObject継承してたかも 今見られないのでちゃんと確認してないが
intもObject継承してるよ ただ速度の問題ならダイナミックかそうでないかがキモだろうから、だから何?って話になるけど プリミティブはさらに速度出るように特殊な処理してるからなおさら
import fl.transitions.Tween; Tweenクラスをインポートしようとするとコンパイルエラーが出るのですが どなたかわかりませんか? 環境は Flex,FlashDevelop共Verは3.x(忘れました)でFlashPlayer9の機能には対応してると思います
>>206 flash cs3とかのAdobe製品に含まれてるパッケージだと思われる
tweenerとか使ってみたら?
Flash CS3で作ってます。AS3.0を始めて1週間程度です。 縦長長方形のムビクリをドラッグにあわせて縦の長さを伸縮できるようにして、 なおかつ離したときにゴムのように伸び縮み→減衰して停止、というスクリプトを組みたいです。 ゴムのように伸び縮みする部分はheightにsinを代入することで再現、減衰はMath.powを使うところまではわかってますが、 どう代入したらいいのかさっぱりわかりません。 なお長方形はムビクリで作りましたが、ただの塗りつぶした長方形なのでDrawRectで書く方法でも大丈夫です。 どなたか宜しくお願いします。
ムビクリ(笑)
>>209 その関数の結果(戻り値)をセットする、って言う考えはどこから来た?
理由が整理されてないと方法は見つからないぜ
とりあえず、周期関数で座標を動かせばビヨヨーンってなるんじゃないか、
までは気づいてるようなので、順序としてはまず
「マウスで適当なMovieClipをクリックして、対象を特定できるか」
(ヒント:MouseEvent.MOUSE_DOWN と .MOUSE_UP)
「次に、マウスの動きに合わせてMovieClipを変形動作できるか」
(ヒント:MouseEvent.MOUSE_MOVE)
そこまで出来れば、あとは座標や幅高さをあなたの方法で変化させてやればいい
212 :
Now_loading...774KB :2009/12/12(土) 11:38:06 ID:rbi4Usls
ビヨ〜ン関数のクラスもあるぜ
メディアサーバーに置いてある動画を以下のScriptで再生したいのですが、うまく行きません var nc:NetConnection = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, onNCNetStatus); nc.client = new Object(); nc.connect("rtmp://flash.ponycanyon.co.jp/vod/c/2009/lisa-ch"); function onNCNetStatus(_evt:NetStatusEvent) : void { trace(_evt.target+":"+_evt.info.code); var ns:NetStream = new NetStream(nc); ns.client = new Object(); ns.addEventListener(NetStatusEvent.NET_STATUS, onNSNetStatus); ns.play("movie"); var vid:Video = new Video(240,180); vid.x = vid.y = 0; vid.attachNetStream(ns); addChild(vid); } function onNSNetStatus(_evt:NetStatusEvent) : void { trace(_evt.target+":"+_evt.info.code); }
>>213 の続きです
上記を実行すると、出力は
[object NetConnection]:NetConnection.Connect.Success
[object NetStream]:NetStream.Play.Reset
[object NetStream]:NetStream.Play.Start
と出ますが、再生されません。
ちなみに、動画をローカルに置いて、nc.connect(null);、ns.play("movie.flv");に書き換えれば再生されます。
また、自分でスクリプトを書かずに、FLVPlaybackコンポーネントを使って、sourceプロパティに rtmp://hoge.com/app/movie.flv と設定しても再生されます。
なにか根本的なところが間違ってるのかもしれませんが、よろしくお願いします
>>213 まず、あなたはポニーキャニオンの人? つまり、
>nc.connect("rtmp://flash.ponycanyon.co.jp/vod/c/2009/lisa-ch");
ここと同じドメインにSWF置いてる?もしも全然無関係な個人サイトにSWFをUploadしていて、
まったく別のドメインにあるこれをロードしようとしてるなら、普通に無理と思う
>>211 自宅から書き込みます。
いくつか買い集めたAS3.0本にTimer関数ってのを見つけたので、そこからです。
一定間隔ごとにsin値を取得してそれを連続して表示すればアニメーションするんじゃないかと思いました
>>215 すいません、無修正でアップしちゃったので忘れてもらえると助かります
構成はWEBサーバーにswfをおいて、メディアサーバーにflvを置いてます
アクセス許可は大丈夫とのことだったので、crossdomain等も大丈夫です
この状態で、
FLVPlaybackコンポーネントを使うと再生できるのに、
上記のスクリプトでは再生されません
何が悪いのかを教えていただけると嬉しいです
>>217 うーん・・・ 以前にVideo関係の取り回しを楽にするため、ラッパークラスを設計して書いた事あるので
その時のソースとリファレンスを確認してさらっと見直してみたけど、とりあえず、
NetStream#play() の引数として、俺はurlを渡しています。メディアサーバは使用した事無いんだけど、
あいつの正体は JavaのServlet だったと思うので、単純に、パスが間違ってないか?とは思います。 つまり、
>ns.play("movie");
この時これは、swfから見て ./movie にあたるパスにアクセスしようとしてると思うので… それがまず合ってるのかな?と
>>218 私もメディアサーバーを使わずに動画再生を行ったことはあります
httpだと、NetConnection.coonect(null)とplay(URL)で済むんですが
rtmp://の場合はいろいろと違うようで、四苦八苦してます
一応いろんなサイト見てその通りにしてるはずなんですが・・・
どこに質問していいのかわからないので、 とりあえずよろしくお願いします。 5年ほど前に、ユーザ認証で入るサイト内で、 DBの値を取得し、Flashでグラフを作成しました。 その時は、ユーザIDとパスワードをswfの後ろに パラメータをつけた形でHTML出力してもらっていましたが、 さすがにセキュリティ上まずいだろうという話になり、 別の方法でセッション情報を受け渡せないだろうか?と 質問されました。 私はしがないFlash作成要員なので、 どう答えればいいのかわかりません。 Flashへ投げるDBの内容はASPで吐き出してもらっています。 板スレ違いでしたら、申し訳ありませんが どちらに移動すればいいか、教えていただければ幸いです。
>>220 例えばサーバサイドでPHPとか使ってたらPHPのセッションにログイン情報もっておいて、
FLASH内からリクエスト投げてOKかNG返してもらうとか。
ユーザ認証は何でやってるの?
222 :
220 :2009/12/12(土) 18:49:44 ID:BBJFx9AU
>>221 Flashを置いてあるページ以外も複数作成してもらっていて、
業者はすべてASPで開発していると言っていました。
私は、今一セッションという概念もわかっていないです(´;ω;`)
>>222 ASPってドットNETのほうのASPか
以前はそのSWFの後ろにつけたID・PWを使ってどうやって認証してた?
あとDBへのアクセスはASP経由とかでやってる?
セッションの効いてるページ上にswfエンベッドしてるならセッション情報付きで サーバにアクセスできるんだけど、業者が難しく考えすぎてるだけなんじゃないか?
>>220 >>222 >その時は、ユーザIDとパスワードをswfの後ろに
>パラメータをつけた形でHTML出力してもらっていましたが、
まず整理したいんだけど、ここで言っている認証状態って例えば
1.swf の AS内からネットワークに接続する為に渡されている物?
2.それとも、swf そのものを認証後にクライアントにロードさせたい為、間に CGI 等挟んでたりする?
1の場合、良くあるのは *.asp/*.aspx (あるいはその他のサーバサイドページ、php、jsp など)でログイン処理と
セッション維持を行っておいて、そこに動的に出力された html 上で、ワンタイムキーを埋め込み、
swf 側はそのワンタイムキーをサーバに投げて本来の ID/PW を取得して処理を続行するっていうパターン。
しかしもしも2の事情がある場合、ちょっと設計そのものを変えないと無理。 … って、書いてて思ったが、2はあんまり無いか
>>223 >>224 FlashからDBの値を取得という書き方は
よくなかったですね。
えっと、
HTMLから、○○.swf?ユーザID&パスワード
という形で受け取ったIDとパスを
sendLoadVars.sendAndLoadで渡し、
あちらからは、変数=○○&変数=○○…
という形で吐き出してもらっています。
渡し先のスクリプトは拡張子がaspxです。
>>226 って事は、
>>225 で言う 1に該当する状態だけど、
多分 asp/aspx 側(要するに ASP.NET側)は、単純に swf からアクセスされるページで
SESSIONの情報をさらっと取得せず、ID/PW で再度確認を行いながら内容を返している、って事だよね。
そういう事情ならワンタイムキーをログイン時に作成してもらい、それをID/PWの代わりに埋め込んでもらえばいいだけ
そしてAS側も、ID/PWの代わりにそれを送信すればいい。
サーバ側(ASP.NET側は SESSIONからワンタイムキーを引いて、それと送信されてきたものが一致するかだけ確認すれば
結果認証されてるって事になる。 ※実際の認証は、結果的にログイン時に行われているって事になる
おまけ。
>>222 >私は、今一セッションという概念もわかっていないです(´;ω;`)
セッションって、要するに 「一連のページは単独でない。全て入り口から出口までつながったものです」 を表現する為の考え方で、
それを実現する為の技術です。 ASP.NET でも JavaのJ2EE(多分 Flexメディアサーバ含む) でも、PHP でもその他でも考え方は大体同じです。
具体的には、あるページに接続してきたクライアント(例えばブラウザ、例えばSWF、例えばなんらかのソフト)があるとき、
そのクライアント個人向けに何らかのデータをサーバ側に持ちます。 次に同じクライアントからそのシステムに接続された時、
同じデータをサーバ側で操作できるようにします。 で、この時、「次に同じクライアント」 と一言で言っているけど、
普通 http はステートレス(遷移状態が記録されない) なので、そのままでは 「このアクセスは同じひと」 がわかりません。
それを解決するため、サーバ側の機構として COOKIE を利用して、とあるキーが発行されます。
サーバ側のセッション処理機構では、クライアント側のCOOKIEにあるキーと、自分が持っているキーの辞書を比較し、
「あ、これ同じ人」 と、判断します。 こんなかんじ
てかサーバ側でSession情報に応じて値返すようにしとけばそもそもswfに変数渡す 必要すらないと思うが。
231 :
220 :2009/12/12(土) 23:35:35 ID:BBJFx9AU
>>225 >>229 ありがとうございます!
セッションてどうやって引き継いでるんだろう?と思ってたのですが
そういうことなのですね。
業者の方にはワンタイムキーを渡すようにしてくださいと
回答すればよいのでしょうか?
>>229 さんの
おっしゃってることは、またこれとは違う手法なのですか?
>>231 どういう環境か不明だから業者にこのスレ見せて選ばせるのが手っ取り早いと思う
>>232 了解です
大変助かりました
みなさんありがとうございました
234 :
Now_loading...774KB :2009/12/13(日) 02:46:39 ID:PA6RPTM6
AS3、cs4でサンプルソースの利用についてです。 初心者ですがよろしくお願いします。 本当に初歩的な事だと思いますが、 package{ import〜 と記述されてるスクリプトをCS4でswfとして出力するにはどうすればいいですか? 自分なりに調べてみたのですけど環境設定で外部ASとして読み込み、 そのflaファイルを同階層に置いて出力すればおkとの事だったんですが うまく出来ませんでした。 どのような設定をすれば読み込んでくれるのか知りたいです。 内容、文章ともに稚拙で申し訳ないのですが、どうかよろしくお願いします。
ヘルプでドキュメントクラスのところ読めば分かるんじゃないかな?
123456・・・と高速で数値を加算して表示していくプログラムがあるのですが テキストフィールドに毎回書き込むと負荷が大きそうな気がするのですが大丈夫でしょうか 0〜9までを画像にして毎回表示するほうが軽いでしょうか
テキストでおk
EnterFrame毎に出力するほうがよか
239 :
213 :2009/12/14(月) 20:15:59 ID:dRkhb1BX
>>213 です
自己解決したので、報告
rtmp://domain.com/video/data/1/movie.flv
にある動画は以下のソースで再生できました
var vid:Video = new Video(240, 180);
addChild(vid);
var nc:NetConnection = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, evtNetStatus);
nc.client = new Object();
nc.connect("rtmp://domain.com/video");
function evtNetStatus(_evt:NetStatusEvent) : void
{
trace(_evt.info.code);
switch (_evt.info.code) {
case "NetConnection.Connect.Success":
var ns:NetStream = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, evtNetStatus);
ns.client = new Object();
ns.play("data/1/movie");
vid.attachNetStream(ns);
break;
}
}
>>218 >ns.play("data/1/movie");
だから相対パスになってるんだけど合ってるかなと
>>218 で言ったんだけど、
自己解決って事は、伝わってなかったのかw
読み込みたいファイルが存在しなければ無視するシステムを作りたい (URLは利用者に入力させるので、事前に正しいかどうか分からない)のですが たとえば、ローダーの場合、 var loader:Loader = new Loader(); loader.load(new URLRequest(存在しないファイルアドレス)); で、存在しないファイルをLoaderで読み込もうとすると、 Error #2044: ハンドルされていない IOErrorEvent : text=Error #2035: URL が見つかりません。 というエラーがでてしまいます。(ファイルが存在しないのだから当たり前ですが) なので、読み込む前にファイルが存在するかどうかあらかじめ調べるか、エラーを出さずにすむ方法はないでしょうか。 ちなみに、ぐぐったら↓これを使えと書いてあったんですが、これでエラーをキャッチしてもエラーは出たままです。 loader.addEventListener( IOErrorEvent.IO_ERROR, ioErrorHandler ); どうすれば実現できますでしょうか? 開発環境はFlex4+Flashdevelop3です
>>242 loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, func);
かな。それか例外処理で検索。
たぶんどっかの画像のURLとかテキストのURLを使ってムービーに表示させたいとか? エラー処理はtry...catchとI/Oエラーでいけるはずだけど、そもそもセキュリティ的に無理なことやろうとしてんじゃないかな
245 :
Now_loading...774KB :2009/12/16(水) 15:57:47 ID:75TQBDdE
ActionScript3でC言語で言うところのmemcmpを配列に対して実行する方法はありますか? forで回してるんですが、遅くてたまらないです。
ないんじゃない?固定長のデータを高速に扱う部分がキモならByteArrayでやればいいんじゃないかな
247 :
純金配合 ◆GoldHyGo/. :2009/12/16(水) 17:14:35 ID:gWhAZ8nf
>>245 ありません
と言うか、結局ASは良くも悪くもFlashと言う1製品用のスクリプトなので、
ネイティブコンパイル(またはそれに準ずる物)と比較しない方が良いかもしれないです。
充分な機能を持ってますけどね
例えばその部分だけAlchemyでCに処理渡したら速くなったりするのかなあ? 実験でやってみてほしいw
250 :
242 :2009/12/16(水) 22:28:56 ID:V5BHnBnc
251 :
245 :2009/12/17(木) 15:26:09 ID:4LrrG9pf
>>246-249 ありがとうございます。
Alchemyで実装してみたら無茶苦茶早くなりました。
#include <stdlib.h>
#include "AS3.h"
static AS3_Val compareMemory(void* self, AS3_Val args)
{
int retval;
AS3_Val arg1 = AS3_Undefined();
AS3_Val arg2 = AS3_Undefined();
int arg3;
void* a;
int a_len;
void* b;
int b_len;
AS3_ArrayValue(args, "AS3ValType, AS3ValType, IntType", &arg1, &arg2, &arg3);
a_len = AS3_IntValue(AS3_GetS(arg1, "length"));
a = malloc(a_len);
AS3_ByteArray_seek(arg1, 0, 0);
AS3_ByteArray_readBytes(a, arg1, a_len);
b_len = AS3_IntValue(AS3_GetS(arg2, "length"));
b = malloc(b_len);
AS3_ByteArray_seek(arg2, 0, 0);
AS3_ByteArray_readBytes(b, arg2, b_len);
retval = memcmp(a, b, (size_t)arg3);
free(b);
free(a);
return AS3_Int(retval);
}
int main() { AS3_Val compareMemoryMethod = AS3_Function(NULL, compareMemory); AS3_Val result = AS3_Object("compareMemory: AS3ValType", compareMemoryMethod); AS3_Release(compareMemoryMethod); AS3_LibInit(result); return 0; } とりあえずこんなので動いてるみたいです。
>>253 Lite2.0ならFSCommandを使わない限りPlayer7でパブリッシュしたSWFも
利用できます。
あとLite専用スレは見た?
>>255 swfだけ試してみたけど、これは単純にこういう状態
1.hittest が true → 音が鳴る
2.絵が回転する
3.回転のタイミングで(恐らく斜めになったあたりで) hittest している対象の MovieClip から一度マウスが離れた状態になる
4.そのまま回転が続き、再び hittest が true → 再度音が鳴る
図示すると… □ ← の領域の、例えば右下の角あたりにマウスがある時(hit!)、□ が回転して ◇ ← こうなった時、一度マウスは
外の領域に出た状態になる。 そのまま ◇ が回転し続け … 再び □ ← こうなった時、再度 hit するという状態。
なので簡単な回避方法としては、例えば回転する MovieClip を入れ子にして、
[親] 不透明度 1(0でも良かったっけ?)の矩形
└[子] 回転する絵
のようにして、hittest は親側でする。のようにすればおk
┌─┐
│◇│ ←外の枠が hittest 判定用の透明な親。中の◇が回転する絵。
└─┘
257 :
Now_loading...774KB :2009/12/19(土) 12:52:48 ID:pfka2vJ1
xmlにかかれた情報を読み取って1つ1つの情報に合わせたムービークリップを複製したいのですが、 どのようなコードを書いたらよろしいでしょうか?よろしくお願いします。
URLLoaderで読み込んでXMLListにぶち込む
259 :
Now_loading...774KB :2009/12/19(土) 15:02:42 ID:pfka2vJ1
>>258 できました!!ありがとうございました!!
ASもECMAS5に準拠するのかな?
>>255 フラグを使う
カーソルが触れた時にサウンドを鳴らしたいのか
クリックした時に鳴らしたいのかはっきりしないのでこれくらいしか言えない
テキストフィールドにUIScrollBarをセットで使っているんですが、 表示している段落の位置を強制的に最下段に直す事ってできませんかね? よろしくお願いします。
263 :
Now_loading...774KB :2009/12/19(土) 23:26:29 ID:pfka2vJ1
url =new URLRequest("music/00" +[i]+".mp3"); URLRequestに変数のiを入れてif文にかけたいんですが、この場合iはどのようにいれればいいでしょうか。 よろしくお願いします。
>>263 ? 要は 「もしも i の値が何々だったら、どうこう」 ってしたい、ってこと?
var i:int = 100;
var url:URLRequest = new URLRequest("music/00" + i +".mp3"); // ← この場合、"music/00100.mp3" という文字列に
この時、例えば 「i が 50 だったらどうこう」 したい場合は、
if(i==50) {
// i が50ならどうこう
} else {
// そうでない場合
}
って話ではなくて?それとも三項演算子の話なのか
265 :
Now_loading...774KB :2009/12/20(日) 00:14:54 ID:TMOvwNTF
>>264 説明不足ですいませんでした。最初にiの値に0を入れてインクリメントして
music/000.mp3
music/001.mp3
music/002.mp3
....
とURLRequestに入力したいと考えています。
>>265 それをやりたい場合は、 if じゃなくて for という制御命令を使うのだ
for(var i:int=0;i<100;i++) { // 0〜99 まで繰り返す
url =new URLRequest("music/00" + i + ".mp3");
// なんか処理
}
…ただしこのまま実行した場合、000.mp3 〜 009.mp3 まではいいとして、
10以降は 0010.mp3 のようになってしまうから、適宜フォーマットしてやらんといけない
例えば↓こんな具合に
for(var i:int=0;i<100;i++) { // 0〜99 まで繰り返す
var tmp:String = "000" + i;
// 文字列の後ろから3桁を拾っている。3桁以上になる場合、-3 を変える必要あり
url =new URLRequest("music/" + tmp.substring(tmp.length-3) + ".mp3");
}
267 :
Now_loading...774KB :2009/12/20(日) 10:11:37 ID:HBBkJ6sl
xml内を検索したいのですが、ググるとimport mx.xpath.XPathAPIを使うというのがありますが、 AS3単体でそう言ったことをするにはどうすればよいでしょうか?
補足です。Arrayを使うと、出来ますが、xmlのデータが <日本の駅> <駅情報> <駅名>横浜駅</駅名> <路線情報> <路線名>東海道線</路線名> <上り駅>川崎</上り駅> <下り駅>戸塚</下り駅> </路線情報> <路線情報> ・・・ </路線情報> <路線情報> ・・・ </路線情報> </駅情報> <駅情報> </駅情報> ・・・ </日本の駅> みたいになっていまして、arrayで[0][0]に駅名、[0][1]に路線名、2,3に上り下り駅なんて形で入れますと その駅に2路線以上あると、同じ駅なのにインデックス値が変わってしまうため、 抽出するときに厄介なことになってしまうので、xmlのままで検索できないかと思い、質問させていただきました。 もし、arrayをこうすれば解決できるなどありましたら、教えていただければ幸いです。
>>267-268 簡単に一言で済ますと、DOMでぐぐれ、って話になるんだけど… ASの場合この辺か↓
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/xml/package-detail.html 一応、簡単に補足しておくと、とりあえずXMLを扱う時の基礎としてはASに限らず大抵の言語で、
XMLの標準操作である DOM(Document Object Model)という考え方を使って要素にアクセスする。
ASで具体的に書くと、こんな感じになる。
var oXml:XMLDocument = new XMLDocument();
oXml.ignoreWhite = true; // 空白を気にするな、の意味
oXml.parseXML(〜ここにXML文字列〜); // パース
var tmp1:XmlNode = oXml.firstChild; // 最初の要素。
>>268 で言えば、多分 "日本の駅"
var tmp2:XmlNode = tmp1.childNodes[0]; // とりあえずXMLデータがみっちり隙間無かった場合、多分最初の "駅情報"
var tmp3:XmlNode = tmp2.childNodes[0]; // 同様に、多分最初の "駅名"
var tmp4:String = tmp3.childNodes[0].toString(); // 多分 "横浜駅" という文字列。
※注:tmp4 については、普通はただの文字列(XMLで言うCDATA)であっても「ノード」なのでこのようにするけど、
エンジンが上手い具合に処理してくれてるなら、 tmp3.toString() で取れるかも
基本的に、XMLのデータは『ノード構造』なので、ファイルディレクトリみたいに階層になっていて、
XPath は上みたいなDOM処理を簡易に行うため、それこそファイルのパスやURLのように "日本の駅/駅情報/駅名" みたいにアクセスできるようにした仕掛け。
しかしXMLのデータはファイルやURLのそれと違い、ノード名は重複するので、結果的に途中で n 個の同名を XMLNodeList 形式で取得して
処理する必要がある。 ・・・ だいぶ端折って簡単に説明してるけど、もっと詳しくは DOM でぐぐっておくれ
あと、普通この手のノード処理は、もしも汎用的に書きたい場合や慣れてる場合、さらっと再帰のアルゴリズムで実装する。
理解出来ていればその方が簡単で手早い。 限定的で絶対にデータ文字列に問題が無い事がわかっているなら、上みたいに書いてもいい。
>>268 AS3ならe4x使ってXMLList形式でアクセスすればいいんじゃね?それだとなんか問題あるの?
MP3形式で効果音を鳴らしているのですが遅れて再生されてしまいます仕様なのでしょうか
>>270 ,271
回答ありがとうございます。両方とも見て大変参考になりました。
まだ出来てはいませんが、色々試してみたいと思います。
274 :
Now_loading...774KB :2009/12/21(月) 03:11:54 ID:6M2CzB/c
CS4 AS2.0です a_mc._visible=false; NO=1; b_btn.onPress = function(){ No++; if(NO==1){a_mc._visible=true; } else{ a_mc._visible=false; } } b_btnを押したらa_mcを表示させ、もう一度押したらa_mcを非表示に したいのです。 現状表示はするのですがもう一度ボタンを押しても非表示になりません お忙しいなかだとおもいますがご回答お願いします
No
function(){ a_mc._visible = !a_mc._visible; };
277 :
Now_loading...774KB :2009/12/21(月) 09:26:47 ID:6M2CzB/c
>>263 >>265 for (var i:int=0; i<100; ++i) {
var url:URLRequest = new URLRequest("music/00" + ((i<100)?"0":"") + ((i<10)?"0":"") + i + ".mp3");
:
:
}
とかじゃなく?
とかじゃなく
CS3(Windows)、ASは2(のつもり)ですが、↓の例は適当に書いてます。 onLoad = function() { for(i = 0; i < 3; i++) { this["mc_" + i].onPress = function() { trace(j); } } } 上のようなスクリプトを書いた場合、 「mc_0」〜「mc_2」まで、どれをPressしてもtraceされるのは「2」になると思います。 これを、「mc_0」をPressしたら「0」をtrace、「mc_1」をPressしたら「1」をtrace、 みたいに動作させる場合、どのように書くと良いのかが解らずにいます。 自分の聞きたいことを上手く質問できているかすら自信がないのですが、 何かしらご指摘やアドバイスなどいただけると嬉しいです。
>>280 trace(j)って何?
trace(i)の間違いか?
iの値は保持されていないので、以下のようにMCに値を持たせる必要あり
this["mc_" + i]._i=i;
this["mc_" + i].onPress = function() { trace(this._i); }
そうでないなら、以下のような方法もありかと
this["mc_" + i].onPress = function() { trace(this._name.charAt(3)); }
>>281 ご指摘の通り、「j」は「i」のタイプミスです、ごめんなさい。
後者の、名前から引っ張ってくるってのは自分でも想像してたんですけど、
前者は思いついてもいませんでした。
早速試してみたいと思います、レスありがとうございました!
283 :
Now_loading...774KB :2009/12/24(木) 11:42:44 ID:VIoBf33x
Javaからの移植をしています。 static final String a[][] = {{"A","B"},{"12","34","56"}}; をVectorを使った配列に変えたいのですが・・・。 ググってもよく分かりませんでした。 誰か教えていただけないでしょうか?
static var vec:Vector.<Vector.<String>> = Vector.<Vector.<String>>([Vector.<String>(["A", "B"]), Vector.<String>(["12", "34", "56"])]); なんだこれ
285 :
Now_loading...774KB :2009/12/25(金) 01:38:50 ID:tWWEWqzZ
ActionScript3.0 で、URLLoaderでサーバのテキストを読み込むプログラムを作ったのですが、 ファイルのすべてを読み込まれるまで dataプロパティには読み込んだデータが格納されないようなのです すべて読み込まれるまでに次の動作が要求されるプログラムを想定しています Event.COMPLETE以前に読み込んだデータを扱うにはどうしたら良いでしょうか Socketから自分で書くしかないのかと悩んでいます どなたかご教示お願いいたします
そら自分で書くしかないわな
URLStreamを使えと書いてありました
288 :
285 :2009/12/25(金) 11:30:11 ID:tWWEWqzZ
>>286 >>287 URLStreamで実装したところ無事成功しました!
long pollingに必須だったのでとても助かります
ありがとうございます
Flash含め、PhotoshopとかDWとかCS5はいつ頃発売されるのでしょうかね?
290 :
283 :2009/12/25(金) 16:37:51 ID:AzgituD4
>284 ありがとうございます。 ちょっと混乱しそうな記述になりますねw
291 :
Now_loading...774KB :2009/12/26(土) 20:21:07 ID:q4M9kfOU
>>291 手っ取り早いのはフォントを埋め込むことだったような。
>>291 ダイナミックテキストをビットマップに変換したらいい
方法?
そんなもん自分で調べろ
294 :
291 :2009/12/26(土) 22:24:36 ID:q4M9kfOU
>>290 ありがとうございます。
しかし、『_ゴシック』などとすると埋め込みボタンが
無効になります。これでSWF化しても何も出ません。
どうしたら良いでしょうか?
ちなみにPlayer7です。
>>293 Player7なのでBitmapDataオブジェクトは不可です。
>>294 前に_(アンダースコア)がついているフォントはデバイスフォントなので
埋め込みできない。それ以外のフォントにする。
297 :
Now_loading...774KB :2009/12/28(月) 02:55:08 ID:RPfMPOWJ
環境はCS4,AS2.0,Player7,WinXPです。 MC内にlineToで階段状の線を引いていますが、最初の1本目(漢字で言うなら 1画目)の線を透明にしたいのですが出来ません。例えば _| なら最初の水平線 が透明です。 流れは、 moveToで始点に移動 → lineStyleで1本目はアルファを0に → lineTo で線を引く です。 記述の順番を入れ替えて lineStyle → moveTo にしても同じでした。 どうすべきでしょうか?
それであってるように思うけど・・
AC初、flashdevelopにてHPを制作しております live_txt.text = (live_urlLoader.data as String); だと読めるのですが live_txt.htmlText = (live_urlLoader.data as String); とすると無理みたいです 外部テキストを.htmlTextへ読み込む場合はどうすればいいのでしょうか どなたかよろしくお願いします
>>300 ACって何だ。ASの事?さらに as があるから多分AS3だと思うが、
まず live_txt って型は何?何のオブジェクトを指してる?あと
無理みたいとはどういう状態?エラーならその内容、意図しない動きならその動作を書け
あなたが見ている物がはっきりしないと、見当違いな話になってしまうので、
状況を正確に伝えて
302 :
300 :2009/12/28(月) 08:49:15 ID:ehS+rF8g
>>301 説明不足すいません、AS3です
ACって何だ・・・orz
live_txt:TextFild
live_urlLoader:URLLoader
.textへ代入するとロードしたテキストがそのまま反映されるのですが
.htmlTextへ単純に代入出来ないものかと思いましたが
コンパイルは通るのですが、反映されずブランク状態です
303 :
300 :2009/12/28(月) 08:53:42 ID:ehS+rF8g
>>302 TextFild→TextField
重ね重ねタイプミス申し訳ないです
なんで出来ないか分からないから、参考にでも private var tf:TextField = new TextField(); public function Main():void { addChild(tf); var ld:URLLoader = new URLLoader(); var req:URLRequest = new URLRequest("tf.txt"); ld.addEventListener(Event.COMPLETE, loadCompleteHandler); ld.load(req); } private function loadCompleteHandler(e:Event):void { tf.htmlText = e.target.data; }
>>303 実は表示されてるとかいう落ちは無いよね?
文字の色とか文字サイズとか。その辺は確認した?
CSS埋め込んで「これなら絶対見えるはずのサイズ」とかにしてみた?
>>304 そのサンプルには余計な部分が多すぎでは
306 :
297 :2009/12/28(月) 23:24:51 ID:6fC0oWy6
自己解決しました・・・しかし明確な理由は分かりません。 線を引くMCは空のMCだったのですが、これに入れ子で別のMC を含ませたところ、希望通りの線が描かれました。 なお、新たに入れ子になったMCと線とは何ら記述上の関係はありません。
そんなハズは無いと思うがまぁいいかー
308 :
Now_loading...774KB :2009/12/29(火) 00:12:00 ID:bM3/YZ3b
PHPを使って、SWF内に画像を読み込みたいのですが出来ません。
環境: CS4,AS2.0,WinXP,Player7,PHP5.2.6(Apache2.2)
※Localhostで実行
POSTを使ってPHPでは、
$gazou = "fig01.jpg";
echo '&gazou='.$gazou;
SWFでは
var load_vars:LoadVars = new LoadVars();
load_vars.onLoad = function(success:Boolean) {
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.loadClip(load_vars.gazou,mc);//Stage上のmcにJPGを読み込ませる
// sendAndLoad() で送受信している
}
これだとエラーとして
URL 'file:///C|/〜/Flashとのリンク/***/fig01.jpg' を開く処理のエラー
が出ます。
一応、引数のsuccess:Booleanはtrueになり、PHP側のファイル名はfig01.jpgは
正しいのですが画像表示されません。どうしたら良いでしょうか?
参考サイト:
ttp://hfm-kenchan.com/Lesson/log_qa/D0804272.htm
309 :
308 :2009/12/29(火) 00:19:46 ID:bM3/YZ3b
(補足) POSTを使ってPHPでは、 $gazou = "fig01.jpg"; ←この空行は無視して下さい echo '&gazou='.$gazou;
SWFファイルの設置された場所からの相対パスになってると思う。 つまりプレビュー中はローカルファイルの参照になるね。 $gazouに絶対パスを入れておくか、SWFファイルをWEBサーバーにアップロードすれば解決すると思う。
311 :
308 :2009/12/29(火) 01:20:39 ID:bM3/YZ3b
>>310 てんきゅう〜! 絶対パスを入れてOKでした。
312 :
308 :2009/12/29(火) 03:12:45 ID:bM3/YZ3b
すいません、連投になります。 実際にWebで試そうと思い、上のSWFをPHPファイルと共にサーバーの同じ ディレクトリにUpしました。 すると再び画像が出なくなり困っています。 SWFにはダイナミックテキスト(valueT2)を設けてLoadした値を確認することに しました。 mcl.loadClip(load_vars.gazou,mc); valueT2.text = load_vars.gazou;// ここで確認 この場合 valueT2に fig01.jpg が表示され、SWFは load_vars.gazou 自体は 受け取っているようです(しかし表示されません) どうしたものでしょうか?
mclのリスナの、onLoadErrorとonLoadCompleteをチェックしてみて。
314 :
Now_loading...774KB :2009/12/29(火) 18:15:02 ID:3mdZu8Tc
開発環境:win vista,flashdevelop セッターとゲッターの使用について困っています。 例A. private var _net:NetworkEngine;//ネットワークエンジン public function get net():NetworkEngine { return this._net; } 例B. private var net:NetworkEngine;//ネットワークエンジン public function getNetworkEngine():NetworkEngine { return this.net; } 問題1 例Aのようにゲッターを使用しているのですがプライベート変数netという変数のゲッターをnet()と記述しようとしたところ、ゲッター名には既存のメンバ変数名を使用できないような動作をみせました。渋々_netとしてメンバ変数を宣言することにしました。 一般的にはどのようにゲッターとメンバ変数を結びつけるのがよいのでしょうか。_による解決は釈然としませんでした。 問題2 一般的にゲッターやセッターは使うべきなのでしょうか?例Bのようなjava的にget~やset~というメソッドを使ってカプセル化をしたほうがよいような気がしてきました。
>>314 >問題1
プライベート変数とセットにして作成するその方法が一般的
>問題2
好きにすれば?といsか言いようがない。
変質的なカプセル化マニアならなんでもカプセル化するだろうし、
値のチェックをしたい要素だったらつければいいんじゃない?
(サーバーのPHPから画像をSWFにLoad)
>>313 さんのアドバイスによりonLoadErrorとonLoadCompleteでチェックしました(下記)
var loadObj:Object = new Object();
loadObj.onLoadComplete = function() {
trace("Load Complete.");
valueT2.text = valueT2.text+"Load Complete.\r";//成功した場合
};
loadObj.onLoadError = function(target_mc:MovieClip, errorMess:String) {
trace("Load Error.");
valueT2.text = valueT2.text+"Load Error: "+errorMess+"\r";//エラー時のメッセージ
};
mcl.addListener(loadObj);//リスナーに追加
mcl.loadClip(load_vars.gazou,mc);
PCのLocalhostでは問題なく画像が見れるのですが、サーバーに上げると
エラーメッセージとして Load Error: URLNotFound になります。
同じディレクトリなのですが・・・ すいません、再度アドバイス願います。
(続報) 色々試した結果、(もしかしたらですが)$gazou = "fig01.jpg"; で fig01.jpg が単に文字列として扱われているのかも知れません。 というのも、試しにパスを $gazou = "./fig01.jpg"; としたところ、 valueT2.text = load_vars.gazou; では ./fig01.jpg のまま出ました。 header("Content-type: text/plain"); を使っています。しかし、これを 外したところ load_vars.onLoad = function(success:Boolean) の success:Boolean が Falseになり、全くデータのやりとりが不可になります。 ※一方では、URLNotFoundと出ることから、一応ファイルを読みに 行っていると思われます(涙 これってPHPスレで聞いた方が良いのでしょうか?
PHP経験ゼロなのでRubyによるテストだけど
print "Content-type: text/plain\n\n"
print "gazou=./penisrael.jpg"
var lv:LoadVars = new LoadVars();
var mc:MovieClip = this.createEmptyMovieClip("mc", 0 );
lv.onLoad = function(){
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.loadClip( lv.gazou, mc );
};
lv.load( "
http://www.hogehoge.hoge/test.cgi " );
で読み込みに成功。ちなみにIE,Chrome,FF,Opera全部OKだった。
System.useCodepage = true;とか、
もし画像が外部ドメインならcrossdomain.xmlとSystem.security.loadPolicyfileとか。
ごめんわからない。お手上げ。
質問させてください。 ある座標(マウスカーソル)の下にあるムービークリップのインスタンス名を取得することは出来るでしょうか? 具体的にはマウスが動くたびにその座標下にあるムービークリップを調べて、そのプロパティをいじりたいのです。 いろいろ調べて、そうゆう命令があるらしいというのはわかったのですが、そのコードが検索にヒットしませんでした。
AS2?3?CS?Flex?
>>319 考え方としては、各MovieClip側で「自分にマウスカーソルがRollOverしてるか?」を
調べる仕掛けを書いといて、してるならばそれぞれ、例えば親などに通知する、
みたいな仕掛け作ればおk
で、通知された側で処理を分岐する。 忘れたけど、ある座標下になにがあるか、を調べるメソッドなり
関数なりあったかもしれないが、それを調べるには
>>320 の情報が必要かもしれない
322 :
319 :2010/01/01(金) 02:48:55 ID:JaqbWugl
AS2です。
>>321 仕様がドラッグした状態で複数のムービークリップをまたぐのでロールオーバーは使えないんです。
ドラッグオーバーでもムービークリップをまたいでしまうと上手くいかず。
あとムビクリを何百個も並べるのでムビクリ一つ一つがリアルタイムで判定すると重くなりそうなのです。
>>322 じゃ、MovieClip.hitTest()
あらかじめムービークリップの位置を座標を基にした連想配列で記憶させといて マウス座標とその配列を比べて、合致している要素があれば その要素のムービークリップのインスタンス名を取得してプロパティをいじる でいんじゃね
>>325 一番か、っていうと簡単に答えられない問題。 どう一番か、って話になるから。
つまり、拡大してもピクセルのブロックが見えないとか、ボケないとかっていう観点ではSVGだが、
ドット絵のようなものならむしろ png などの画像を使いたい。
2Dゲームのドットキャラ(例えばマリオや、そういった2Dキャラ)は、大抵 png などの画像で透過処理して
重ね合わせてると思う。 少なくともSVGじゃない。
そんな感じなので 「これさえあればおk!一番!」 なんて答えは存在しない。 用途によりけり
>>318 検証有難うございます。
PHPスレに移動して聞いてみます。
328 :
純金配合 ◆GoldHyGo/. :2010/01/01(金) 22:04:21 ID:EzctGxmr
>>327 今読み返してみたけど、要はやりたい事って
2度サーバにアクセスして処理したいって事だよね?
1度目は LoadVars で text/plain な文字列を取得して、
2度目はその文字列をパスに見立てて、jpg を再度取得にいく、って話だよね?
画像はシンプルにサーバにおいてあるの? 間にPHP(というかCGI)かましてる訳では無いんだよね?
だとした場合、まずは切り分けすること。
LoadVars の部分外して、シンプルに MovieClipLoader で Jpegを読めるかって処理を書いて確かめた方がいい。
その方が早い
>>328 レス有難うございます。
目的と仕様をもっと説明したいのですが、夕方から
頭痛がして上手く書けません。
明日、再度レスします。
>>328 体調が復活したので再レスします。
【環境】
・レンタルサーバーの同じディレクトリにSWF,PHP,JPGを置く。
・SWFはPlayer7,JPGサイズは2KB
【やりたいこと】
・SWFのLoadボタンを押してPHPを起動させ、sendAndLoad()でJPGを読み込みたい。
・実際のLoadVars()オブジェクトは load_vars で、PHPは $gazou = "fig01.jpg";
echo '&gazou='.$gazou; と書いて load_vars.gazou で画像の取得をしたい。
・ただしPHPでは同時に $Data01 = 〜; $Data02 = 〜; の形で数値もSWFに渡している。
※つまり、数値と画像の同時取得が現時点での最大目標。
【問題点】
・Localhost(PHP5.2.6,Apache2.2)での数値と画像の同時取得はOK。
・サーバーにUpすると数値の取得は大丈夫だが、画像はonLoadErrorでURLNotFound になる。
・しかし、valueT2.text = load_vars.gazou; では valueT2に fig01.jpg が表示され、
PHP側では画像自体は探しに行っていると思われる。
数値と画像の同時取得が理想なのですが、どうしても駄目なら
>>328 さんが書いて
いるように、別アクションで取得してみます。
>>330 その説明の文面から、初心者っぽい印象を受けたんだけど、
「同時取得」 と言っても実際には平行する二つの通信アクションになるよ。
ちなみに余談だけど、PHPを起動するのではなくて、SWF(というかクライアント)から見たら、
Webサーバからコンテンツを単に受け取るだけ。 ここが通信になる。
サーバが 静的なHTMLを返そうが、PHPによる動的な何かを返そうが、クライアントから見たら同じこと。
という前置きをした上で、ちょっと内容を切り分けよう。 あなたは何か混乱している。
>PHPは $gazou = "fig01.jpg"; echo '&gazou='.$gazou; と書いて load_vars.gazou で画像の取得をしたい。
これは正確には、文字列の取得であって画像の取得じゃない。
単に echo が標準出力(クライアントへ返す内容)として、文字列を返してるだけ。 それをまず LoadVars で文字列として受け取り、
それを、MovieClipLoader で再度取得(2度目のアクセス) して画像を取得してるんだよね? で、
>ただしPHPでは同時に $Data01 = 〜; $Data02 = 〜; の形で数値もSWFに渡している
この値はどうやって返そうとしてる? or 返した? localhost で成功とあるけど、ちょっと 「画像と数値を同時に」 のくだりはちょっと置いておいて、
そもそも何を SWF で GET してる?
普通に考えると、 例えば サーバから 画像パス文字列とその他数値でも何でもを、「何か自分で決めたフォーマットで文字列として」 返したあと、
それをパース(読み取り)して、そこから次の処理に進む。 それか、2セッション通信を行って、非同期処理を書くとか説明割愛するが色々。
一度Webシステムについて、動作を整理したほうがいい。
一例として、例えば header("text/plain"); // ここで例えば $data01 を用意したとして… ex. DBから取得、あるいは何らかのファイルから、あるいは $_POST や、$_GET から echo '&data01=' + $data01 + '&gazou=fig01.jpg'; とだけ書いた php を用意しておく。 url は SWFと同じ高さにあるとして、 LoadVars で、この PHP にアクセス → コンテンツが戻り "&data01=内容&gazou=fig01.jpg" という文字列をSWFが取得する。 これを、例えば分解して、data01=内容 の部分を自分で何かに使い、gazou キー以降の値を再び url に見立てて、 MovieClipLoader 経由で画像そのものを取得する。 みたいな感じ。ベタで言うなら
ゴメン、地味にミス。 最近 php 書いてなかったので素で間違えた ×echo '&data01=' + $data01 + '&gazou=fig01.jpg'; ○echo '&data01=' . $data01 . '&gazou=fig01.jpg'; スマソ
あけましておめでとございます。 VCで簡単なアプリくらいは作れる程度の日曜プログラマーなんですが、 この冬休みにFlashを覚えてみようと勉強してます。 現在Flash CS4 と Flash独習ナビってのでFlash製作環境に慣れている所で これが終わったらAS3の勉強に入りたいのですが、参考書・辞書として 買っといて間違いない!って本とか教えていただけないでしょうか? 本屋で手に取れればいいのですが、田舎なんでamazonくらいしか購入方法がないので… ちなみに自分は普段使ってるのはC++ですが、 Java、JavaScriptは独習シリーズを一通り読破しているという程度です。 とりあえず逆引きクイックリファレンスかビジュアルリファレンスは買った方がいいかなーと悩み中…
>>334 他の言語との決定的な違いは、フレームの概念かな。
(パラパラ漫画のコマ毎にコードを書くということ)
あと、部品(MCやボタン)毎にコードが書けたりするので、
コードを書く場所の自由度が高い分混乱するかも。
>>逆引きクイックリファレンスかビジュアルリファレンスは買った方がいいかなーと悩み中
2つ共お薦めの本です。でも入門用としては、
「基本からしっかりわかるActionScript 3.0」(森 巧尚 著) 毎日コミュニケーションズ
が超お薦め
他、「ActionScript 3.0 エラーアーカイブス」(加茂雄亮 著)ソシム
はあったら便利。
337 :
334 :2010/01/02(土) 19:48:45 ID:8c0fA7AW
>>335 おぉ、これはなんとも馴染み深い形式のリファレンス!
これならビジュアルリファレンスはとりあえず保留してもいいかも。
>>336 「基本からしっかりわかるActionScript 3.0」はノーチェックでしたが、
ググったら出版社のサイトで少し中が見れました。
最初はちょっと変数の概念とかプログラム未経験者向きかなーと思いましたが
後半はゲームの作り方とかあって良さそうですね。
最終目標はFlashアニメよりもFlashゲーム作りたいので買ってみようと思います。
あと「エラーアーカイブス」もまったくノーチェックでしたが評判いいですね。
まだそんなにAS打ってないのでUIとか判らないですが、
さすがにVSみたいなデバッガーはないでしょうからコウいう本が重宝しそうですね。
----
お二方ともありがとうございます。
338 :
Now_loading...774KB :2010/01/05(火) 04:22:43 ID:glPOaHHp
ActionScriptを始めようと思うのですが、構造がいまいち理解出来ません。 例えば、部屋があるとして部屋全体にActionScriptをするのですか? それとも、椅子、机、1つの部品事にActionScriptの指示を出すのですか?
ちょっと意味がわかりかねるが、両方すると思うぞ
AS2.0は後者(前者も出来るけど) AS3.0は前者
>>340 AS3.0は前者っておかしくない?
Spriteなどオブジェクトを生成した場合は、
1箇所に記述が集まりやすいけど
それでも各オブジェクト(インスタンス)用にクラスを作成するのがベターだから
AS3でも後者だと思うんだが
342 :
Now_loading...774KB :2010/01/05(火) 11:55:48 ID:glPOaHHp
なるほど、つまり ドラクエに例えるならば、 AS3がドラクエ3でAS2がドラクエ2 実はロトシリーズの一番古いのはドラクエ3
as3の世界で微分積分を使うときってどんなときでしょう??
>>343 言語や環境はただの道具で、微分も積分も一つの手段でしかないので
「そんなものは必要な時に使う」 が正解
>>338 質問から見て、FlashにおけるASの立ち位置がわからないって話なら、それは
部屋全体〜それぞれの部品ごと、それらの影にASが(2でも3でも)いて、好きに制御するって感じ。
絵や音や動画を 「素材」 (資源=リソース) と捉えたとき、それに指示を出したり動かしたり、
また作ったりする 「人」 (または頭、または人足、または指示書、または設計書) がASって感じ。
実際の配置場所については、例えばフレームの中 (紙ペラに書かれたスケジュールで言えば、区切られた時間や日付の1コマ) に、
「ここではこうしとく」 みたいに記述したり、あるいは 椅子や机などの素材に、シールで書いて貼ったり、
または全然別の所、まったく素材と関係ない場所に 「素材Aを動かし、動いた結果を記録」 みたいな紙を置いておいて、
実際に作業する人(=ASのエンジン) に指示したりする。
…抽象的で曖昧な質問へガチレスしようとすると、どうしてもこっちが長文になってしまう罠
345 :
Now_loading...774KB :2010/01/05(火) 13:08:06 ID:glPOaHHp
>>344 無茶苦茶わかりやすい説明です。
なるほど、つまり複雑なFLASHゲームでも一つ一つのパーツ単体と考えたらわかりやすいということですか。
何から始めたら良いのか全くわかりませんでしたが見えてきました。
>>345 ちょっと専門用語的な言い回しすると、例えば
「オブジェクト指向 (略称OO。〜プログラミングと言った場合には OOP)」 という考え方がある。
詳しくはググった方がいいけど、別にその概要そのものは必須じゃないのでググんなくてもいい。
概念としては、それ。 「この物体に、意味付けをする=これはこんな内容のブツで、こんな動きをし、こんなパラメタを持ってる」 のように
定義して、中身を実際に記述し、それらが泡のように集まって全体の形を成すってところ。
複雑なFlashゲームであろうと、何かのアプリケーションであろうと、
例えばボタン1つにしたって全部 "姿" と "動作" と "意味" を持っている。そういうのの積み重ねで、全体を成す感じ。
ということは、何から始めたらいいかと言えば… まったく入門者なら適当なサンプル相手にコピペでもして
「へぇ、こんな風に動くんだ」 と体験してから、しばらくして慣れたら今度は
「俺はポーカーを作りたい。では、ポーカーってどんな 『動きの集まりだ?』 」 と分解して、それらを1個1個書いていく感じ。
書く内容には、「絵の表示」 や 「ボタンの動作」 「マウスの動き」 「カードの管理」 「カードの相関の、管理」 「役の判定」 「その結果の保持」 など、
鍵カッコの数よりももっと多くのものが必要になったりする。 話長いのでここまで。 こんな感じ
A.swfからB.swfを真ん中に読み込んで表示させています。 (B.swfは高さ/幅はA.swfのサイズの半分です) B.swfの中のActionScriptで、座標をstage.mouseXとかで取得しているのですが A.swfの座標として読み込んでしまい、動きがおかしくなります。 もちろん、B.swf単体で動かした場合は正しく座標判定できるのですが・・・ どうすればよろしいでしょうか
>>347 おかしくなると言うより、それ正常な動作。
stage は土台のステージであって唯一のオブジェクト。 図示するとこんな感じ
┌───
│stage
│┌───
││A
││┌───
│││B
でたまたま、「土台になっている A.swf が、stage と同じサイズになってるだけ」 と捉えるべきなので、
この辺理解していないと、このAとBを入れ替えてもまた同じようにおかしくなった、ように見えてしまう。
どうしたらいいかといえば、図を見たまんま、
単純に stageから見た B.swf の位置をオフセットとして引けばおk
>土台になっている A.swf が、stage と同じサイズになってるだけ サイズっていうより、位置か。 スマソ
>349 stageは唯一ってところがポイントですね。 できればB.swfの内容は昔に作ったやつだから弄りたくないんですが・・・ ありがとうございました
以下のサイトですが、大きな画像をディスプレイで表示してる領域のみ、綺麗に表示するようにしています。
荒い画像は小さい画像を引き伸ばしているのでしょうか?
仕様の考え方のヒントになるほうほうがあればアドバイスください。
http://www.bio-bak.nl/
352 :
Now_loading...774KB :2010/01/05(火) 22:30:52 ID:vv5tnIMy
>>351 すげーグロ動画。
はきそうになった。
手が動くって気持ち悪い。
お前がつくったのか?
もっとましなサイト作れよ。
後、作ってないにしても例をべつにして。
なにもこのサイトにしなくてはいけない理由はないでしょう?
353 :
Now_loading...774KB :2010/01/05(火) 23:41:39 ID:VMLBZF7U
winのCS4にて flash flvplaybackを使用しFLVプレイヤーを作成しました。 このプレイヤーは自動再生をさせずに、 再生ボタンを押すと開始されるようにしました。 この時1フレーム目の画像ではなく、好きな画像を入れて 待ち受け画像としたいのです。 Action Scriptの知識も低く、色々調べているのですが発見できず 済みません、教えて下さい!
354 :
Now_loading...774KB :2010/01/06(水) 06:49:01 ID:Q6mOXYV5
質問 AS2 CS3 XP環境です。 ボタンにgetURLを使ってページ移動するときに変数を持っていき 移動したページでその変数を使ってフレーム移動したいのですが ASが解りません。 回答よろしくお願いします。 後その場合swfは埋め込まないといけないのでしょう? よろしくお願いします
>>353 FlashDevelopユーザなのでCS持っていないからアレだけど、
もしもそのプレイヤーが自分の動画を再生する、ってだけなら、単純に別途動画編集ソフトでコマ切り出して
それを通常の静止画ファイル表示するのと同じ方法で表示させてやればおk
FLVプレイヤー側を非表示にして、画像を表示。 再生ボタンが押されたら、それぞれ表示状態を逆にする
あるいはもしもやろうとしている事が、Youtubeやニコニコ動画のアップロード時に任意のフレームを選んで
サムネイル化する、みたいな事と同じような事をしようとしている場合、SWFだけでは無理。
フレーム位置をサーバに送って、サーバ側で保存するようなCGIを書くか、フレーム位置の画像を(もしも取り出せるなら)
取り出して送信して記録するようなCGIを書かないとダメ。 というか、「待ちうけ画像」 って言葉が気になるが、
どっちにしても動画中の1フレームを画像化したい、って話ならCGIで動的にやるか、手動で切り出して貼りこむ必要がある
それか、seek してそのコマだけ表示しとくか
>>354 getURLする時に、"
http://hoge/huga.html?任意の名前=値 " のようにして投げ、
受け取った側でJavaScriptでそれを切り出せばおk。 javascript get query 辺りでググってくれ。
それか、php など使用してるなら、サーバ側で $_GET で取り出せばおk。
特に使用してないなら JavaScript で
同じHTML上にある2つのswf間で通信を行う際LocalConnectionを使ってるのですが IE8だと正常に動くのですが、safari、Forfoxでは動作してくれません。 (動きが止まるので、内部的に何かエラーが出ている気がします) どのような原因が考えられますでしょうか
見当違いかもしれんが、俺がよくLCの動作確認でやらかすのは、2つSWF実行してるだけのつもりが ブラウザのタブで同じLC使ったSWF動かしっぱなしでそっちのタブのSWFと通信しちゃってるって パターンw
>>359 ビンゴ!
IE開いたまま他のブラウザ同時に開いてテストしてかからでした。
危うくブラウザ毎に違う条件分岐コードとか作るところでした。
ありがとうございまーす!!!!!
361 :
Now_loading...774KB :2010/01/07(木) 08:47:24 ID:ajfJrzOg
Actionscriptじゃないと思うんだけど、 cssとかを使い swf と swfが被った時の表示順番(上下)の設定の させ方を知っている人はいらっしゃれば教えて頂きたいのですが 最近、livedoorやニコニコ動画で、swfをHTMLの上に被せて表示させたりとかあるのですが 同じ事をしようとしたら、ブログ内の別のswfが更に上に表示されてしまい困ってます。
362 :
Now_loading...774KB :2010/01/08(金) 00:31:59 ID:F1IdUda1
キー入力で困っています。 大体以下のようなコードなのですがENTERキーのみ、イベントが発生しません。 上下キー、アルファベット、スペースキーは問題なく動作します。 ただ、AdobeFlashCS4で「ムービープレビューする」でこの症状が発生します。 デバッグモードだと正常にENTERキーが反応します。 初めてのASなので何か根本的な間違いをしていると思うのですが 原因を教えてください。 stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownEve); function keyDownEve(event){ trace(event.keyCode); }
>>362 メニューで、キーボードショートカットを無効にする
とかなんとかの項目にチェック
ActionScriptからJavascriptを発行して、swfのサイズを動的に変えたいのですが、 IEでは上手く動作するのですが、firefox、safari、chromeなどのIE以外のブラウザでは 動きません。 以下が該当部分のASコードです。 --------------------------------------- var js:String = <![CDATA[function() { document.getElementById("externalSwf").height = 50; }]]>; ExternalInterface.call(js); ---------------------------------------- HTML側は、AC_FL_RunContentとobjectタグによる配置を行っています。 原因が分からず2〜3日悩んでおります・・・
てす
>>364 ブラウザ間で違う結果が出る場合は、必ずHTMLかjavascriptに原因がある。
フラッシュの張り付けは標準のjs使うより、swfObjectを使った方がいいよ。
>>365 仰る通り、
document.getElementById("hoge")のところを
window["hoge"]にしたらoperaは行けました!
firefox、safari、chromeはダメでしたが原因がJavascriptであることが
分かったので大きな前進です!ありがとうございました。
>>367 swfobjectコードすっきりするんですね!
知りませんでした。検討してみます。
wonderflって勉強になっていいね。遅ればせながら昨日知ったよ
371 :
Now_loading...774KB :2010/01/10(日) 17:45:02 ID:uD5n8VAg
Vectorを使用したStringの定数値の3次元配列の記述の仕方を教えてくれませんか? 色々試したのですが分かりません。 const t:Vector.<Vector.<Vector.<String>>> = Vector.<Vector.<Vector.<String>>>([ ([ Vector.<String>(["A","A","A","A"]), Vector.<String>(["B","A","A"]), ]),([ Vector.<String>(["C","A","A"]), Vector.<String>(["D","A","A"]), Vector.<String>(["W","A","A"]), ]) ]);
var t:Vector.<Vector.<Vector.<String>>> = Vector.<Vector.<Vector.<String>>>([ Vector.<Vector.<String>>([ Vector.<String>(["a", "b", "c"]), Vector.<String>(["d", "e", "f"]) ]), Vector.<Vector.<String>>([ Vector.<String>(["g", "h", "i"]), Vector.<String>(["j", "k", "l"]) ]) ]);
AS3 変数を使ってクロージャへアクセスするにはどうすればよいですか? public function main():void { for( var i:uint= 0; i < 2; i++ ) { //test0,test1.test2へアクセスしたい } function test0():void { trace(test0); } function test1():void { trace(test1); } function test2():void { trace(test2); } }
変数と関数の名前が重複してないか?
>>373 こういうことかいな?
this["test0"] = function():void{};
this["test0"]();
376 :
373 :2010/01/11(月) 11:36:25 ID:yRaNLWgM
質問の仕方が良くなかったです。メンバ関数なら this["test" + i](); でアクセスするところ public function main():void { for( var i:uint= 0; i < 2; i++ ) { this["test" + i](); } } public function test0():void { // } 関数クロージャの場合どのようにすればできますか? public function main():void { for( var i:uint= 0; i < 2; i++ ) { //this["test" + i](); } function test0():void { } function test1():void { } function test2():void { } }
wiiマリオみたいな横スクロールのゲームは、 背景の絵をどういう風にメモリを食わないように処理してるんでしょう
378 :
Now_loading...774KB :2010/01/12(火) 14:31:42 ID:MxLHXBYt
ActionScript3, Adobe Flex Builderで開発しているのですが webページ上に埋め込まれたFlashが ウインドウを閉じたり 別のページに飛ぶ リロード など、閉じられる動作を検出する方法はありますか
379 :
Now_loading...774KB :2010/01/12(火) 14:37:37 ID:MxLHXBYt
ActionScript3.0(Flex上)での質問です swfファイルをwebページ上に載せているとして そのページが閉じられた時にイベントを検出することはできますか
ASで出来るか知らないけど、JSからonUnloadで行けたりしないかな
モリサワフォントパークみたいに、 ベクターで、文字一つ一つを自由にあつかいたいのですが、 どうするのがベストでしょうか 一文字一文字それぞれ文字の輪郭をギザギザに揺らしたりするためです。 文字をデータ(ベクターの塗りのイラスト)として扱う、いい方法はありますか
382 :
Now_loading...774KB :2010/01/13(水) 20:39:41 ID:gdYNLZEc
これはASだけではなく、 映像系のプログラムも使っている。 また、文字を自由に動かすのはAS3.0でひとつずつ ムービークリップに変換して動かせばいいのではいいのではないでしょうか? ただモリサワフォントパークみたいにはいかないと思います
質問させてください!AS3です。 A.swfからB.swfを読み込んで表示させています。 B.swfは、ロードが完了した時点から自動的に再生が始まるのですが、 これを任意のタイミングで再生を開始させたいのです。 (例えばロード後、A.swfにあるボタンを押したらB.swfが再生されるようにしたい) ちなみにB.swfの内容は弄れないので、A.swfから制御したいです このような事は可能でしょうか??
ご質問です。 環境はFLASH8/ActionScript2で、 FuseKitでアクションを付けております。 今回、外部読み込みJPGにFuseKitでアクションを 付けたいと思っておりますが、 JPG読み込みは表示されても、 FuseKitのアクションが作動しません。 FuseKitは外部読み込みMCには対応していないのでしょうか? 読み込みJPGは"image01.jpg" JPGを読み込んでいるMCは"Image01"です。 1フレーム目ActionScript ---------- import com.mosesSupposes.fuse.*; ZigoEngine.simpleSetup(Shortcuts,PennerEasing); loadMovie("image01.jpg", "Image01"); Image01._alpha = 0; Image01.alphaTo(100,5,'',0); ---------- 外部読み込みではないMCに対しては、 上記記述で問題なく動きます。 お手数ですが、ご存じの方教えてください。
>>385 FuseKitのことは全然知らないが、外部ファイルのロードは
事前の処理をクリアしちゃうから、とりあえず
最初にMovieClipLoaderで外部画像ロードして、
その完了後処理onLoadInitあたりで、アクションを適用させれば
いいんじゃないの?
いずれにせよ、MCのメソッドでもないloadMovieはAS2.0でも
あまり推奨されないだろうし、使いにくいから、まずはそれを
使わないとこから始めるといいと思う。
RTMFPのわかりやすいサンプルコードが載ったページはどこかにないでしょうか
388 :
Now_loading...774KB :2010/01/17(日) 00:38:38 ID:CjXG0r9K
actionscriptでxmlファイルを開いたのですが、 要素や属性ごとに変数に格納したいです。参考になるコードはないでしょうか?
389 :
Now_loading...774KB :2010/01/17(日) 01:42:46 ID:KxuWs1YC
エディタのTextMateのAS3Projectで、 プロジェクトを最初につくって生成されたas以外のasファイルを メインのファイルとしてコンパイルする方法がわかりません。 FlashDevelopのalways compileの対象ファイルが変えられるみたいに、 対象ファイルを変えたいのですが、どうすればいいでしょうか?
外部のURLにアクセスするときに、クッキー(Flashのではない)を使いたいのですが サンプルコードはないでしょうか?
>>390 解決しました、.tmprojの書き換えでうまくいきました。
じゃ、build.xmlって何に使ってるんだろう・・・
変えても変えなくても影響しなかった・・・
393 :
Now_loading...774KB :2010/01/17(日) 04:12:33 ID:WnpkEZ5R
以下のようにできるだけ短いコードで画像を表示しようとしています。 画像を表示することは普通に成功しましたが、 widthとheightを指定すると、なぜか画像が表示されなくなります。 どうすれば解決できるでしょうか?
394 :
Now_loading...774KB :2010/01/17(日) 04:13:40 ID:WnpkEZ5R
package { import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; public class Main extends Sprite { private var imgLoader:Loader = new Loader(); function Main():void { var url:String = "img.jpg"; loadContent(url); addChild(imgLoader); imgLoader.x = 10; imgLoader.y = 10; imgLoader.width = 325; //元の画像の1/2の大きさ、これを書くとなぜか表示されなくなる imgLoader.width = 455; //上に同じ } private function loadContent(url:String):void { var req:URLRequest = new URLRequest(url); imgLoader.load(req); } } }
395 :
Now_loading...774KB :2010/01/17(日) 04:32:53 ID:WnpkEZ5R
widthとheightを書き間違いました。 「imgLoader.width = 455; //上に同じ」 ↓ 「imgLoader.height = 455; //上に同じ」 重ねて、お願いします。
>>393 読み込み完了後にやればいけると思う
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(event:Event):void
{
imgLoader.width = 455;
}
397 :
Now_loading...774KB :2010/01/17(日) 10:10:08 ID:WnpkEZ5R
>>369 なるほど!
できました。ありがとうございます。
透明度なども同じように変更しなければならないようですね。
actionscript2.0、FlashCS3を使用しています。 number1 = 1; number2 = 2; number3 = 3; number4 = 4; number5 = 5; ・ ・ ・ number100 = 100; ↑上記を短く、簡潔にまとめるにはどのような方法を使えば良いでしょうか?
>>398 そこまでいくと配列使ったほうが楽なんじゃない?
//配列100要素に値を代入
var number:Array = new Array();
for(var i:int = 1;i<101;i++)number[i]=i;
//アクセスするときには number[番号] の形式でアクセス
trace(number[1]); //1
trace(number[50]); //50
AS3で、ブラーやグラデーションでマスクするのはどうやったらいいのでしょうか? AS2の方法は見つかるんですが・・・
var xml:XML= <response status="fail"> <error> <code>1</code> <description>Error 12</description> </error> </nicovideo_user_response> これからstatusのfailはどう指定すれば取り出せるでしょうか? trace(xml.response.status)で取れるかと思ったのですが無理でした。 また、descriptionの取り方も教えていただけるとありがたいです。
>>401 xml.@status、xml.error.descriptionで取れるかと
それ以前にそのXML、構文エラーのような
>>400 たしかビットマップキャッシュオンにしないと駄目だった気がする。マスク先がmc、マスク用がmaskMCだとしたら、
mc.cacheAsBitmap = maskMC.cacheAsBitmap = true;
してから
mc.mask = maskMC;
>>401 ルートノードの要素なんだから@つければいけんじゃね?
trace(xml.@status, xml.error.description);
404 :
401 :2010/01/17(日) 14:30:52 ID:JrwBKrae
ありがとございます。 attribute('status')でとれたようなのでそちらでやりました。 お手数おかけしました。。
405 :
401 :2010/01/17(日) 14:54:24 ID:JrwBKrae
何回も申し訳ないのですが、 var xml:XML= <id>12345</id> <id>23456</id> <id>873677</id> ・ ・ <id>873634</id> これを var id:Arryのような配列に入れるにはどうしたらよいでしょうか?
質問失礼します。 ファイルをバイナリでpost送信したいんですけど、どうしたら良いんでしょうか? 分かる方、お願いします。
407 :
406 :2010/01/17(日) 16:55:54 ID:GFtq1YVi
すいません。条件を一つ忘れてました。 通信が途中で切れてしまった事も考えて、ファイルサイズも同時に送りたいです。 受け取り側で、 int iSize = $_POST["FILE_SIZE"]; byte[] bBuffer = $_POST["FILE_BUFFER"]; という風に受け取れたら最高なんですが。。。 よろしくお願いします。
>>403 グラデーションは無理みたいですけど、ブラーはできました
ありがとうございました
>>405 あなたはもう、XMLのDOM(=ドキュメントオブジェクトモデル)についてググれ。
XMLDOMはASだのFlashだの以前に、別の団体が管理している標準の考え方だ。
ASにもそれに(一応)順じたアクセス機構が備わっている。
それか、具体的にはAdobeのリファレンスから、XML や、XMLNode かなんかを探せ
単純に ルートノード取り出したらあとはループ回して順に拾うだけだ。
また、ノードの中のテキスト(XMLでは CDATAと言う)は、それ自体1つのノードなので
nodeType を必ず判別して取得する必要があるから、その点だけ注意。
で、これの階層がもっと深くなりそうな場合には、再帰処理を書いて取り出したりするが、
もうそこら辺になってきて、もしも理解出来ないとしたら、やりたい事とやれる事の差が大きすぎるので、
勉強しなければならない。 まずは、Adobe のリファレンスから、XMLNode あたりを追え
var str:String = "<thread thread=\"" + thr + "\" \"version\"=\"1\" \"res_from\"=\"-1\"/>"; こうゆう文字列はダメなのでしょうか。 エラーに「属性threadには開始引用符が必要です。」とあるのですが、 開始引用符は最初の"のことではないのでしょうか。
411 :
Now_loading...774KB :2010/01/17(日) 21:00:19 ID:JQkgaK3C
ActionScriptの修行をするのに、入門者向きの良いサイトありませんか?
>>410 それ、trace してみたかい? 文字列の内容的にこうなると思うんだが…
<thread thread="thrの中身" "version"="1" "res_from"="-1"/>
多分やりたいのは、こうじゃないのか?
<thread thread="thrの中身" version="1" res_from="-1"/>
だとするなら、正しくはこうだと思うのだがどうだろう
var str:String = "<thread thread=\"" + thr + "\" version=\"1\" res_from=\"-1\"/>";
コピペしないで、何が違うか良く把握する事。
>>412 var th1:String="<thread thread=\"" + thr + "\" version=\"1\" res_from=\"-1\"/>";
正しくはこうでした。すいません。
「属性threadには開始引用符が必要です。」となるのですが、どこがいけないのでしょうか
自分で考えること知らん奴に何言っても無駄
と言っても無駄
Actionscriptのバージョンは2.0になります。 フォームに文字を一通り入力して、ボタンを押すと、 デスクトップにtxtファイルが生成されるFlashを作りたいと考えています。 txtファイルを生成するにはどのような記述を行えば良いでしょうか? 父と母、そして祖母は3人とも「すいふ(swfのことらしい?)形式のファイル単体では無理」 と言っていたのですが、本当に制作不可能なのでしょうか…?
本当に制作不可能です
そのswf危険すぎるだろぉ常識的に考えろよすずむしぃ
ヤフー使いずれー 他の鯖だとうまく動くのに アフォーは動かん どうにかしろ
配列 var list:Array = [みかん,りんご,りんご,みかん,りんご]; があります。 (1)「みかん」という単語はそれぞれ先頭から1、4番目に存在しています。 (2)「りんご」という単語はそれぞれ先頭から2、3、5番目に存在しています。 (3)「みかん」ボタンをクリックすると1、4という配列が作られ、 「りんご」ボタンをクリックすると2、3、5という配列が作られる… というものを作りたいのですが、どのような記述を行えば良いでしょうか?
>>420 >1、4という配列が作られ
これは配列を作りたい訳じゃなくて、配列の中の要素に書き込みたいって話でおkだよね?
やりようは内容次第で色々あるが、もしも要素が5つであれば、初めから要素5の配列を1つ作り、
各ボタンでそれぞれ書き込んであげればいい。
//AS3の例
var list:Array = new Array(5); が宣言/定義されてるとして、
〜
(みかんボタンオブジェクト).addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
list[0] = "みかん";
list[3] = "みかん";
});
(りんごボタンオブジェクト).addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
list[1] = "りんご";
list[2] = "りんご";
list[4] = "りんご";
});
※注意: 実際には環境次第内容次第なので、このままコピペしても絶対に動きません
たぶん配列内を検索して該当する要素のインデックス番号をまとめて取り出したいんだろ。 つかXMLと配列絡み答えるのやめようぜ。同じ奴がうぜー。 普通はXMLListのまま扱えばいいだけだから自分で勉強してくれ。
actionscript3です。 var myXMLSocket:XMLSocket = new XMLSocket(); みたいな感じのXMLSocketでonDataとonConnectを使いたいのですが、「未定義である可能性の高いプロパティ」 となってしまいます。 どのようにして使うべきですか?
424 :
Now_loading...774KB :2010/01/18(月) 16:32:18 ID:z5tYNe1Q
AS3.0で制作しています。 現在、svgファイルの読み込み→flash上で加工→svgファイルで書き出し といったプログラムを目標としています。 しかし、svgファイルの読み込みで加工(縦横比変更とか)したあと そのデータをsvgファイルで書き出す方法が分かりません。 svgがxmlデータというのは理解しているのですが、 私の知識ではデータをいじることができません。 どなたか、助けていただけないでしょうか?
>>423 AS3.0ならaddEventListenerでdataイベントとかconnectイベント拾うんじゃないかな
>>425 ありがとうございます。
if(!myXMLSocket.connect(addr.port)){
trace("failed.");
}
でfailedが返ってくるってことは接続できていないってことだと思うのですが、
原因はこちらにあるのでしょうか?
429 :
Now_loading...774KB :2010/01/18(月) 18:42:14 ID:z5tYNe1Q
430 :
429 :2010/01/18(月) 18:45:20 ID:z5tYNe1Q
431 :
Now_loading...774KB :2010/01/18(月) 20:50:47 ID:4Cr8aguf
>>429 いや理解出来ていない。
というか、いま自分が何をしようとしてるかわかってるかい?
svg は、ただベクタ情報を xml 形式で格納しただけだ。
つまりただの文字列だ。
例えばこんな感じの、ただの文字列だ。
<xml version="1.0" encoding="utf-8"?>
<svg xmlns="
http://www.w3.org/2000/svg ">
<circle fill="blue" cx="15" cy="30" r="20"/>
</svg>
そして、
>そのGraphicsをまたSVG形式に直し保存する方法を探しています。
ビットマップになった物をまたベクタ形式に逆変換するって?それを Flashで?
…svg形式は単に Embed すれば Shapeとして表示出来るのに、それすら
他人のソースライブラリを頼って表示だけしたレベルの技術しか無い人には、
多分絶対に無理です。 というか、全然理解出来ていないので、もう一度よく考えてください。
ググって、理解して、考えてください。
あ、別にビットマップにしてる訳じゃないのか でもそれにしても、それをまたsvg でもなんでもいいが xml に戻すには 自力でノードをcreateして再帰的に処理して生成する必要があって、 例えばそれがsvgなら、svgの仕様をまず把握して理解したうえで、 そのように作らないといけない。 それについては、ここで教えてくださいって言って済む分量の話ではないから 結局どうしてもやりたかったら自分で仕様をおいかけて、生成ロジックを考えて組んで下さい。 以上
433 :
429 :2010/01/18(月) 21:19:10 ID:z5tYNe1Q
>>432 レスありがとうございます。
やはりsvgの使用表を理解するべきだったんですね。
既存の読み込みライブラリー等をみながら
生成のアルゴリズムを検討してみます。
>>433 ヒントだけ言っておくと、
1.まず構造を把握しろ
2.Graphics上でドローする際、その時のShapeなどの線分と重なりの構造を
別の何かに辞書などで持つか、階層化したオブジェクトとして記録しとけ
3.書き出しをする時、2の階層を再帰的に辿りつつ、
SVGのDTDに沿ってノードを作っていけ
4.出来上がった XMLNode のツリーをテキストにしてサーバに送りつけろ
こんな感じ。頑張れ。 そしてどっちかっていうと、読み込みライブラリを追うより、
まずXMLと再起とSVGの要素を全部当たれ。 まったく初心者でも2ヶ月くらい集中すれば簡単だ
435 :
420 :2010/01/19(火) 01:01:37 ID:uM5Iokby
>>421 申し訳ございません、ちょっと、自分が望む物と違うかな、という感じです…
>>422 求めているのは、まさに、そんな感じの物です。
XMLList、ぐぐったら一発でした。ありがとうございます。
var xml:XML= <time>1234567890</time> <id>12345</id> <id>23456</id> <id>873677</id> ・ ・ <id>873634</id> actionscriptでこれを var id:Arryのような配列に入れるにはどうしたらよいでしょうか? xml.idで1つ抜き出すのはわかるのですが、forとかで回そうにもどう回して良いかわかりません。
このスレにはいったい何回XMLネタが出てくるんだ。 そして何回同じような回答が出なきゃならないんだ
フル画面Flashについてなのですが、モーションでステージの外にMCが移動すると そのサイズでフル画面になってしまい、横に白い余白ができてしまうのですが、 どうしたらいいでしょうか?
>>438 現状どうやってフルサイズにしてるか分からんけど、フルサイズにしたい範囲に下敷きのようなMC配置して、
そのMCの大きさを元にフルサイズに保つような処理にすればいいんじゃないかな。
>>439 さん
なるほどー現在、
R = 900/1200;
Stage.scaleMode = "noScale";
Stage.align = "LT";
function bgScale() {
w = Stage.width;
h = Stage.height;
if (w*R > h) {
bg._width = w;
bg._yscale = bg._xscale;
} else {
bg._height = h;
bg._xscale = bg._yscale;
}
bg._x = w/2;
bg._y = h/2;
}
bgScale();
sListener = new Object();
sListener.onResize = function() {
bgScale();
};
Stage.addListener(sListener);
このbgというMC中にステージ外に動くモーションがあるので、
これとは、別のMCを基準にすればいいのですね。
441 :
Now_loading...774KB :2010/01/20(水) 09:36:24 ID:CARXAj0q
質問です。 AS2 CS3を使っています。 ステージの中央にthumb_totalのMCがあります。 thumb_totalの一部の所をクリックしたら マウスでthumb_totalを動かせるようにしているのですが クリックをした瞬間にthumb_totalの左上基準点に移動してしまいます。 クリックした場所でthumb_totalを動かせるように出来ないでしようか? thumb_total.onMouseDown=function(){ if(thumb_total._xmouse>0 &&thumb_total._ymouse>0 && thumb_total._xmouse<thumb_total._width && thumb_total._ymouse<thumb_total._height*0.1) thumb_total.startDrag (true); } thumb_total.onMouseUp=function(){ thumb_total.stopDrag (); } ご指導よろしくお願いします。
>>441 MovieClip.startDrag()の引数の意味、わかってtrueにしてる?
それと、onMouseDownじゃなくて、onPressじゃないか?
443 :
Now_loading...774KB :2010/01/20(水) 17:21:53 ID:CARXAj0q
>>442 ご指導ありがとうございます。
startDrag()の引数の意味はわからずにドラッグ ドロップ
書いてあるサイトを真似して書いています。
onMouseDownをonPressに直してみたのですが、
まだMCの左上基準点の所に移動してしまいます。
引き続きご指導お願いします。
startDrag()の引数をtrueにすると基準点にロックされるんだよ falseにすればいいよ
現在ステージに表示しているシンボルと使用している変数を全て削除するにはどうすればいいでしょうか
446 :
Now_loading...774KB :2010/01/20(水) 18:34:39 ID:KkKEfdW5
function all_delete (evt):void { deleteNum = stage_mask.numChildren-1; for (var i:Number = 1; i <= deleteNum; i++) { var child:* = stage_mask.getChildAt(i); if (child is MovieClip) { if (child.name.indexOf(”obj”) != -1) { stage_mask.removeChild (child); i–; } } } coNum =0; }
>>443 意味がわからない時はヘルプ等で、意味を確認しましょう。
>>444 が書いてる通り、基準点のロックはその引数が決めてます。
onPressは基準点には関係ないですが、こっちを使えば、onMouseDown内の無駄な条件を省けます。
onPress=そのMCの上でマウスを押した時
onMouseDown=どこであれマウスを押した時
つまり、MCをクリックした時の動作にしたいなら、onPressを使えば?ということです。
448 :
Now_loading...774KB :2010/01/20(水) 20:18:36 ID:kvi1//qj
現在、SA3で製作を行っています。 質問なのですが、GraphicsのデータをローカルにPDFやEPSなどの ベクター系のデータとして保存する方法はないのでしょうか? 保存したいデータは直線と曲線で構成された単純な線のデータです。 取り合えづ、AlivePDFというライブラリを試して試していたのですが 独自のクラスに描画が必要になるようで Graphicsをそのままコピーすることは出来きませんでした。 今、Graphicsの中の描画データの構成(点と線のデータ)を取り出す方法はないかと探してます。 煩雑な書き込みになってしまいましたが ご指導のほど宜しくお願いします。
>>448 根本的な話として、AIRでもない限りローカルに保存自体が出来ません。
で、AIRであるならば、"Adobe AIR ファイル保存" 辺りでググれば、
ローカルファイルシステムへアクセスするAPIの解説があります。
保存したい内容として Gaphics 云々、PDFやEPS云々と用件が出ていますが、
多分簡易な方法など無いと思うので、ファイル構造について自分で解析し、
保存したい内容を順次バイナリで書き出す必要があるかと思います。
またAS3で言うと多分取り出したい内容は Graphics の中というより、Shapeにドローされた際のヒストリ、
ベクタ情報の事になるかと思いますが、
(Graphicsオブジェクトは手段を提供するだけであって、その中にデータがある訳ではない)
それらを外から取り出す方法はありません。
もしも、2Dドローソフトみたいな物を作ろうとしているなら、自分なら、
例えば描いてもらっている間に画面描画と同時に自前で記録し、あとでそれを元に再構成する、
などのロジックを考えます。
以上。
450 :
Now_loading...774KB :2010/01/20(水) 21:15:43 ID:kvi1//qj
>>449 お答えありがとうございます。
おっしゃるとおりで、AIRでの開発をおこなっています。
アドバイスに従い、描画処理の履歴を残しておいて
最終的にその履歴をもとにデータを吐き出す方法を模索してみます。
var RssXML:XML;
private var RssxmlLoader:URLLoader;
private function init():void {
var RssUrl:String ="
http://example.com/ex.xml ";
RssxmlLoader = new URLLoader();
RssxmlLoader.dataFormat = URLLoaderDataFormat.TEXT;
RssxmlLoader.addEventListener(Event.COMPLETE, RssxmlComplete);
var RssurlReq:URLRequest = new URLRequest(RssUrl);
RssxmlLoader.load(RssurlReq);
};
private function RssxmlComplete(e:Event):void {
RssXML =new XML(RssxmlLoader.data);
trace(RssXML);
};
<mx:VBox label="一般" width="100%" height="100%">
<mx:DataGrid width="777" height="339" dataProvider="{RssXML}">
<mx:columns>
<mx:DataGridColumn dataField="title" headerText="名前"/>
<mx:DataGridColumn dataField="link" headerText="値"/>
</mx:columns>
</mx:DataGrid>
これでデータバインディングでは"RssXML"への代入を検出できません。となってしまうのですが、どうしたらよいでしょうか?
452 :
Now_loading...774KB :2010/01/20(水) 23:01:10 ID:OSH5aFbT
ミスった[Bindable]タグね
>>452 ありがとうございます。
[Bindable]
var RssXML:XML;
以下略。
でいけるということでしょうか?
エラーの内容が同じなので、詳しく教えてもらえると助かります
455 :
Now_loading...774KB :2010/01/21(木) 00:41:35 ID:QiVRSYKP
MC.addEventListener(MouseEvent.MOUSE_DOWN,mDown); function mDown(event:MouseEvent) { event.target.startDrag(); } のようにイベントに使う関数をイベント割り当ての後に定義する例が多い気がします。 また、普通の関数も使う箇所より後に定義されてることが多いと思うのですが、 後に書いた方が良いなどの理由はあるのですか?
457 :
Now_loading...774KB :2010/01/21(木) 19:34:34 ID:wYP93ZLm
Flex(mxml)でaddEventListenerのEvent.COMPLETEって正常に動作しますか? 例えばEvent.COMPLETEではなくMouseEvent.CLICKに変えると正常に動いてくれるのですが、 Event.COMPLETEだと正常に動作してくれません
>>457 どれの、何の? Flexのmxml から触れる、どのオブジェクトでの COMPLETE?
459 :
Now_loading...774KB :2010/01/21(木) 21:53:01 ID:wYP93ZLm
>>458 どれの、何の?というのが何を指すのか分かりませんが、
Flex SDKは3.2です。URLLoaderでのCOMPLETEです。
>>458 すみません。話が変になっていました。MouseEvent.CLICKというのは
クリックするとリスナー関数でURLLoaderで読み込んだtxtデータを表示するということで
その部分をEvent.COMPLETEで完了になるとリスナー関数でURLLoaderで読み込んだtxtデータを表示する
にすると表示されないということです。
サウンド関係の処理でキーを高くしたり低くしたりすることは出来るでしょうか
462 :
Now_loading...774KB :2010/01/21(木) 22:29:59 ID:b19TgDYi
flex 3.2 mx.controls.Imageで透過pngを読み込んだのですが クリックしたときに透過部分からもイベントを拾えてしまいます 透過していない部分からのみ反応するようにするにはどうしたら良いでしょうか
二次元配列にまとめて文字を代入する方法はないでしょうか? hensu[5][20] を作成し、 hensu[0]に20個の文字列、hensu[1]に20個の文字列・・・という感じで代入したいです 1次元でしたら、 hensu = ["a", "b", "c", "d" ・・・・]; で、できると思い思いますが、二次元の場合どうやればいいかわかりません よろしくお願いします
>>459-460 >どれの、何の?というのが何を指すのか分かりませんが、
どのオブジェクトでのイベントか、という意味で どれの?と聞いた。
イベント名だけじゃ、どこで何をどうしたいが見えないので、誰も答えられないからだ。
で、当初のイベントは
>>460 の処理で、って話だね。
要はクリックしたタイミングで URLLoaderを使いロードを開始した?
その後、URLLoader が完了イベント投げたタイミングで、受け取ったテキストをどこかに書き込んだ。
>>457 の記述を見ると
>例えばEvent.COMPLETEではなくMouseEvent.CLICKに変えると正常に動いてくれるのですが、
と書いてるけど、イベントの流れは理解出来てるんだろうか。両者は全然タイミングが別物のイベントなんだが。
例えば前提として、テキストファイルが別途サーバ上にあるとすると…
1.マウスクリックのタイミングで、URLLoader を使い、サーバからデータのロードを "開始" する。
2.URLLoaderロード完了のタイミングで、取得したデータをどこかに書き出す。
で、1のイベントと2のイベントはまったく無関係だと言う事。その辺は理解してるか?
>>462 hit用の別のShapeを用意して行けたと思う。ボタンとかで使うアレと同じ。
>>463 var hensu:Array = [
["a", "b", "c"],
["d", "e", "f"]
};
ADataGrid.unshift("{v:\""+num+"\",title:\""+title+"\"}"); initGridData=new ArrayCollection(ADataGrid); 配列に追加していき、それをコレクションにしてdataGridで読み込んでいるのですが、 dataFieldでvやtitleを指定してもどちらにも{v:\""+num+"\",title:\""+title+"\"}の形式で出力されてしまいます。 numやtitleだけを出力したいのですが、どうするべきでしょうか?
>>466 "{v:\""+num+"\",title:\""+title+"\"}"を文字列にしてるのはなんで?
Processingを使用している方もいると思うんですが、P5におけるrectMode、ellipseModeの様なメソッドはAS3には無いでしょうか? 要はベクター描画の際に、(0, 0)をSpriteの中心に置きたいんです。 ご回答よろしくお願いします。
AS3でArrayCollectionに{date:"1234567890",name:"hogehoge",data="hogehoge"}みたいな感じの データが入っていて、dateの値(unix time)と現在の時刻と比較して、経過が一定時間(任意)ごとに nameとdataを使った処理を行わせる関数が欲しいのですが、何を使えば作れるでしょうか?
470 :
age :2010/01/23(土) 15:27:48 ID:L5ncQh3s
無料ソフトFlash Developでのflashゲームの開発、画像の分割読み込みの方法 (※flash csは持っていません) 画像の分割読み込みなどで、一度に複数の画像を読み込むなどの方法はないでしょうか? 現在入門書で画像を一個一個読み込み表示する手順として以下のの3つのステップを踏んでいます。 (1)public var ldr_png:Loader = new Loader(); (2)var urlReq:URLRequest = new URLRequest("画像フォルダ名/画像名.png"); this.ldr_png.load(urlReq); (3)this.addChild(this.ldr_png);
>>470 一度に複数なんて言う方法は、Flashに限らず通常ありえない。
もしも誰かが(例えば俺が)そういうライブラリを作っていたとしても、
実際には中では個別にLoaderを読んで順に取得し、例えば10件トライして10回なんらかの
結果が得られた時点で、全て完了したと報告しているに過ぎないので、
今は書かれている通りに試していって問題無い。
・・・強いて言えば非同期に取得する手段を(URLLoaderなど)取って、
複数個並列に処理するのような形にした方が全体でかかる時間も減るとは思うが、
その辺は考え方が変わって来るので、今はそのまま試して覚えた方がいい
>>471 回答ありがとう。
自分はflash初心者なので、今のコードで試すしかないか・・。
結構画像の数が多くなると処理が大変になりそう。
せめてコードを短くする
(例えばurlReqを使わずに直接画像を指定して読み込むとか)ことはできないものでしょうか?
C言語の入門レベルのプログラムを組んだことがあります。 (C言語ではDXライブラリというものがありそれをつかっていました。)1枚の画像に必要な画像をすべて並べて置いて、 座標を指定して切り取って配列として読み込んで使うという方法があるのですが(マイナーな方法かもしれません)、どうやらaction scriptにはない機能のようです。 ただし、自分でクラスを作ってプログラムした経験はないので、クラスの作成から勉強しなおしてみます。
>>474 ActionScriptに無い、と言うか、標準の組み込みAPIに存在しないだけだから、
むしろそのように自分で実装すれば良いだけ。と言うか、その種の処理はお手の物だと思うぜAS&Flashなんて特に。
あと、DXライブラリはドがつく高級ラッパーなので、全部自分で書く代わりに他人に書いてもらってたような状態だと思うが、
>>474 にあるような内容は、メジャーとかマイナーというより、ただの実装方法の一つ。
特に珍しい何かって事でも無く、たまたまそれがそういう仕様だっただけって話。
そう言った考え方の切り分け含めて、頑張って勉強してくれ
>>475 たしかに。APIをどのくらい扱えるようになるかもプログラミングの楽しみのはずだけど、
C言語のときDXライブラリに頼り切っていたのも指摘の通りです。
とりあえず頑張る。
現在時刻のunixtimeを求める関数はありますか?
マウスがクリックされたら「こんにちは」という文字を表示するプログラムを作成しようとしたのですが、 うまくいかず困ってます。 28行のプログラムですがおかしいのはどこかわかる人いますでしょうか? package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point this.addEventListener(MouseEvent.MOUSE_DOWN, onMousedown); function onMousedown(e:MouseEvent):void { var tf:TextField = new TextField(); tf.text = "こんにちは"; this.addChild(tf); } } } }
>>478 むしろストレートにおかしい
private function init(e:Event = null):void {
〜略〜
// entry point
this.addEventListener(MouseEvent.MOUSE_DOWN, onMousedown);
function onMousedown(e:MouseEvent):void {
var tf:TextField = new TextField();
tf.text = "こんにちは";
this.addChild(tf);
}
}
onMousedown のハンドラ関数を書いた場所と、いま手元にある入門書かサイトの解説を
もう一度よく読め。 あとついでに言っておくとそこは entry point じゃないぜ… って
IDEの自動挿入文かもしれないが
また跳ね返ってくると面倒なのでちょっと解説しておくと、 class ├ function その1 … そのクラスに定義/宣言された関数その1 │ └ function その2 … こういう記述方法自体がエラー(※) └ function その3 … このクラスに定義/宣言された2番目の関数 そのクラスに定義する関数(メソッド)は、class の直下階層に書かないと意味が通じない。 その2で※と印を付けたのは無名関数の例があるからだけど、それについては今関係無いので割愛
[Bindable]
public var myxml:XML = new XML(
<rss version="2.0" xmlns:media="
http://search.yahoo.com/mrss/ "xmlns:dc="
http://purl.org/dc/elements/1.1/ ">
<list>
<title>hogetitle</title>
<link>
http://hogehoge.com</link >
<description>hogehogeなんです</description>
<language>ja-JP</language>
<item>
<title>hoge1</title>
<link>hoge1.com</link>
<pubDate>Sat, 23 Jan 2010 23:05:00 +0900</pubDate>
<description>hogeだお</description>
</item>
<item>
<title>hoge2/title>
<link>hoge2.com</link>
<pubDate>Sat, 23 Jan 2010 22:33:17 +0900</pubDate>
<description>hogeだお</description>
</item>
</list>
</rss>
);
public var myxmlcol:XMLListCollection = new XMLListCollection(myxml.rss.list.item);
DataGridでitemのtitle,link,pub Date ,descriptionをリストにしたいのですが、XMLListCollectionでないと
dataProviderにできないと聞いてXMLListCollectionに入れているのですが、これであってますか?
traceしても空白なので困ってます。itemの中だけ拾いたいです
複数あるasファイル内の文字列をまとめて一括検索:置換できるソフトってないですか? htmlとか、txtなら、いくらでもあるんだけど、.as対応のその手のソフトが存在しないんで。
>>482 その要件だけならテキスト用の同じソフトでいいと思うんだけど何故ダメなのか
拡張子が対応していないんで。拡張子をいったんtxtに一括変換する そして検索置換。拡張子をasに戻す という手順がめんどいだけです
>>484 そういうのいっぱいあるよ
「grep」とか「テキスト 置き換え」とかで検索すれば出てくるべ。
まぁスレ違いだけど。
いくつもためしましたが、どれも.asは未対応です やっぱ一回は拡張子一括変換か
おいおいそんな理由かよ。 しかも超スレチじゃねぇか。 どれも .as は未対応ですって、普通にワイルドカードで指定とか出来るだろいくらなんでも。 出来ないソフトの方が珍しいと思うぞ。 そんな拡張子変換とか余計な事する必要まったく無い。ググれ。 そして見つけたソフトの取り説でもちゃんと嫁。 そしてスレチだ
ちなみにド初心者みたいだから書いとくけど、普通に考えて世の中には テキスト形式で拡張子が違うファイルなんて星の数ほどあるんだよ。 as に限った話じゃない それらに対応する為、ごくごく一般的な多くのそれ系ソフトは、大抵 foo.* みたいな ワイルドカードに対応したりするもんだ。 じゃないとまるで使えないからだ。 その辺含めてググって学べ
as書くに比べたら大した作業じゃねーだろw
画像掲示板から画像を取得するにはどうしたらいいですか
その画像掲示板がクロスドメイン許可してないと 画像アドレスは取得できても画像自体は取得できない
>>491 おお、さば借りて画像掲示板立ててみました。
詳しく教えてください。
>>478 構造そのままで
this.addEventListener(MouseEvent.MOUSE_DOWN, onMousedown);
↓
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMousedown);
this.addChild(tf);
↓
addChild(tf);
でok
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;
public class Main extends Sprite {
public function Main():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMousedown);
function onMousedown(e:MouseEvent):void {
var tf:TextField = new TextField();
tf.text = "こんにちは";
addChild(tf);
}}}}
rtmpについての日本語のリファレンスってありますか 特にrtmpで映像の送受信するサンプルコードがあったら教えてください
>>492 画像掲示板の画像フォルダにアクセスすればいいだけだよ
詳しくと言われてもどの程度理解してるかわからないから答えようがない
>>495 えっと、perlで書かれた画像掲示板cgiがあるのですが、
この掲示板にブラウザでアクセスし、画像をクリックすると
その画像を読み込んだswfファイルが起動するようにしたいです。
>>496 CGIから作る画像のリンクを同じSWFにIDクエリを付属したものにして
同時にCGIからSWFへその画像のパスとIDを変数として渡す
こんな感じじゃないかな?
それほとんどCGIでやることじゃない?
1. ActionScript3.0で3枚の画像(img1, img2, img3)のデフォルトのalpha値を0とします 2. ボタン(btn)を配置し、クリックした際にimg1のalpha値が徐々に1になります 3. img1のalpha値が1ならばimg2のalpha値が徐々に1になります 4. img2のalpha値が1ならばimg3のalpha値が徐々に1になります 以下、自分の書いたコードです ---------------------------------------------------------------------------------- img1.alpha = 0; img2.alpha = 0; img3.alpha = 0; btn.addEventListener(MouseEvent.CLICK, alphamode); function alphamode(evnt:MouseEvent):void { for (var i:int = 0; i < 10; i++) { img1.alpha = i / 10; } if (img1.alpha == 1) { for (var i = 0; i < 10; i++) { img2.alpha = i / 10; } } if (img2.alpha == 1) { for (var i = 0; i < 10; i++) { img3.alpha = i / 10; } } } this.stop(); ---------------------------------------------------------------------------------- この様に記述してもimg1のalpha値しか変更されません。
それじゃ値1にならないよ i<=10 それと変数も重複してるよ
失礼しました。間違ってましたw img1.alpha = 0; img2.alpha = 0; img3.alpha = 0; btn.addEventListener(MouseEvent.CLICK, alphamode); function alphamode(evnt:MouseEvent):void { for (var i:int = 1; i < 1000; i++) { img1.alpha += 0.01; } if (img1.alpha >= 1) { for (var j :int = 1; j < 1000; j++) { img2.alpha += 0.01; } } if (img2.alpha >= 1) { for (var k:int = 1; k < 1000; k++) { img3.alpha += 0.01; } } }//end func. this.stop(); これで走りました。しかし、一瞬で処理されてしまって、 alpha値が意味のない結果になってしまいます。 alpha値制御によって徐々にimgが現れる方法としてfor文は間違っているのでしょうか? そこで、
enterframe処理のほうがそれらしい結果は出るよ あとtimerで処理するとかかな
>>501 >alpha値制御によって徐々にimgが現れる方法としてfor文は間違っているのでしょうか?
間違ってる。
forなどのループ処理中は描画更新は行われないので、アニメーション処理には使わない。
>>502 のいうようにするとか、Tweenクラス使うとか。
>>501 一応基本的な事として説明すると、
for の繰り返しは処理としての繰り返し、徐々に見た目が云々は、アニメーションの繰り返し
動作が全然違う
これは、例えばこんな想像をするとすぐに理解出来る。
例) 「20個の Spriteを同時に点滅させたい」
1.1フレーム中で、for で回して 20個分の SpriteについてAlpha値を設定
2.セットするAlpha値を変えながら、1を繰り返す
この時、1が処理としての繰り返しで、2がアニメーションの繰り返し。
この辺の意味の分離を良く理解しておくこと
>>504 の件
×2.セットするAlpha値を変えながら、1を繰り返す
○2.フレームを進行させ、セットするAlpha値を変えながら 1を繰り返す
大事な点が抜けた。スマソ
506 :
Now_loading...774KB :2010/01/25(月) 18:50:33 ID:mzcPD+sq
actionscript3です。 flashで入力したテキストをxmlにエレメントとして追加しそれを保存(リロードしても消えないように) したいのですがどのようにやったらよろしいでしょうか?
507 :
Now_loading...774KB :2010/01/25(月) 20:54:02 ID:EPQ/X+l6
あ、あと「保存」に関して言えば、サーバに投げてCGIでも使ってなんかすればおk PHPとかで処理すると簡単。 しかしその件についてはスレチなので自分で調べる事
510 :
Now_loading...774KB :2010/01/25(月) 21:01:16 ID:mzcPD+sq
>>509 レスありがとうございました!!
早速試してみます。
>>510 XMLDOMの操作や考え方は、一度丸ごと覚えておくと
ActionScript に限らず応用が利いて色々役に立つ場面も多いから楽しいぜ
>>512 javaは試してないからわからないけど
flash.system.Security.loadPolicyFile("xmlsocket://200.150.100.50:8080");
もしくは
Security.loadPolicyFile("xmlsocket://200.150.100.50:8080");
でそのエラーは無くなったよ
>>513 うおおおおーっできました!
ありがとうございますっ!
ちなみにサーバ側のロジックをAIRで作る事は可能でしょうか?
ネットではJavaやC#、Perl、PHPなどのサンプルはあるのですがAIRのは見つけられなかったです。
AS3を使い慣れているので、サーバ側もAIRで作れたら最高なんですが・・・
>>514 多分根本的な話だと思うんだけど、AIRの母体であるFlex自体が、
正体は J2EE (サーバサイドJava/エンタプライズJava)の 「ただの1アプリケーション」 なので、
「サーバ側をAIRで作る」 というイメージ自体が意味不明かもしれない
で、C#やその他CGI機構での説明が出るのは、もっと根本的な話として、
「今あなたが作っている物は、ただのクライアント/サーバアプリケーションだ。
特に Flashであれば、それはどんな内容を書こうとも、ただのクライアント側の1アプリケーションだ」
という基礎的な大前提から、「それならサーバ側はなんでもいいじゃん。HTTPの仕様で受付返答出来る物ならば」
という事で、そのような話になっている、って事。
・クライアント側: html、JavaScript、Flash、AIRなどなど
・サーバ側: Perl、PHP、Java(J2EE)、C#(.net/aspx)、VB(asp)などなど ※こちら側にAIRは無い
これらは HTTP を介してデータのやりとりをする。その意味で、これら両者はどの組み合わせでも構わない。
そんな感じ。 ついでに言っておくと xml はただのデータコンテナなので、どちらにもいるし、どちらにも居ない
516 :
Now_loading...774KB :2010/01/27(水) 20:13:54 ID:olLDZmAG
初歩的な質問ですいません。actionscript3です。 datagridの文字サイズを大きくしたいのですがどのように設定したらいいでしょうか? var format:TextFormat=new TextFormat; format.size=30; com.setStyle("textFormat",format); このように書いてみたのですがだめでした。
517 :
Now_loading...774KB :2010/01/27(水) 22:27:50 ID:NWRWHWRp
AS3、Flash9で質問。 addChild した Bitmap の解像度を stage(NO_SCALE, TOP_LEFT) の解像度にピッタリ合わせたい。 しかし Event.RESIZE や FullScreenEvent.FULL_SCREEN の後に bitmap.width = stage.stageWidth; としても 何故か両者の解像度が合わない。 そこで、一旦 removeChild してから改めて new BitmapData/Bitmap したら合うようになったのだけど これはこういうものという認識でOK? もし正しい手順があるなら教えてください。
518 :
517 :2010/01/27(水) 22:33:55 ID:NWRWHWRp
WHのことで半日悩んだのに、なんだかIDにまで馬鹿にされてる気がする・・・ちくしょー
>>516 dataGridColumnにsetStyle使ったりmxmlなら直接書いたりして
fontSizeを設定してやればいいんじゃね
つかリファレンス見りゃだいたい分かると思うんだけどな
521 :
Now_loading...774KB :2010/01/27(水) 23:00:48 ID:fhtSJ8n2
質問です as2でボタンの制御を1フレーム目で行っています。 クリックしたときにbaseにalphaをかけてからcontactに移動するというフェードアウトの動きをつけたのですがEnterFrame処理を使うとflagがずっと1の状態にありcontactから他のコンテンツに移動しようとするとcontactにすぐ戻ってしまいます。 他のコンテンツに移動するにはどうしたらいいのでしょうか? ソースは下記です var flag = 0; footer.btn_contact.onRelease = function() { base.onEnterFrame = function() { if (this._alpha>=50) { this._alpha -= 10; } else { flag = 1; } if (flag == 1) { _root.gotoAndStop("contact"); flag = 0; } } }; よろしくお願いします
>>521 どっかでdelete onEnterFrame
>>521 flag = 1のとこでgotoAndStopさせればflagいらなくね?
まぁそれはともかく、飛ぶ前にbase.onEnterFrameにnullでも代入するなり
deleteするなりしたらいいんじゃないかと思うが
14歳から始めるaction scriptを読んで、 オンラインのゲーム(五目並べなど)を作ろうと思ってます。 (本では、基礎的なmysqlとperl/cgiの知識も必要みたいなことが書いてあるんで、 mysqlとphpの関連の本を何冊か買ってきたのですがまだよく読んでません。。。) flashでターン制の対戦ゲームを作る場合 データベースの中身をflashだけで呼び出すことは無理なのでしょうか?
526 :
Now_loading...774KB :2010/01/27(水) 23:57:18 ID:+ikOeIKc
>>524 ちょうど
>>515 が書いてるじゃないか。
データベースの中身を呼び出すのは、サーバ側の話。
Flashは、クライアント側。
>>524 どうしてもASでやりたかったらAIRにしる。
>>526 ,527 flash(クライアント側)だけではということ無理ですね。
>>528 airは最新の技術みたいですね。今後チェックしておきたいです。
すごい勢いでのレスありがと!
530 :
Now_loading...774KB :2010/01/28(木) 13:22:14 ID:CWGxBRYW
お尋ねします。 AS3でyoutubeのクロームレスでなくコントローラー付きのプレイヤーを使用したいのですが、可能でしょうか? AS2ならあるようなのですが、AS3だとコントローラーは自作しないといけないのでしょうか?
自作すればよろしいがな
532 :
Now_loading...774KB :2010/01/28(木) 16:28:18 ID:CWGxBRYW
// ありがとうございます。やはり自作するしかありませんでしょうか? // AS2ならできるようなので、AS3でもあるのかと思ったのですが……。
あるも無いも結局誰かが(Adobe含む)作ったからあるってだけなので、無ければ自作は当たり前。 ただしCS等のパッケージ製品には自分の代わりにAdobeが作ったライブラリと言うか、 出来合いの部品が付いてるかもしれないがそれはユーザじゃないと知らない
俺も自作面倒だったけど 調べればすぐ出来るものだったので自作した 簡単すぎてアップするやつがいないんだと思う
テキストボックスを簡単に設定して表示させるクラスはどこかにないでしょうか 自分で作った方が良いのでしょうか
536 :
まるこ :2010/01/28(木) 20:24:18 ID:3WfHuohY
as3で、文章の中から特定の文字列を抜きだす関数が作りたいのですが、 やり方がまったくわかりません。 「明日の日にちは何日だっけ?」>「日」の数をカウント>出力:3 というようなものです。 どなたか教えていただけないでしょうか? 宜しくお願いいたします。
538 :
Now_loading...774KB :2010/01/30(土) 11:14:14 ID:0XiawuW7
AS3です、質問お願いします png画像を読み込み、現在bitmapとしてaddChildしていますが この画像内で描画されている領域が、歪んだ台形のようになっていて 未描画箇所は透明です この画像データのbitmapまたはbitmapdataのデータから 描画されている領域の四隅の頂点のx,yを取得する方法はありませんでしょうか?
var array:Array = DispalyObject3D.geometry.vertices
540 :
Now_loading...774KB :2010/02/01(月) 14:38:52 ID:OTjvy2Mo
AS3でXMLから外国語の文章を取得し表示しているのですが、 なぜか中国語(北京)だけ太文字になってしまいます。 各国それぞれにあったゴシックのフォントを利用しています。 中国語(北京)のフォントは黒体(Simhei)を利用しています。 なぜ太くなるのでしょうか?上記フォントの仕様なのでしょうか?
AS3です。カスタムクラスの静的メソッドで、 URLLoaderのCOMPLETEイベントのタイミングで返り値を返したいのですがどのようにすればよいのでしょうか? static private var hoge:String static public function fromTxt(path:String):String { hoge=new String(); var url : URLRequest = new URLRequest(path); var url_loader : URLLoader = new URLLoader(); url_loader.load(url); url_loader.addEventListener(Event.COMPLETE,txtLoaderComplete); } static private function txtLoaderComplete(e : Event) { hoge = e.target.data; } 読み込んだhogeをreturnしたいのですが、txtLoaderCompleteの中に書いてもダメでしたし fromTxtに書いてもタイミングが合いません。
よろしくお願いします。 AS2、もしくはFlash Light2 の作り方で参考になるサイトや本など 教えていただけないでしょうか? 先日まで CS4 AS3 を本を読みつつ一通り勉強し終え、 当初やりたかった携帯のメニューやFlashゲーに入ろうかと思ったら 自分の携帯がFlash Lite2(AS 2相当)機でした。 近くの本屋にはAS3の本しかなく、amazonで調べても Flash Light2をターゲットにした本というのが見当たらずで… Flash Light1.1の本はあったのですが、これでも十分なのかも判らず質問させてもらいました。 よろしくお願いします。
>>542 Flash Light2はPlayer7相当、つまりAS2.0で十分に書けるよ。
実際、Player7でパブリッシュしたSWFも携帯で問題無く動く。
(ただし、fscommand2は不可)
すみませんが、Flash CS4 のフォント一覧にある 中国語専用フォントの ・K体 ・Adobe K体 Std の違いがわからないのですが、何が違うかわかる方いらっしゃいますか?
>>540 >>544 その辺知ってる人って、果たしているんだろうかwww
こればっかりはAdobeに聞いた方が速いんじゃね?
てか、フォントの話はこのスレで聞く内容なんだろうか スレタイ的に。
AS3です!教えてください! mcというMovieClipがあり、動的に赤色っぽい色にしたいのですが、 以下のコードでやったら赤のベタ塗りになってしまいます。 var c:ColorTransform = new ColorTransform(); c.color = 0xFF0000; mc.transform.colorTransform = c; mcの模様は残したまま、全体を赤色に染めたいのですが、 上記コードだと真っ赤なベタ塗りになってしまいます。 あと、c.alphaOffsetとやってみたら、やはり赤のベタ塗りで、mc全体に アルファがかかっただけでした。
>548 ぐぎゅうーーんむうおおーあああああああ 難しいです。 この記事読んだら・・・できますか??
550 :
547 :2010/02/02(火) 16:18:30 ID:xZofrkkr
できました。 ありがとうございましたー
551 :
Now_loading...774KB :2010/02/02(火) 20:10:40 ID:yYc/SLde
待ちわびクタビレ パッション風 Win区氏てる絵振りなぃ 暮す野中のパッションビール 身詰める抱けて何リラ アマ医目ロデオ 風邪に乗れ馬コント 卑弥呼明大 鳶らが創価でビラ供養 煮詰めるGAP逢い 麻雀プレイ伊豆暖心 宮土理囲炉裏ピカール 早時空GAP合い 本気汁イッキ伊豆暖心 次あがり阿鼻手 ウイゲッチュ! 水で椅子婆ー 誰か作ってくれ。
>>541 Flex Builderにコピペしたらエラーでまくりだったので修正してみた。
タブはスペースで表現してあります。
fromTxtがメソッド(returnを返さないFunction。返す場合は関数だ)の場合、型はvoidのみ。
txtLoaderComplete内で hoge への代入は完了してるから、他のメソッドや関数で hoge を参照すればよし。
ちなみにイベントを伴う処理で
var test:String = fromTxt();
みたいな使い方は出来無いので注意。
static private var hoge:String
static public function fromTxt(path:String):void
{
hoge=new String();
var url : URLRequest = new URLRequest(path);
var url_loader : URLLoader = new URLLoader();
url_loader.load(url);
url_loader.addEventListener(Event.COMPLETE,txtLoaderComplete);
}
static private function txtLoaderComplete(e:Event):void
{
hoge = e.target.data;
trace(hoge);
}
そっか!2ちゃんは連続スペースも消されるんだった・・・ 失礼。
Flashからlightwindowを使いたいのですが、 Flash側のボタンに on (press) { getURL("javascript:test();"); } html側に function test(){ myLightWindow.activateWindow({ href : "sample.html" }); } と記述したのですが、Flashのボタンを押してもlightwindowが起動しません。 通常のaタグなどにlightwindowの記述をすれば、起動するのですが、 どうやったらできるのでしょうか?
555 :
542 :2010/02/03(水) 00:51:56 ID:89xQ4akd
>>543 なるほどです。
つまりFlash Light 2の本ではなく
AS2の(Flash 8くらい?)本を探せばいいんですね
ブックオフとか見てみようかと思います
JavaScriptやってたのでAS3のイベントリスナ型はすんなり入りましたが
AS2は「たぶんこんなんだうなぁ」程度の情報しかなかったので…
型もintとかないみたいだし、予想以上にAS3とAS2は差がありそうです。
ありがとうございました。
>>555 どっちかっていうと、AS2の方がJavaScript(と言うか、ECMAScriptと言うか)ライクだと思う。
AS3はJavaライク。
>>555 というか、AS2.0と3.0は別物と考えた方がいい。
例えるなら、爬虫類と哺乳類。
単純にパスワードの勉強しなきゃ そんなもん作るメソッドなんて存在しないんだぜ
>>558 特にAS関係なく、どの言語でも同じ。アルゴリズムの話だと思うんだぜ
なので
>>559 が正解。
>>558 パスワードって言うよりセーブデータ?
だったらちょうど今週似たようなことやったぜ
データをByteArrayに入れて(compressして)、Base64Encoderで文字列にしてみたぜ
逆の操作で元に戻せるぜ
562 :
541 :2010/02/04(木) 13:51:52 ID:59GN4Hha
>>552 >var test:String = fromTxt();
みたいな使い方は出来無いので注意。
まさにそんな使い方がしたかったんです。
var test:String
fromTxt(test);
のように引数に参照渡して直接書き換えることにしました。
まったく興味ない質問が多すぎちゃう
それは報告しなくていいです
あるディレクトリにあるファイルの数を知るにはどうすればいいですか
>>565 Flashってか、SWF単体では無理。
FlexによるAirで有ればそれっぽことは可能。
下のコードは、デスクトップ上にある check フォルダーに保存されているファイルとディレクトリーの数を trace する物。
いくらAirでも、File操作ができる場所は限られているのでどこでもは無理。
public var trgDir:File = File.desktopDirectory.resolvePath("check/");
public function CreationComplete_View(e:FlexEvent):void
{
var kariAry:Array = listFile.getDirectoryListing();
trace(kariAry.length);
}
>>566 訂正
public var trgDir:File = File.desktopDirectory.resolvePath("check/");
public function checkFileCount():void
{
var kariAry:Array = trgDir.getDirectoryListing();
trace(kariAry.length);
}
>>561 ありがとうだぜ
しかしescapeとMD5の二刀流で自己解決したのだぜ
そっちも面白うだから試してみる
普通varで宣言していない変数のアクセスはエラーになると思うんですが、 a = 1; //error with(this){ a = 1; } //ok になるのは何故なのか理由を知りたいです。
>>570 試してないけど、そのthisはたぶんMovieClipかなんらかのダイナミッククラスだから自由にプロパティを設定できるのではなかろうか
>>570 AS3 の話で、かつその一文が書かれている箇所がクラスの中で、かつ
クラスのメンバとして a が定義されているなら、普通にそのインスタンスのメンバを指しているだけ。
…なんだけど、AS3 で withステートメントなんて使えたっけか。AS2の話か
573 :
570 :2010/02/05(金) 19:37:40 ID:0zDa2KbH
package{ import flash.display.*; public class C extends Sprite { public function C() { with(this) { a=1; }}}}
>>570 おお!確かに謎だ!
>>571 traceかけてみたけど、そんなプロパティ無いって言われた・・・どうやら違うようだ
>>572 ビルダーのbreakでメンバ洗ってみたけど、いないんだよ、a。AS3でも with は普通に使えるよ
package ori_as
{
import flash.display.Sprite;
public class Test_as extends Sprite
{
public function Test_as()
{
//ここで先ずbreakチェックかけて
trace("before");
with(this)
{
a = 1;
}
//こいつはビルド時にはエラーにならんが、実行時にエラーになる
trace(this["a"]);
//ここでもbreakでチェック
trace("after");
}
}
}
>>574 with ({hoge:a = "a"}) {
trace(hoge); // output:a
}
っていう風に疑似ブロックローカル変数を作れたりするけど、
それと関係があったりして。
576 :
Now_loading...774KB :2010/02/07(日) 00:53:06 ID:r9iPnp5x
あるなら せめてどこにあるかくらい書いてあげれば?
578 :
Now_loading...774KB :2010/02/08(月) 07:34:25 ID:911rbynt
XPathAPIでxmlからデータを抽出する際、属性の値に/(スラッシュ)があると駄目なんですか?
ttp://www.drk7.jp/weather/xml/13.xml 上の、
/weatherforecast/pref[@id='東京都']/area[@id='東京地方']/
から、今日(info date="2010/02/09")以下のディレクトリから色々データを抽出したいのですが・・・
よろしくお願い致します。
579 :
flash作業員 :2010/02/08(月) 11:17:07 ID:t9X/MYyP
ブラウザ起動時に、ウインドウサイズ一杯にFlashを表示したい AS3です。ブラウザ起動時に、ウインドウサイズ一杯にFlashを表示したいのですが、上手くいかずに困っています。。 IE、FireFox、Safari、Opera 上記の4ブラウザ全てに対応したいのですが、 現在私がやっている手法では、FireFoxにしか対応できておりません。 今のやり方は、Flashサイズを縦横100%でパブリッシュして、スクリプトでは -------------------------------------------------------- var w:Number // ブラウザ起動時の横幅 var h:Number // ブラウザ起動時の高さ stage.addEventListener(Event.RESIZE, wr); function wr(e:Event):void{ w = stage.stageWidth; h = stage.stageHeight; stage.removeEventListener(Event.RESIZE, wr); } -------------------------------------------------------- FireFoxでは、Flashサイズを縦横100%でパブリッシュされていた場合、ブラウザ起動時のウインドウサイズに一度Flashサイズがリサイズされるので、その時に自動的にEvent.RESIZEが実行されるようなのでそこで初期サイズを取得できています。 しかし、他のブラウザでは、「ユーザーがウインウをリサイズする」というアクションを起こさないとEvent.RESIZEが実行されないようですので、ブラウザ起動時にウインドウサイズ一杯にFlashを表示できません。 どうかよろしくお願いいたします。
580 :
Now_loading...774KB :2010/02/08(月) 13:40:43 ID:B6QkGSal
テキストインプットで書いた文字をキャンバス上にラベルで出力しているんですが、 その出力したものの一部ををドラッグで反転させて右クリックで色やフォントを 教えていただけないでしょうか? あるいは、イメージをドラッグしてきて、それがラベルにぶつかるとフォントが変わるという ようなものでもいいんですが。 なにかうまいやりかたはないでしょうか? (右クリックやドラッグ&ドロップ自体はわかります)
>>579 おれはいつも
stage.addEventListener(Event.RESIZE, wr);
wr();
ってやって手動で一回実行
583 :
Now_loading...774KB :2010/02/08(月) 17:52:59 ID:B6QkGSal
581 ありがとうございます。
584 :
flash作業員 :2010/02/08(月) 18:41:36 ID:t9X/MYyP
>582 ありがとうございます!! やってみました。他のブラウザは作動するようになりましたが なぜか、逆にfirefoxだけ動かなくなりました。。 なんでかな。。
キャリア拾って分岐でいいんじゃね?
そのリサイズをremoveEventListenerする必要あんのか
AS2で教えてください 例えば座標A(X:10,Y:25)と座標B(X:55,Y:132)のような 2つの座標間の距離を調べるにはどういう計算をしたらいいのでしょうか よろしくお願いします
>>587 (X1>X2)?X1-X2:X2-X1 Xの距離
(Y1>Y2)?Y1-Y2:Y2-Y1 Yの距離
自己解決しました 距離 = Math.sqrt((Bx-Ax)*(Bx-Ax)+(By-Ay)*(By-Ay));
日本はマジで教育が崩壊してんだな。
592 :
Now_loading...774KB :2010/02/10(水) 20:18:47 ID:Jq9LaW8i
http://cute.urecco.jp このサイトの様にLADIESの写真の上にマウスを置くとフワッと動く感じにしたいのですが
どうしたらよいのでしょうか?
CS3 AS2.0 AS3.0どちらでもよいので、誰かお願いします。
>>592 どのエフェクト?
明るくなるのはColorMatrixFilterを使うか、簡単な方法としては画像の上に半透明の黒いベタ塗りを置いて、マウスオーバーで非表示にするとか
花が舞うやつはそういうムービーを頑張って作って、マウスオーバーで再生
>>592 花が散るやつってランダムじゃないなこれ
1つ1つアニメーション作っていったのかww
こんなレベルでも仕事になるの?
逆に力技過ぎて頭が下がるぜw
パーティクル作れるソフトから書き出すだけなら 力業ってほどでもないと思う
597 :
Now_loading...774KB :2010/02/11(木) 16:16:38 ID:igK0dX7y
すみません、AS3、クラス内で private var _groups; 略 public function set groups(items:Array):void { _groups = items; for each (var item in _groups) { // var item in _items としても同じでした。 処理.... } } とsetterが指示されてる際に、 groups.push(obj); としても、処理がなされません。 groups = [obj1,obj2,obj3,obj4]; は処理がなされるのですが、pushでも処理がされるようにするにはどうしたら良いのでしょうか。。 AS2の時は動いたような気がするのですが。。。
AS始めたてだから外してるかもしれんが それArrayを返すgetterを作るべきなんじゃねえの groups.push(obj); のpushが要求してるのはArrayだべ?
アンスコが付いてたり付いてなかったりするのはただの転記ミスで、 実際はちゃんと名前揃ってるんだよね? メンバの _groups の宣言時に型が無いが、これ通ったっけ? もしもこれで通るなら、_groups の型が不明なので当たり前だと思う。 AS2 の時はむしろ JavaScript に似て動的型付(ダックタイピング)の色が強かったから出来たんじゃね? AS3 はむしろJava。 全然別物になったと思ったほうがいい
一応補足しておくと、 AS2の時はJavaScriptに似て型宣言が無い言語だったから、代入されたオブジェクトいかんでその振る舞いも変わる、って状態だった。 ※ダック(アヒル)タイピング=「それがアヒルのように鳴き、アヒルのように歩き、アヒルのように振舞うならそれはアヒルだ」 でも AS3 からは宣言時に型を静的に解決するJavaのような作りになったので、 多分 private var _groups; は、暗黙のうちに _groups:Object として宣言されていて、 _groups = items; とされた場合、_groups からキャスト無しで参照しようとすると、Object として動こうとする。だからエラー 多分、 (_groups as Array).push(obj); みたいにすればいけるんじゃね?
興味を持っていただいてありがとうございます。。
>>598 getterは準備しています。。。
public function get groups():Array {
return _groups;
}
>>599 転機し忘れですが
private var _groups:Array;
となっています。
> AS2 の時はむしろ JavaScript に似て動的型付(ダックタイピング)の色が強かったから出来たんじゃね?
かもですね。。。。
Arrayそのものの拡張クラスを作るしかないのなら、ちょと実装、考え直さねば。。。
>>601 え、宣言時にも Array としていて、それをArrayとして使ってるのにエラー?
だとしたら全然関係ない理由じゃない? ただの自分のバグ的な
>>602 いえ、エラーというか、処理をなにもしないのです。
具体的には
for each (var item in _groups) { // var item in _items としても同じでした。
container.addChild(new MovieClip());
}
みたいなことしてます。
デバッガでsetterにブレークポイントを設定しても、かすりもしない、setterを利用していない感じです。
_groupsには、引数と同じものが入ります。
push()が利用しているのはgetterで返されたArrayそのものだから、 その外にあるsetterが呼ばれないのは当然だと思うけど。 Arrayを拡張するのが嫌なら、クラスにpush()メソッドを作って、その中で setterと同じ動作をさせればよいと思う。
>>604 > push()が利用しているのはgetterで返されたArrayそのものだから、
>その外にあるsetterが呼ばれないのは当然だと思うけど。
!
そう言われてみれば納得です。
ありがとうございました。
606 :
Now_loading...774KB :2010/02/13(土) 20:27:48 ID:T6Ytlfmu
画像を表示する仕組みを考えています。 「マウスが画像の上に乗ったときだけ、違う画像に差し替える」という 簡単なプログラムなのですが、画像の切り替えにタイムラグがあります。 マウスが画像の上で完全に静止しないとイベントが発生しないように見えるので、 そのせいではないかと思います。 ・マウスが画像の上に乗った状態を「MOUSE_OVER」で表現するのは正しいか ・MOUSE_OVERは、マウスが静止しなければ発動しないのか について、どなたかご存知でないでしょうか? MOUSE_OVER、MOUSE_OUTのときに実行される内容は以下です。 imgLoader.unload(); req.url = newUrl; imgLoader.load(req);
そりゃラグ出るわ 必要な画像はあらかじめ読んでおいて、必要な間ずっと保持しとけよ Loaderは読み込み(非同期)、変換(非同期)と時間のかかる処理だから リアルタイム処理に挟んじゃ駄目
>>606 その作りではマウスが乗ってからロードが始まるからタイムラグが有るんじゃないの?
タイミングを確認するならOVERでちょっと移動するとかtraceするとか簡単なアクションで試した方がいい
タコすぎワロタ
入門の次に読む本について質問させてください。 以前このスレですすめていただいた ・「基本からしっかりわかるAS3」 ・ 「Papervision3d入門」 を終えたので、本紹介されていたwonderflへ行きソースをいくつか見させてもらいました。 で、 色んな人のソースをみてると上記本では書かれていなかった記述をそこかしこで見かけ、 (as 演算子や with、packeg外への記述、crossdomain.xml、SWFメタタグ etc) まだまだ知識が足りないのではないかと少し不安になり質問させていただきました。 (…コードや他言語の経験からなんとなく推察はできますが) 言語仕様を完全把握したい!というわけでは無いのですが、 個人的に基本知識だと思えたas演算子やpackage内外のスコープについても 上記本では触れられていなかったので、もう1冊くらい踏み込んだのを 読んだ方がいいのか…と思いまして。
>>610 詳説 ActionScript 3.0
MCの色が徐々に変わるだけの単純なスクリプトを書いたんですが ループしてるのかなんなのかCPUの使用率が上がる気がします。どこが悪いのか教えてください(flash8 as2です) import caurina.transitions.Tweener; import caurina.transitions.properties.ColorShortcuts; ColorShortcuts.init(); Stage.scaleMode = "exactFit"; myArr = ["cc4c00", "e5cf73", "667f59", "264c4c",];//色を選択 bgColor = Math.floor(Math.random()*(myArr.length)); bgColorChk = myArr[bgColor];//選択中の色をbgColorChkにしまっておく Tweener.addTween(myMc,{_color:"0x"+myArr[bgColor], time:0, transition:"linear", onComplete:nextAction});//初回はmcに色をつけるだけ。 function nextAction() { do { bgColor = Math.floor(Math.random()*(myArr.length)); if (bgColorChk == myArr[bgColor]) {//重複チェック overlap = true;//重複してたらやり直し } } while (overlap);//trueならdoからやり直し overlap = false;//重複解除 bgColorChk = myArr[bgColor];//選択中の色をbgColorChkにしまっておく Tweener.addTween(myMc,{_color:"0x"+myArr[bgColor], time:10, transition:"linear", onComplete:nextAction}); }
>>612 重複していなかった場合にoverlapをfalseに設定してあげないとだめかも
選択した色は配列の最後部と入れ替えてから 配列の数-1をランダムに選べば重複チェックが不要になるかと
Flash CS4です。 FLVPlaybackでキャッシュに読み込み完了すると、 バッファリングバー?(床屋のマークみたいなの)が 出っぱなしになってしまいまうんですが、 何かお作法あるのでしょうか? 特別なことは何もせず、 タイムラインの1フレ目に下記のようにソースを指定しているだけです。 player.source = "movie01.f4v"; //playerはFLVPlaybackインスタンス
616 :
612 :2010/02/14(日) 22:38:02 ID:nCzW2HY4
>>613 falseを設定してたんですが置く場所がいけないのかスクリプトが止まってしまっていました。
do whileがよくわからない。。
>>614 目から鱗です。そんな方法があるとは。
試したところ無事にスクリプトの止まらないものができました!
勉強になりました。ありがとうございます。
function nextAction() {
bgColorChk = myArr[bgColor];//選択中の色をbgColorChkにしまっておく
myArr.splice(bgColor,1);//選択されている色を配列から削除
myArr.push(bgColorChk);//選択されている色を配列の最後に追加
bgColor = Math.floor(Math.random()*(myArr.length-1));
Tweener.addTween(myMc,{_color:"0x"+myArr[bgColor], time:10, transition:"linear", onComplete:nextAction});
}
>>616 do してからwhileを実行って意味じゃなかったかな、違ったっけ
//trueならdoからやり直し で合ってる。
619 :
612 :2010/02/14(日) 23:44:46 ID:nCzW2HY4
そうか。do whileでやるならoverlap = false;の位置を変えて do { overlap = false;//重複解除 bgColor = Math.floor(Math.random()*(myArr.length)); if (bgColorChk == myArr[bgColor]) { overlap = true; }} while (overlap); こうしないといけなかったのか。あほだ。。。
ドゥーンしてホエー
試してないけど do { bgColor = Math.floor(Math.random()*(myArr.length)); } while (bgColorChk == myArr[bgColor]); でいいんじゃ
AS3.0で、変数を連番で宣言したいんですけど for(i=0;i<4;i++){ var root["sample"+i]:Number = 0; } といった感じでは leftbracket の前にセミコロンが必要です。 というエラーを吐き出されます。 この方法では宣言はできないのでしょうか? またできない場合はどのようにすればいいですか?
623 :
612 :2010/02/15(月) 01:22:54 ID:ib+M9zUB
>>621 ほんとだ。whileでチェックすればよかったのか。一番単純だし。
ちょっと頭が固すぎたようです。みなさんほんとありがとうございました。
配列を使う
>>622 for(i=0;i<4;i++){
this["sample"+i] = 0;
}
か、それでだめなら
var obj:Object = {};
for(i=0;i<4;i++){
obj["sample"+i] = 0;
}
626 :
622 :2010/02/15(月) 03:07:31 ID:fm6ywASM
例示が的確でなく申し訳ないです。 実際は for(i=0;i<4;i++){ var root["sample"+i]:URLRequest = new URLRequest("sample_s" + i + ".jpg"); } です。 一応625の両方試したんですが、エラーはかない代わりに 動作のときに参照できないとでてきました。。。 [Fault]null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
627 :
622 :2010/02/15(月) 03:46:29 ID:fm6ywASM
追記 試した結果 var smp:Loader = new Loader(); for(i=0;i<4;i++){ this["sample"+i]:URLRequest = new URLRequest("sample_s" + i + ".jpg"); } smp.load(sample0); addChild(smp); で、未定義のプロパティ i_pctrq0 へのアクセスです。とでてきます。
628 :
Now_loading...774KB :2010/02/15(月) 04:08:03 ID:JeeUQdpE
俺がまだASの仕様を完全に理解してないだけかもしれんが、
>>627 って色々おかしい気がする(おかしくなかったらすまん。俺が無知なだけだ)
var smp:Loader = new Loader();
var samples:Array = new Array();
for(var i=0;i<4;i++){
samples[i] = new URLRequest("sample_s"+String(i)+".jpg");
smp.load(samples[0]);
addChild(smp);
こうじゃね?
すまん smp.load(samples[0]);の上に } 足しといてくれ
>>626 var root:Object = new Object();
for(i=0;i<4;i++){
var root["sample"+i] = new URLRequest("sample_s" + i + ".jpg");
}
連想配列つくるnewとURLRequestオブジェクトつくるnewは別物だからこんな感じじゃないかな
631 :
Now_loading...774KB :2010/02/15(月) 04:19:39 ID:kzcf6ODO
>>627 って
var sample0:URLRequest = new URLRequest("sample_s0.jpg");
var sample1:URLRequest = new URLRequest("sample_s1.jpg");
var sample2:URLRequest = new URLRequest("sample_s2.jpg");
var sample3:URLRequest = new URLRequest("sample_s3.jpg");
って記述した状態と同じにしたいってことなんじゃないの?
そうでなければ
>>628 や
>>630 でいけると思うけど。
var loaders:Array = []; for (var i = 0; i < 4; i++) { loaders[i] = new Loader(); loaders[i].name = "loader" + i; loaders[i].load(new URLRequest("sample_s" + i + ".jpg")); addChild(loaders[i]); }
型を保証した配列が必要なら、FP10以降ならVector
634 :
622 :2010/02/15(月) 12:53:01 ID:fm6ywASM
たくさんの回答ありがとうございます!
>>628 や
>>630 でしっかり動作しました。
(
>>632 は
強制型変換に失敗しました。
flash.display::Loader@1503101 を flash.net.URLRequest に変換できません。
とでてしまいました。)
ただ、少し疑問が残っているのですが
元々の想定としては
>>631 にあげられているような形にしようと思っていたのですが
それはできない(間違っている?)のでしょうか?
まだ理解が浅い自分ですがご指南のほどよろしくお願いします。
(
>>633 のこともよくわかりませんでした・・・orz Vector?)
http://okwave.jp/qa/q5451788.html 上記の質問者と同じこと(FLVplayback)に時間表示を付け足したい
のですが、回答者のスクリプトを自分のflvコンポーネントに組み込んでも
FLVは再生されますが、時間が表示されません。
flvplaybackコンポーネントをrootのステージに置いて
インスタンス名をmcに、ダイナミックテキストを作成し、インスタンス名をt_txtにしました。
フレーム1のアクション
import mx.video.*;
var mc:FLVPlayback;//インスタンス宣言
var Duration:Number;//ビデオの長さ
var Time:Number;//ビデオ経過時間
var playheadListener:Object = new Object();//headの進行をwatchするリスナーの設置
function Duration(evt:Object):Void {//metadataの中のビデオの長さの情報を取得し、小数点以下を切り捨て、Durationに代入
var meta:Object = mc.metadata;
Duration = Math.floor(meta.duration);
}
playheadListener.playheadUpdate = function(evt:Object) {//headの進行に伴いupdateを行い、mcの経過時間を取得し、
Time = Math.floor(mc.playheadTime);//小数点切捨てし、Timeに代入
t_txt.text = Time+" 秒経過中"+"/"+Duration+"秒中";
};
何がいけないのでしょうか。
mc.t_txt.textになるじゃないの?
>>635 ほい。
import mx.video.*;
mc.addEventListener(VideoEvent.PLAYHEAD_UPDATE, function(eventObject:VideoEvent):void
{
var duration = Math.floor(mc.metadata.duration); //長さ
var time = Math.floor(mc.playheadTime); //現在時間
t_txt.text = time+" 秒経過中"+"/"+duration+"秒中"; //テキスト表示
} );
>>634 プロパティのデータ型を指定したい場合はクラス定義が必要。
んで
>>633 が言ってるのは、
型指定した配列を使いたいなら Vectorクラス使えってこと。
STLっぽいね。
var sample:Vector.<URLRequest> = new Vector.<URLRequest>();
for( var i=0; i<3; i++ )
{
sample.push(new URLRequest("./sample_s"+i+".jpg"));
}
//0番表示
var loader:Loader = new Loader();
loader.load( sample[0] );
this.addChild( loader );
639 :
Now_loading...774KB :2010/02/15(月) 23:57:37 ID:eB3rHf6O
亀レスですが、
>>607 >>608 >>609 どうもです。loaderを複数用意してalpha値を変える方法でやると
快適に動くようになりました!
640 :
Now_loading...774KB :2010/02/16(火) 00:13:54 ID:8wA7Mlo3
こんにちは、妹尾です 非常に初歩的な質問だと思うのですが、 loaderで読み込んだswfファイルの再生と停止は、どのようにするのでしょうか?
641 :
Now_loading...774KB :2010/02/16(火) 00:27:27 ID:Jc8RVTBR
Flex3.2(mxml+ActionScript)で学んでいる初心者です。
ttp://livedocs.adobe.com/flex/3_jp/html/skinning_5.html#38789 を参考に作成したプログラムスキンを読み込もうとしているのですが、なかなか上手くいきません。
たとえば作成したプログラムスキンはC:\Apache\htdocs\swfs\skins保存してあり、
プログラムスキンを参照する側のmxmlファイルはC:\Apache\htdocs\swfsに保存してある場合、
コンパイルに関して、mxmlファイル内の<mx:Style>タグ内でのClassReferenceの引数には何を指定すればいいんでしょうか。
これまで色々試したのですが、いつも「定義〜が見つかりません」とエラーメッセージが出てしまいます
642 :
Now_loading...774KB :2010/02/16(火) 00:33:09 ID:zWXelIaj
こんにちは。 作成したムービークリップをステージの左から右に流すというのを 作りたいのです。右に行けばムービークリップをremoveChildで削除 するようにしたいのですが、エラーが出てしまいます。 ムービークリップにはリンケージでmcというクラス名をつけました。 解決するにはどのようにすればよろしいのでしょうか? お願いします。 var MOVE = 10; var enx = 500; var stx = 0; var clip:mc = new mc(); this.addChild(clip); clip.x =20; clip.y = 100; addEventListener(Event.ENTER_FRAME, MovieX); function MovieX(e:Event):void{ if(this.x <= enx){ this.x += MOVE; }else if(this.x >= enx){ this.removeChild(clip); } }
>>642 clipをremoveChildしたあとも、MovieXは実行し続けるよね
そのENTER_FRAMEイベントも削除してみてはどうか?
644 :
Now_loading...774KB :2010/02/16(火) 01:33:26 ID:jWdGNi81
>>642 var MOVE = 10;
var enx = 500;
var stx = 0;
var clip:mc = new mc();
this.addChild(clip);
clip.x =20;
clip.y = 100;
addEventListener(Event.ENTER_FRAME, MovieX);
function MovieX(e:Event):void{
if(this.x <= enx){
this.x += MOVE;
}else if(this.x >= enx){
// ここでリスナーを削除して関数の実行を終了
removeEventLsitener(Event.ENTER_FRAME, MovieX);
// でないとすでにremoveChildしたclipを再度removeChildしようとする
this.removeChild(clip);
}
}
645 :
622 :2010/02/16(火) 02:14:51 ID:mEi+wZtk
>>638 詳細な解説ありがとうございます!
なんとなくそのあたりの扱いが判った気がします。
また自分でいろいろと実験してみます。
回答してくださった方々、本当にありがとうございました!
・・・と、凄い細かい質問なんですが
配列に代入するとき[i]じゃなくてpushでしているのは
Vector型だから安全(?)のためにしているのか
pushのほうが相対的に早いのか
慣習なのか、またいずれでもないのか
よろしければ教えてください。
646 :
Now_loading...774KB :2010/02/16(火) 02:46:09 ID:jWdGNi81
>>645 どっちでも結果は同じだよ。
pushは最後尾に追加ってことで、この場合[i]=にしても同じ結果が得られる。
好きなやり方でいいと思うけどこの場合空の配列に順番に追加していってるってことで
pushが書き方としてはキレイなんじゃないかな?
647 :
622 :2010/02/16(火) 03:00:15 ID:mEi+wZtk
>>646 回答ありがとうございます!
くだらない質問につき合わせてしまってすみません。。。
たしかにpushのほうが綺麗な書き方ですね。
おかげさまで疑問が解けてすっきりしました。
>>645 [i]でもpushでもどっちでもOKですがいくつか違いが。
Vector型はインデックスを非連続にできません。
var vec:Vector.<Number> = new Vector.<Number>();
vec.push( 0 ); //OK
vec[1] = 1; //OK
vec[5] = 2; //インデックス範囲外ランタイムエラー
ランタイムエラーはいろいろ面倒なのでpushの方が楽です。
が、アクセス演算子だと利点もあります
・コンパイル時に型チェック
・処理速度が早い
はじめから数がきまってるか、とても多いならアクセス演算子、
いくつかわからないならpush()/unshift()って感じでしょうか。
649 :
622 :2010/02/16(火) 15:30:13 ID:mEi+wZtk
>>648 なるほど。
お得な情報ありがとうございます!
処理速度はやっぱりできるだけ(型など)指定したほうが速いんですね。
ご丁寧にありがとうございました。
650 :
642 :2010/02/16(火) 23:06:50 ID:zWXelIaj
>>643 さん
>>644 さん
コピペしてみたらエラーがなくなり通りました。
ありがとうございます。
651 :
Now_loading...774KB :2010/02/17(水) 02:54:04 ID:FAc/CqLP
test という名前のフレームがあります。そこにジャンプする、actionscriptを作りたいと考えています。 this.gotoAndStop("test"); という形ではなく、以下のように、 飛び先のフレーム名を関数に納めたい、と考えています。 ID="test" this.gotoAndStop(ID); しかし、この形だと、 " の部分が認識されないため、フレーム名testに飛びません。 " の部分も認識されるように記述するにはどうすれば良いでしょうか。
>>651 それで飛ぶはずだが。
IDに入ってるのは文字列なんだから、ダブルクォーテーションの認識とか考える必要ないよ。
移動しないとしたら、なにか別のところに原因がある。
653 :
Now_loading...774KB :2010/02/17(水) 04:59:41 ID:FAc/CqLP
>>652 ありがとうございます。
" は認識されるんですね… traceを行ったとき、 " が入っていなかったので
「認識されていないのか?!」と思ってしまいました。
とりあえず、根本的に
this.gotoAndStop("test");
で、test というフレームに移動自体が行われていない事が判りました…
原因は確かに他の何かにありそうです。
ありがとうございました。
654 :
Now_loading...774KB :2010/02/18(木) 12:23:29 ID:TxK6VKlT
AS3.0です 生成してaddChildしている複数のSpriteを、一時的に表示上消して、また後で表示するようにしたいのですが visibleのtrue,falseを変更して切り替えるのがセオリーなのでしょうか? Spriteが巨大で、BitmapがaddChildされていたりで、visible変更で消しただけでは 動作が重たいままのような感じがします。 そこで、removeChildで外して消して、表示する時にaddChildという方法も考えていたのですが 外している間ガベージコレクションの対象になり、消される恐れがある?という話も見かけて悩んでいます どういった方法がベストなのでしょうか?
>>654 visible=falseで十分でごわす
656 :
Now_loading...774KB :2010/02/18(木) 13:48:15 ID:PoQ3kueV
お力お借りしたいのですが、 AS3.0でjpegEncoderを使って、キャプチャをとりたいと思います。 キャプチャする範囲を、MCのドラッグドロップした時の位置にして、MCはvisible =false;をして表示させずに後の背景だけのキャプチャをとりたいのですが、何故かキャプチャ部分が白く塗りつぶされてしまいます。良い解決方法ありませんか?
658 :
Now_loading...774KB :2010/02/18(木) 15:11:25 ID:zwjPZnqY
ActionScript2.0です。使っているFlashはcs2です。 4つ、ムービークリップがあります。それらは空間的に、今、現在は「ばらばら」です。 平行としては、位置は同じですが、そのばらばらなポジションがそこで問題になります。 各個点在している、というべきでしょうか。いわゆる不一致です。 大きさもバラバラの物があるとします。 このFlashを展開したとき、開きます。それはブラウザでもその単体でのファイルでも 両方に適しているのですが、彼らが「独自」に射程(?)接触(?)領域のような ものを判断し、各々の判断で動きます。ただし、動いている過程は見せません。 求められている物は結果のみです。空間に対して同じピクセルです。 きちんと並んでいます。同じ間隔で作ります。 さて、そこで問題なのですが、これらには別々に名前(インスタンス名)があります。 それでも実行させる場合には、どうすればいいですか?
エキサイト翻訳で頼む
660 :
656 :2010/02/18(木) 15:30:28 ID:PoQ3kueV
ソースはこんな感じです。MCの非表示のタイミングがおかしいのでしょうか… import flash.display.BitmapData; import flash.display.Bitmap; import com.adobe.images.JPGEncoder; import flash.utils.ByteArray; var matrix : Matrix = new Matrix(1,0,0,1,0,0); var color : ColorTransform = new ColorTransform(1,1,1,1,0,0,0,0); var rect : Rectangle = new Rectangle(mc.x,mc.y,300,300); var bmp_data : BitmapData = new BitmapData( 300 , 300 , true); var phpPath:String = "add.php"; up_btn.addEventListener(MouseEvent.CLICK,cap2jpg); capBtn.addEventListener(MouseEvent.CLICK, cap); up_btn.enabled = false //キャプチャbtn function cap(event:MouseEvent) { //mc非表示 mc.visible = false; bmp_data.draw(stage, matrix, color, BlendMode.NORMAL, rect, true); var bmp_obj : Bitmap = new Bitmap( bmp_data , PixelSnapping.AUTO , true); stage.addChild(bmp_obj); bmp_obj.x = mc.x; bmp_obj.y = mc.y; capBtn.enabled = false; up_btn.enabled = true; }
そのコピペ誰得
>>660 試してないけど
matrix.ty = -mc.y;
matrix.tx = -mc.x;
rect = null;
かな
drawする対象(stage)の位置指定がmatrixで、ビットマップデータ上のどこに写すかをrect指定だった気がする
あとmcを非表示にしなくてもdraw(background_mc)みたいにして直接背景だけを写すことも出来る
>>663 上の三行追加でうまく動くようになりました。本当にありがとうございました。
667 :
654 :2010/02/19(金) 11:10:06 ID:y4FUwLTs
>>655 ありがとうございます
visible=falseを設定してみても、全体的な動作が重いままというのは
他の部分の作り方に問題があるって事ですかね・・・
全体的に見直してみます
格闘ゲームをflashで作ろうとしているのですが、敵の挙動をASで再現する為には 一体どうすればいいですか? 構造はキャラのMCに弱攻強攻とかラベルつけてgotoさせてます 明らかにスレ違いなんですけど、参考HPとか知ってたらよろしくお願いします
ガイルで説明すると 立っている状態: 相手が離れている→しゃがみ状態に移行 相手が近い→近づいてみる 相手がすごく近い→しゃがみキック しゃがんでいる状態: 相手がジャンプ中→サマソ 相手が遠い→ソニック→立ち状態に移行 このように、状態と状況によって行動を決定するAIを組めばいい 検索ワードは状態遷移とかオートマトンとか
>>669 なんか全部ifで済みそうですね・・・・
有難うございます
>>670 さらに高度になると、学習と適応とかゆらぎとかいくらでも話題は発展するんだけど、
その辺の話なら、書籍だけど「ゲーム開発者のためのAI入門」とか読んでみたほうが良いかもね。
sharedobjectについて詳しく教えてください
ぐぐれ
全部ぐぐれ
676 :
Now_loading...774KB :2010/02/24(水) 02:49:04 ID:ZzOLNSu8
すいません。かなり文法チックですが。 カスタムクラスを作るさいの、静的プロパティの利点がよくわからないのです。 似たような定数の利点はわかりますよ。でも静的プロパティの利点がよくわかりません。 普通のプロパティ(変数)と比べて何が利点なのか、判る方教えてください。
677 :
Now_loading...774KB :2010/02/24(水) 06:06:51 ID:lS/O11BU
>>676 静的な関数で使えるのは静的な変数だけだからそういう使い方でないの?
例えばコンストラクタ内でtrueに書き換える静的プロパティを作れば そのインスタンスが一度生成されたかどうか分かる。 それを応用すればSingletonが可能になる。
679 :
Now_loading...774KB :2010/02/24(水) 13:06:46 ID:ZzOLNSu8
ありがとうございます。 本の例題をみても、インスタンスが何回生成されたとか。 そういう使い方あるんですが、それぐらいしか使い道ないのですかね。 (インスタンス数えるんだったら、配列につっこんでlengthで数えたほうが。) 静的な変数でなければ、使えないというような使い道ありますでしょうか?
>>679 ・いちいちインスタンスを作りたくないとき
・インスタンス同士で値を共有したいとき
・常にひとつしか存在して欲しくないとき
・パッケージ内のグローバル変数のお供に
とかかな
>>679 ・クラス固有の定数として使う
・インスタンスを生成しなくても使える
Math.PI とか MouseEvent.MOUSE_ DOWN とか使ったこと無いですか?
またインスタンスが不要ですから、コンストラクターの引数や静的関数内なんかでも使えますよね
・省メモリ
インスタンスごとに確保されないのでメモリを食いません
変換テーブル(リニアでない、たとえばローマ字→かなとか)なんかは静的にするべきかと
・最適化される
正直Flashで最適化されるかはわかりませんが、多くのコンパイラでは最適化されます
>インスタンス数えるんだったら、配列につっこんでlengthで数えたほうが。
その配列を静的プロパティで持つのが頭いいですよね
>静的な変数でなければ、使えないというような使い道ありますでしょうか?
・インスタンス自身が自身のクラスのインスタンス数や参照カウントを知ること
・内部イテレータ的なものを実装するとき
……など、インスタンスが複数存在し、
それを自身で管理するクラスなら必須じゃないでしょうか
682 :
Now_loading...774KB :2010/02/24(水) 23:08:43 ID:ZzOLNSu8
>677〜>681 ありがとうございます。 定数として、利用以外に静的プロパティは、結構重要な役割あるんですね。 今まで仕事でもぐりぐりとクラスから作成して作ることあんまりないので、 そこまでやれるまで、もう少し勉強と応用に励みたいと思います。
683 :
ちゃん :2010/02/24(水) 23:29:24 ID:W50H5sHF
はじめまして 質問がございます。 FlashとActionScriptをつかってサイトをデザインする際、 今 主流で使われているのは ActionScript 2.0とActionScript 3.0のどちらですか?
余裕で3
(Papervision3dで大量のBitmapAssetMaterialを リンケージから読み込もうとしています) リンケージするクラスの総数が100個を越えるあたりから パブリッシュができなくなってしまいました。 5005エラーという原因不明エラーです。 ググッて色々検索しましたが、 パブリッシュ時にメモリが足りなくなっているみたいです。 解決策として以下の方法ぐらいしか思いつきません・・・ ・画像を外部読み込みにする方法 →すでに試していますがswfに画像を最初からはめこんでおくリンケージに比べると、 ローディング時間の長さが比べ物にならないぐらい遅くなります。 すばやい外部ファイル読み込みをする方法と言うのはあるのでしょうか。 ・100種類の画像を100個の個別のリンケージのクラスに出すというのは 考え方間違ってますでしょうか?? パブリッシュの時間が異常にながくなって作業にならないぐらいです
685です 色々ググッてみると、 BulkLoaderライブラリみたいに大量の外部ファイルを簡単に読み込める ライブラリがあることがわかったんですが、 これって自分でLoaderで自作した複数外部ファイル読み込みと比べて 高速化が期待できるのでしょうか。 自分でやってる場合は、 一つの外部ファイルを読み込むごとにLoaderをnewして読み込んでいくという方法で やってるので、複数同時という仕様にはなっていません。 Loaderの複数同時に並列読み込みって可能なんでしょうか
HTTPリクエストは全てブラウザ経由 あとは分かるな?
ローカルの場合どうなるの?
>>685 1.複数の画像を1枚にまとめリンクし、
ランタイムで分割、BitmapMaterialを使用する
2.画像だけのswfを最適化無しでビルドし、
ランタイムでそのswfを読み込む
(最適化無しだったら5005でないかも)
3.たくさんのファイルを読み込むとオーバーヘッドが大きいので
アーカイブしたものを読み込み、ランタイムで解凍する
思いつくのはこれくらいかなあ
685です
>>687 どういうことでしょうか?
ブラウザ経由だから重いってことですか
>>688 ローカルだとサクサクで、
外部画像でも一瞬で読み込まれます
>>689 目から鱗でした
1番の方法はすごくありだと思いました!
前に1枚物の画像をバラバラにうごかしたことあるので、
それをBitmapMaterialにしてみようと思います。
2番は、
swfをテクスチャで貼り付けれましたっけ・・・?
ト思ったらありました。
http://mtl.recruit.co.jp/blog/2008/04/papervision3d_swf.html つまり、swf内に50枚分の画像の50個のリンケージ登録済みのswfを
読み込んでそれらを個別に読み出して貼りつけて行くということでしょうか?
3番
as3 zip libraryというのがあったんですね。
これだと1ファイルを読み込むノリでいけそうですね!!!
非常にアドバイスになりました!
ありがとうございました!!
lite 1.1 使いのへッポコな俺が2.0に挑戦中なんですが 複数のmcをforとeval使って同時に動かしていたスクリプトの 翻訳につまってます。 どなたかご教授くださいm(_ _)m lite 1.1だと・・・ for (i = 1; i < 9; i++) { eval("/s/l" add i)._x += a; } ↓ 2.0だと・・・???
692 :
Now_loading...774KB :2010/02/25(木) 17:35:41 ID:4+Dd4Tpz
質問ですが、テキストフィールドに強制的にフォーカスを当てたりすることは asでできますか? 同じswf内のほかのオブジェクト(ボタン等)をクリックすると当然フォーカスは外れると思うのですが、 そういう場合も強制的にテキストフィールドへフォーカスを戻したいのです。 何か方法があればご教示願いたいです。
外部FLVの再生後、別のキーフレームに移動するスクリプトについて質問です。 現在以下のようにスクリプトを組んでいるのですが、 「**Error** Scene=シーン 1, layer=actions, frame=1:Line 21: Syntax error. Total ActionScript Errors: 2 Reported Errors: 2」 というエラーが出て、FLVを再生せずに指定したフレーム20まで飛んでいってしまいます。 ------------------------------------------- stop(); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); netStream.onStatus = function (info) { if (infoObject.code == "NetStream.Play.Stop") { gotoAndPlay(20); } video.attachVideo(ns); ns.play("1_1.flv"); ------------------------------------------- 記述に足りない部分、また間違いなどありましたらご教授いただければ助かります。 よろしくお願いいたします。 作成環境はFLASH8 AC2です。
693です スクリプトのサンプルをいくつか調べ組み合わせているうちに自己解決しました。
>>690 >つまり、swf内に50枚分の画像の50個のリンケージ登録済みのswfを
>読み込んでそれらを個別に読み出して貼りつけて行くということでしょうか?
外部swfにリンケージとそれを返す関数だけ用意しておき、
本体からリンケージを呼び出し、外部swfにあるリンケージを取得、
なんてのを考えてました。swfだとコスト高そうですね。
>>693 this.s["l
>>692 stage.focus = textField;
>>691 ごめん早漏しちた。
this.s["l"+i]._x += a;
かな? ちょっと自信ない。
ドットシンタックス でググってみてはどうでしょう。
>>693 しかもレス番ちがいごめん。
21行目みてみようよ。
netStream.onStatus = function (info) {
↓
netStream.onStatus = function (infoObject) {
ここじゃね?
698 :
Now_loading...774KB :2010/02/25(木) 20:26:44 ID:Od52RLec
>>696 回答ありがとうございますm(_ _)m
その記述でもやってみたのですが、うまくいかなかったので無理に翻訳せず最初から書き直してみました・・・。
まだ2.0の基本も理解して無い上体でのつまづきだったので、
なにがどう間違っていたのかもわかりませんが
(変数を1文字だったものを2文字以上にしたら意図どおりにうごいたり・・・)
もう少し基礎をきちんと学ぼうとおもいました(泣
699 :
Now_loading...774KB :2010/02/26(金) 11:44:29 ID:zVRitFKI
「ActionScript 3.0 : デザインパターン」って本良い? 今は「オブジェクト指向のこころ」と結城本で学習しているんだけど ASに特化した本も必要かどうかと。 高いし尼のレビューだと誤字脱字がひどいらしいので悩んでる。
703 :
700 :2010/02/27(土) 14:01:44 ID:6EV0Mcnm
>>702 今の2冊がGoF本の解説本みたいなものなので、AS用のはどうかと
思っているんだよね。デザインパターン以外にASの学習としても役に
立つならいいかなと。
今のはJavaサンプルばかりだけど、クラスで違うのは抽象クラスが無いぐらい
だからAS用デザインパターン本にこだわる必要はないかなあ。。。
すんません質問です mapっていう大きめのmcがあって、 map内にchar1とchar2というmcが配置されていて、 char1とchar2の距離に比例してmapを拡大縮小させるには どうしたらいいですか?
>>704 それぞれのcharのrectを合体させたrect(そんな機能があったはず)と
mapのrectとの大きさを比較して倍率を決めたらいかがか
706 :
Now_loading...774KB :2010/02/27(土) 17:48:33 ID:+z9IgjdM
flashをスタンドアロンで吐き出します。 そのexeファイルは合計で40Mほどある複数の外部swfを読み込みます。 ローカル環境では外部swfを読み込むのにさほど時間がかからないのですが、 今回CDのため読み込むのにとても時間がかかります。 CDから一気に読み込むために、画面が停止していまい、見ているとPCが固まったのではないかと混乱してしまうようです。 そのため、起動時にパソコン画面のままのように見せて、読み込みの待ち時間をごまかそうかと考えています。 1.スタンドアロン起動時1×1で立ち上げ、外部swfを読み込み終了後フルスクリーンにする。 2.スタンドアロン起動時パソコンの画面外で外部swfを読み込み、終了後swfの位置をパソコン画面内に移動してフルスクリーンにする。 どちらの方法の方が現実的でしょうか? 自分で気がついている問題点として、 1の場合、「esc」を押すと1×1に戻るため、ステージサイズが小さくなってしまいます。ステージのサイズは変更できないですよね。 2の場合、そもそもスタンドアロンの立ち上げる位置を変更できるのか? があります。
>>706 exeってフラッシュのプロジェクタのことでしょ?
だとしたら2は無理だと思うよ。
708 :
Now_loading...774KB :2010/02/27(土) 22:38:34 ID:RMF0M78K
709 :
Now_loading...774KB :2010/02/28(日) 00:13:12 ID:9uLkHiDo
as 3.0を勉強しだしたばかりなので、変な質問かも知れませんが、アドバイス下さい。 やりたい事 7種類のmcからランダムに3つのmcを連続で再生したい リンゲージでhoge1〜hoge7という連番のインスタンス名を付けてmcをライブラリに読み込むことが出来ました。 また、1〜7の数字から重複のない3つの数字の配列を作る事も出来ました。 つまづいているのはここからで、ランダムに生成した数字の含まれるmcを連続はおろか、再生させる事ができません。 どなたか検索ワードだけでも教えてもらえれば助かります。 よろしくお願いします。
AS2.0で二次配列のソートってできますか? array = [ ["ラムザ",10]; ["デイリータ",5]; ["アルガス",20] ]; みたいな配列だとしてLvの低い順にarrayを並べ替えたいんですが、どうすればいいか わかりません
>>711 _array=new Array();
_array.push({charaname:"ラムザ", charalevel:10});
_array.push({charaname:"デイリータ", charalevel:5});
_array.push({charaname:"アルガス", charalevel:20});
_array.sortOn("charalevel", Array.NUMERIC);
のようにしたほうがいい。
Array.NUMERICは16と書いてもオケ。
ダブルクォーテーションつくの?
>>709 リンケージでってことはクラス名につけたのかな。
動的にクラス名の付いたライブラリのアイテムをインスタンス化したいってことなら
ttp://f-site.org/articles/2008/01/17051234.html >>711 こんなんどうだろう
var oldArray:Array = new Array(["ラムザ", 10], ["デイリータ", 5], ["アルガス", 20]);
var newArray:Array = new Array();
var tempArray:Array = new Array();
var count = oldArray.length;
for (i = 0; i < count; i++) {
tempArray.push({idx:i, val:oldArray[i][1]});
}
tempArray.sortOn("val",Array.NUMERIC);
for (i = 0; i < count; i++) {
newArray[i] = oldArray[tempArray[i].idx];
}
for (i = 0; i < count; i++) {
trace(newArray[i]);
}
>>711 ほい、これだけでOK。
array.sortOn( 1, 16 );
716 :
Now_loading...774KB :2010/03/03(水) 07:03:38 ID:DN/C/iAo
すいません。質問です。 CS4 AS2 win7を使って製作しています。 写真データーを読み込み表示するところまでは できたのですが、消し方が解りません。 var f03:MovieClip=_root.createEmptyMovieClip("photoFrame03", 4); f03._x=f02._x=190; f03._y=f02._y=190; var MCLoader:MovieClipLoader = new MovieClipLoader(); MCLoader.loadClip("photo02.jpg", f03); ご指導おねがいします
違うオブジェクトの入った二次配列ってslice操作出来ないですか?
中身がなんでも関係無いと思う 正しくsliceしているならば
719 :
Now_loading...774KB :2010/03/03(水) 08:14:57 ID:DN/C/iAo
すみません!AS3で教えてください。 あるMovieClipの中に配置されているMovieClipに 順番にアクセスしたいのですができません。 var p:mcParent = new mcParent(); for each (var mcChild:MovieClip in p) { trace(mcChild.name); } p(mcParent)を静的にステージなどに配置していると foreachでアクセスできるのですが、上コードのように 動的に生成するとアクセスできないのです。。。
721 :
720 :2010/03/03(水) 10:43:04 ID:F7dRjBDK
すみません、若干訂正です! mcParentをリンケージ設定していると、foreachで子要素にアクセスできません! リンケージ設定していないとアクセスできます・・・ 何故でしょう・・・
>>720 子オブジェクトは getChildAt で取得するんじゃないの?
for...in はいろいろと罠が多いから、
よくわからないなら、使わない方がいいよ。
for inって取得順番がめちゃくちゃだったりするよな
725 :
Now_loading...774KB :2010/03/03(水) 17:29:26 ID:K3qNZYDd
flashでGoogleサイト内検索を利用したサイト検索機能を作りたいのですが、 ボタンにどのようなActionscriptを書けばよいのでしょうか 単純に下のようにフラッシュを作ったのですが、 [ここに文字 ][検索] 検索ボタンを押した後に、検索結果が乗ったGoogle検索のホームページに飛べればよいだけです ちなみに、アクションスクリプトはド素人です・・・・
>>726 var search_text:String... をテキストフィールドのフラッシュに、
var search_url:URLRequest... を検索ボタンに導入してみたのですが、まったく動きません
また、いい忘れていたのですが、恐らくASは1か2です。それが原因でしょうか?
as3.0での質問 BitmapDataにlock()メソッドを使った場合、unlock()メソッドを使わない 限り描画された表示内容が反映されないと思ってたのですが違うのでしょうか? 実際にlock()だけしてBitmapDataに描画処理をしても表示内容が反映されてしまいます。
詳しく確認してないけど、lock()中は、 「BitmapDataを参照しているオブジェクトに、中身の変更が通知されない」 ものだと自分は理解してます。 毎フレーム更新時に行われる再描画を、 (BitmapData変更時のイベントの通知の影響で) 1フレーム中に何度もやり直すという無駄を省いているだけで、 次のフレームに移ったら、 そこで普通に再描画されるので変更は反映されると。
>>729 なるほど、そういう仕様でしたか。
情報ありがとうございました。
test
AS2にて4つのフラッシュボタンを作成し、それぞれにリンクを貼ろうとしています onClipEvent (load) { num = 1; this.title1.gotoAndStop(num); this.title2.gotoAndStop(num); this.title3.gotoAndStop(num); this.title4.gotoAndStop(num); this.title5.gotoAndStop(num); this.title6.gotoAndStop(num); } onClipEvent (mouseDown) { getURL("***.html", "blank"); } というスクリプトを各ボタンに張っているのですが、一つをクリックしただけですべてのボタンのリンクが発動してしまいます (mouseDown)の部分を(release)に変更すれば、その問題は解決するのですが、カーソルを重ねた時のアニメーションが発動しません どこが悪いのでしょうか・・・・・
>>732 on(press) じゃなかったっけ?
AS2懐かしすぎる。
あるいはヒットテストを行う。
onClipEvent (mouseDown) {
if (this.hitTest(_root._xmouse, _root._ymouse)) {
getURL("***.html", "blank");
}
}
onClipEvent(mouseDown)はマウスが押下されたとき、そのイベントハンドラを持つ全てのムービークリップがイベントを受け取る。
なので
>>732 だとボタン以外の領域をクリックしてもリンクが発動する(はず)。
対して、on(press)は指定されたインスタンス(この場合はボタン)が「押されたぞ」というイベントが、そのインスタンスだけに送られる。
質問失礼します。
Box2Dを使用してみたく、
ttp://sourceforge.net/projects/box2dflash/から最新のものをダウンロードしました 。
展開してHelloWorld.flaをパブリッシュすると以下のエラーが出ます。
b2World.as、行 871:
1046: 型が見つからないか、コンパイル時定数ではありません : Vector。
public function RayCastAll(point1:b2Vec2, point2:b2Vec2):Vector.<b2Fixture>
b2World.as、行 917:
Warning: 3590: ブール値が必要ですが、void が使用されています。ブール式に型強制されます。
public function IsLocked():Boolean
return (m_flags & e_locked) > 0;
}
>>735 自分の環境(Flashの何を使ってる、だとか FlashDevelopです、だとか)と、その使用バージョン、
他に何かやらなかったかなどを明記しないと
flashplayer10ようのものとおもわれますのでcs4もしくはflexsdkをごりようください
あーほんと重複すいません。。。
ん、、なんか上手く書き込みできてないようです、すみません...。 環境は Mac OSX 10.5.8 Flash CS4 Professional 10.0.2 ダウンロードしたファイルはひとまず/Users/user/Downloadsに展開しており、 これは特に問題ないと思います。 宜しくお願いいたしますー。
twitterscriptでの認証は出来ないんですかね? 知ってる方教えてください 出来ればOauth認証がいいんですが Basic認証でも構いません サイトに飛ばずflashだけで処理したいんですが
742 :
720 :2010/03/04(木) 14:23:24 ID:ypkIGwTO
>>723 numChildrenとgetChildAtを使ってできました!
ありがとうございました。
744 :
Now_loading...774KB :2010/03/04(木) 20:34:18 ID:88f/Rm4+
actionscript 2.0 ムービークリップ 「mc_1」があります。 数ピクセルほど離れて、隣にムービークリップ 「mc_2」があります。 「mc_1」と「mc_2」の間の「距離」を求めるActionScriptを組みたいと考えています。 どのような記述を行えば良いでしょうか?
746 :
Now_loading...774KB :2010/03/04(木) 20:57:00 ID:88f/Rm4+
>>745 actionscript 三角関数
で検索して、それらしいコンテンツをいくつか見つけました。
中学生から習うような、難しい解説がいろいろ…(汗
でも、1から10までご丁寧に解説してくれてるので、きちんと熟読すればなんとかなりそうかも。
とりあえず、頑張ってみたいと思います。
アドバイスありがとうございました。
三角関数は高校からだろ?
つーか距離を求めるのに三角関数と答える方もどうかと思うけどな
調べたのですがちょっと解決できなかったのでお願いします。 AS2です。 attachSoundで割り当てたサウンドオブジェクトの内容を参照するにはどうしたらいいのでしょうか?
内容ってなに?
分かりづらくてすみません 例えば _root.a01.attachSound("test01"); とした場合 _root.a01にattachされてる"test01"です。 複数の場所からattachSoundをかけているので、現在の割り当てを参照したいということです。
フラグでももたせたら?
そうですかぁ。やり直した方がよさそうですね。 直接参照は出来ないみたいですね。
0〜1の乱数で1になるにつれて確率が増してく分布の乱数はどのようにしたらできますか。 x軸に出る値、y軸に出現頻度をとったとき Math.random()をy=1(ってか定数)の式とするとy=xの式みたいなやつです
var n=Math.random(); trace(1-n*n); って、どうよ。 のみすぎちゃったかな。
Math.sqrt(Math.random());
AcitonScriptを書くツールってFlexがいちばん人気あるの?
developerちゃんも忘れないで!
>>760 無料ならFlashDevelopもいいよ
764 :
Now_loading...774KB :2010/03/07(日) 16:14:01 ID:1BSv3yAM
ActionScriptの質問とはちょっと違うんですけど、 勉強にFlashに最初から入ってるクラスファイルを覗いてみたいと思ったんですが、 flash.display.DisplayObjectとかのクラスファイルはパソコンのどこにインスコされてるんでしょう? というかそもそも覗けるんでしょうか。
765 :
Now_loading...774KB :2010/03/07(日) 16:14:56 ID:1BSv3yAM
>>764 言い忘れました。
Mac OSX、Flash CS3、ActionScript3のクラスファイルを見たいと思ってます。
検索すりゃわかるんじゃね
767 :
Now_loading...774KB :2010/03/08(月) 14:46:09 ID:Hm4GT9EW
>>764 です。
>>766 検索しても出てこないんです。
それっぽいのはいくつかあったんですが、中身見ると全然違うものでした。
大もとがあると思うんですが、それは見つからないんです。
768 :
Now_loading...774KB :2010/03/08(月) 14:48:15 ID:NMJSoDvw
ActionScript3.0でNumber型より大きい数を扱うにはどうしたらいいでしょうか Number型は53bitですが64bitまで使いたいのです var x:Array = new Array(199,2939,299,232,234,2234,234,243,222); var y:Number = 0; for( var i:int = 0 ; i < 8 ; i++ ) { y = ( y << 8 ) | ( 2 * (x[i] & 255 )) ; // 最後で溢れてyが0になってしまう }
>>768 自分でbigIntとかbigFloatとか作るしか無いんじゃねーの
com.hurlant.math.BigInteger
>>768 ASでデカイ浮動小数点計算をやって大丈夫かいな?
まあ、変数とか解法次第だけど。
HTMLのタグでwidthとheightを100%
>>767 環境設定のクラスパスからしてたぶん
/Applications/Adobe Flash CS3/Configuration/ActionScript 3.0/Classes/
の中のどれかじゃね
.as形式であるのかはわからん
Cairngorm について質問なのですが、 Flexのサンプルで使われていたのと、使うときれいにできそうに見えたので、 探してみたのですが、あまり見つかりませんでした。 実際には、あまり使われていないのでしょうか?
flvをavi等に変換するasなんてないよね?
そもそもFlashでやるものなのか?
ASでやる意味が全く内 普通はffmpegや、それにガワを被せたものを使う
普通で満足するような男にはなりたくないな
バイナリ扱えるようになったから頑張れば出来そうな気もする
781 :
Now_loading...774KB :2010/03/09(火) 23:01:06 ID:vcDRAHMy
質問です、 setIntervalを使って5秒ごとにフレームを変えるスクリプトを 入れてみましたが、最初は5秒で問題ないのですが。だんだん加速して終いには Flashが重くなりフリーズします。 どうすればいいのでしょうか?
setIntervalは一回指定すると繰り返し実行される setTimeoutが一回のみ実行される
>>781 setIntervalが重複して定義されてたりするんじゃないの?
問題の部分と思われる箇所のASさらしてみたら?
setIntervalを使ってる関数をsetIntervalで呼び出してる、って感じかな
785 :
757 :2010/03/09(火) 23:59:10 ID:dgLxgYRI
>>758-759 ありがとうございます。
>>758 さんのは残念ながら期待した結果にはなりませんでしたが
>>759 さんのは期待通りのができました。
あとランダム二個作って足し合わせるのも期待通りになりました。
いろんな確率分布を出せる式をまとめたものはないのかなー
787 :
Now_loading...774KB :2010/03/10(水) 14:22:11 ID:sEZOYvzO
ActionScript3.0でPerlやPHPのcrypt関数と同じ暗号化するモジュールってないですか
as3 crypt
インターフェイスって具体的にどんな時に使うのでしょうか? クラスが何か分からない時にメソッド名を指定する状況…?
>>789 使い方は色々あると思うけど、
多重継承が出来ないから、親子関係にないクラスで共通の機能(メソッド)を持ちたい時とか。
同じ機能を持っているけど、中の実装が全然違う時とか
あんまりいい例が思いつかなかった・・
function destroyObject(obj:IDestroyable)
{
obj.destroy();
}
まぁ、続きはデザインパターン本でどうぞ
>>789 もっと平たい言い方で追記すると、例えばオブジェクト同士のやりとりの中で、
ある約束だけを取り決めたい時に使う。
「こういう引数を受けて、こういう結果を返す、こういうメソッドですよ」 という約束
そういう、やりとりの約束、つまりインターフェースを取り決めるものなので、
まんま interface として宣言する。
これは、あくまでやりとりの約束だけなので、実際に中でどういう処理がされているかは問わない。
例えば、「URLを受け取って、文字列を返すメソッド」 を決めたとする。
実際の実装では、メソッドの中で本当にネットワークに接続するかもしれないし、
あるいは接続したふりをしてどこかから文字列を取り出してるかもしれない。
でもそんな中の事情は、そのメソッドを 「使う側」 からしたらどっちでも構わない。
ただそこに、やりとりの約束だけあればよく、 その約束を守っているオブジェクトであるなら、
どのクラスであっても構わない。
そういう時に使う。
>>791 の例
※ゴメン、Javaでの表記になるけど許して。AS3でも読み替えれば考え方は同じ
public interface IStringGetter {
public String iStringReader(URL url);
}
public class NetworkStringGetter implements IStringGetter {
public String iStringReader(URL url) {
// ネットワークから取得して返す
}
}
public class DummyStringGetter implements IStringGetter {
public String iStringReader(URL url) {
// 適当な文字列を生成して返す
}
}
利用側は、
IStringGetter obj1 = new NetworkStringGetter();
IStringGetter obj2 = new DummyStringGetter();
obj1 も、obj2 も、 IStringGetter として同じように "扱える"
質問です。 入力テキストフィールドが、FireFoxで開くと文字化けします。 例えば「あ」が「0B」となります。 環境はwinXP、CS4、AS3.0、FireFox3.6です。 HTML内のwmodeは空欄にしてみましたが直りません。 どうしたらよいでしょうか?
>>793 input textにデフォルトで日本語入れてみたけど、再現出来なかった
テキストはどこから取得?
あとフォントとかは指定してる?
>>794 テキストは取得するのではなく、ブラウザからの入力です。
日本語を入力してエンターキーで確定すると、化けます。
フォントの指定はActionScriptではしていません。
HTMLのフォントはシフトJIS、UTF-8両方試しましたが、同じ結果でした。
同じ環境の他のFireFoxでは化けないことが分かりました。 私のFireFox固有の問題かもしれません…。
>>796 wmode=transparentで文字化けは確認出来た
調べたら普通はwmodeを無指定かwindowで大丈夫なはず
flashプレーヤーのバージョンが関係するのかも
798 :
793 :2010/03/11(木) 22:56:27 ID:XdBrsXMu
>>797 ありがとうございます。
wmodeの修正で文字化けが直るFirefoxと、直らないFirefoxがありました。
引き続き模索してみます。
ローカルの画像をサーバーへアップロードするプログラムを書いています。 選択したファイルのローカル上の絶対パスを取得するにはどうすれば良いでしょうか? 一通り調べてみたのですがわかりませんでした。 ご教示お願いします。 環境: Mac OSX 10.5.8、Flash CS4
できまへん
>>800 ありがとうございます。
やっぱりそうなんですか〜。。
802 :
Now_loading...774KB :2010/03/12(金) 23:24:48 ID:nDANSJsD
TextFieldでembedFonts=true指定して、埋め込みフォントで表示した場合 TextFieldのではなく、フィールドの中に描画された文字の左上始点(描画文字一文字目の左上の座標) を取得する方法はありますでしょうか? 描画文字された文字のwidth・heightはtextWidth・textHeightで取得できたようですが・・・
やったことないけど textField.getBounds() でどうかな
PHPのページへ、変数をPOSTしながらそのページに転送(ジャンプ)することはできるでしょうか?
できまへん でもJavaScriptを駆使すればいける
>>805 ありがとうございます。
GETで我慢します。
807 :
Now_loading...774KB :2010/03/13(土) 05:25:49 ID:myXX98Dk
配列を結合するみたいに obj1 = {data1:hoge, data2:hoge} obj2 = {data3:hoge} 上のような2つのオブジェクトを結合して下のようにすることはできますか? obj3 = {data1:hoge, data2:hoge, data3:hoge}
808 :
Now_loading...774KB :2010/03/13(土) 06:34:40 ID:C0CPFLpY
AS2でattachMovieの際に、インスタンス名にリンケージ名と同じ名前をつけていいんですかね? test_mc.attachMovie("TEST01", "TEST01", 4); みたいな。何か問題が起こるんでしょうか?
>>808 気をつければだいじょうぶだよ。
できれば違う名前がおすすめ。
同じ名前のやつがいるとめんどくさいでしょ。
>>809 ありがとうございます。助かりました。
> できれば違う名前がおすすめ。
> 同じ名前のやつがいるとめんどくさいでしょ。
なるべくそうしているつもりなんですが、増えてくると面倒くさくなってしまってw。
>>807 そういう機能ないから
自分で関数作るしかないかな
コーポレートサイトのトップページによくあるFLASHで、
画像がスライドしながら切り替わっていったりするのがありますが、
そういうのもActionScriptで書けるんでしょうか?
たとえばこういうのとか。
ttp://www.e-levi.jp/
ポートレートちゃいまんのん
>>812 このぐらいなら10日ぐらい頑張って勉強すれば
タイムライン使わず全部ASだけで書くぐらいできるようになるよ
どなたかお知恵を貸してください。
HTTPServiceを使用して任意のサーバにパラーメータをPOSTで送って
その結果をもとに処理を行うというプログラムを書きました。
↓こんな感じのプログラムです。
<mx:HTTPService id="service"
url="
http://hoge.jsp " result="hoge2(event)" method="POST" />
function hoge2(event:ResultEvent):void{
//何がしかの処理
}
通常は正常にhoge2が実行されるのですが、たまにエラーが出ます。
エラーの内容は
「ReferenceError: Error #1069: String にプロパティ ○○ が見つからず、
デフォルト値もありません。」
といった内容です。
なぜこのようなエラーが出るのでしょうか。
エラーが出ないようにうまく処理するにはどのようにすればよろしいでしょうか。
どうかよろしくお願いします。
Firefoxのみでの現象なのですがAS2.0でSendAndLoadを行う事にどんどん重くなって言ってしまいます これは何が原因なのでしょうか回答宜しくお願いします
flvPlayBackを利用してflvビデオを5本ほど読もうとしています。 ムービーウィンドウは一つだけで、 その中の動画が5つのボタンそれぞれを押すことで、切り替わる仕様です。 問題になっているのは、一つの動画をローディングしだした際に、 別の動画再生ボタンを押すと、音だけが残ってしまう現象がおきてしまいます。 ローカル上だと、その現象は起きません。 なにやら、ウェブ上だと、最初の読み込み時に一瞬、固まっている?ような 読み込みをがんばっている状況があるようで、そのタイミングで別の動画に切り替えると、後発で一つ前の動画の音だけが再生されてしまうようです。 ローカルの場合は、すでにflvが読み込まれているから、 その隙間のタイミングが発生しないので、そのエラーが起きないみたいです。 flvPlayBackオブジェクトに、nullを代入しても効果がないようです また、そのflvPlayBackオブジェクトをremoveChildしても、見た目は消えますが、 音だけは残ります。 確実にロードを中止して、 ガベージコレクションに拾われる方法はないでしょうか??
>>818 817です
完璧です 完全にシャットダウンできました!
ありがとうございました
質問させてください。 パスワードをPHP側へPOSTして認証を得るユーティリティクラスを作成しています。 認証するところまでは良いんですが、PHPからの戻り値を呼び出し側のクラスで「即座に」取得する方法が分かりません。 以下主要部分だけ抜粋です。 //パスワードとパスを受け取って送信するメソッド public function authenticate(password:String, url:String):void { if(_pass) { //クラス内のstatic変数 trace("認証済み"); return; } var _value:URLVariables = new URLVariables(); _value.pass = password; var _urlReq:URLRequest = new URLRequest(url); _urlReq.method = URLRequestMethod.POST; _urlReq.data = _value; var _ldr:URLLoader = new URLLoader(); _ldr.dataFormat = URLLoaderDataFormat.VARIABLES; _ldr.addEventListener(Event.COMPLETE, completeHandler, false, 0, true); _ldr.load(_urlReq); } //PHPからの戻り値を受け取る private function sendCompleteHandler(event:Event):void { var _returnedValue:URLVariables = new URLVariables(event.target.data); trace(_returnedValue.returned); event.target.removeEventListener(Event.COMPLETE, completeHandler); } こういう場合の常套手段などありましたらご教示ください。
821 :
820 :2010/03/15(月) 17:31:04 ID:EXkQZog0
最後のsendCompleteHandlerはcompleteHandlerの間違いです... よろしくお願いします。
822 :
Now_loading...774KB :2010/03/16(火) 11:05:05 ID:y39AscWm
Tweener.addTween(mc5, {x:mcx[0], y:mcy[0],scaleX:2,scaleY:2,time:1,transition:"liner",delay:0.5}); で2倍に拡大するのはできるんだけど中心の位置から拡大はできないのかな? これだと左上からしかできないだけど だれか教えて
824 :
Now_loading...774KB :2010/03/16(火) 11:31:06 ID:VxbSCOM4
as2でボタンの関数作っています。 それで困っていることがonReleaseのときのiが全部8になってしまいます。 1〜7の値が欲しいのですがどうすればいいでしょうか? function btnSet():Void { for (var i = 1; i<=7; i++) { _root.gnav["btn_"+i].onRelease = function() { _root.gotoAndStop(10*i) }; } }
>>824 iの値は保持されていないので、別途_root.gnav["btn_"+i]に変数として持たせるか
ボタンの名前から数字を判断させるかなどする。
>>824 これは、i のスコープが for 内でなく関数 btnSet() スコープだから。
というわけで for 内スコープを with で作ってやれば OK。
for (var i = 1; i<=7; i++) {
with({ i:i }) {
_root.gnav["btn_"+i].onRelease = function() {
_root.gotoAndStop(10*i)
}
}
}
もっと素直に、with の中身を別関数にしてやるのでも OK。
C とかやってる人ははまりやすいよね。
# AS2 って無名関数使えないんだっけ?
なんでそんな仕様なんだろ スコープ広くとっても良い事ないのに
>>825 >>826 変数持たせてできました。
理屈は理解できたのですがwithだとうまくいきませんでした。
ありがとうございました。
As3でパブリッシュに1分半ぐらいかかるとんでもない状況になってます。 なにが原因なのか考えていますが、普通なにがパブリッシュの時間を長引かせる原因となるのでしょう? 以下の二つぐらいでしょうか? ・importしてるクラスの数が多すぎる ・Flashのライブラリのリンケージから作ってるオブジェクトが多すぎる 特に、papervision3dなどのライブラリはやっぱり、読み込んでいくと 重たくなっちゃうんでしょうか
フォントの埋め込みと動画が一番時間かかるかな 画像とかも毎回圧縮してると思うから、画像が多くても遅いかも
AcitonScriptってなにを見て勉強すればいいの?
他のOOな言語知ってりゃ違うところだけ押さえればいいけど 最初からだったらやっぱ入門書買うべきだろうよ
久しぶりにレスする
>>830 papervision3d込みのパブリッシュは確実に重くなる
>>832 お薦めの本
「基本からしっかりわかるActionScript 3.0」(森 巧尚 著) 毎日コミュニケーションズ
「一週間でマスターする ActionScript 3.0」(クジラ飛行机 著)毎日コミュニケーションズ
毎日コミュニケーションズは良書が多い。
>>820 ですが、
今のところPOST用クラスに戻り値をBooleanで返すメソッドを設けて、
それをメインのクラスからTimerで監視し、trueが返って来た時点でTimer.stop()する
という感じでやり過ごしてます。
もの凄く不細工な実装だと思うんですが、こんなもんでしょうかね。。
>>836 よくわからないんだけど、たとえば
var isLogin:Boolean = authenticate(password, url);
if (isLogin) {
//認証後の処理
}
みたいにしたいってこと?
ASは基本的にそういうのできないから、そういうクラスを実装するとしたら
public function authenticate(password:String, url:String, callback:Function):void {//コールバック関数を追加
//省略
private function sendCompleteHandler(event:Event):void {
var _returnedValue:URLVariables = new URLVariables(event.target.data);
event.target.removeEventListener(Event.COMPLETE, completeHandler);
callback(_returnedValue.returned);//コールバック関数に結果を渡して呼び出し
}
//呼び出し側
AuthClass.authenticate(password, url, onComplete);
function onComplete(result:String)
{
//その後の処理
}
な感じかな
838 :
820 :2010/03/17(水) 02:40:19 ID:GuUdXyo3
>>835 2冊目の方は避けたいとこだなあ。
中途半端で逆に混乱しそうな印象を受けた。
ちゃんと身につけるならやっぱりColin氏のオラ本は読んでおきたい。
>>832 というわけで、全くの初心者なら
・Adobe Flash CS4 詳細!ActionScript3.0入門ノート(ソーテック) - 大重美幸
・ActionScript3.0 プロフェッショナルガイド(マイコミ) - 中野文雄
ある程度OOPの概念が分かっていれば
・詳説 ActionScript 3.0(オライリー) - Cilin Moock
・Javaのデザパタ本やphpに手を出してみる
・国内外のFlasherブログを隈なくチェック
など、個人的にお薦め。
でもまあ、結局は自分のチョイスです。
それにしてもFlashCamp感動的だったなー
うわ、名前入ったままだった。。
>>837 ありがとうございます!
そのものズバリ、でした。
コールバック関数、、何で思い付かなかったのか。。
全然修行が足りないですね、精進します。
とにかく感謝です!
841 :
Now_loading...774KB :2010/03/17(水) 04:28:51 ID:FKBOoSmT
今までタイムライン派だったのですが、 シーン数が多くなりそうなので、 配置したボタン内のアクションにシーン名を読み込んで ムービークリップ制御しようと四苦八苦中です。 AS3は初めてなのでだいぶ適当だと思いますが、 「i001」というクリップの中のインスタンス「p001」を動かすよてい。 on (release) { tellTarget ( "/i"+ { public function get name() :String return _name;} + "/p001"){ nextFrame(); } } public function get name() :Stringに ':' が必要です。 + "/p001"){ にシンタックスエラー が出てしまいます。 いろいろやっているものの進みません。 そもそも構造が…ということかもしれませんが、どこが間違っているのでしょうか。 物凄い勢いでお導きください。。この時間に。。
基本から勉強しましょう
すんません、
>>838 訂正。ひどい間違い。
× 中野文雄
○ 野中文雄
× Cilin
○ Colin
基本からやり直します。
>>841 なんか答えようとしたら頭が痛くなったw
これはもう勉強しなおせとしか言えないな
>>841 なんで今更TellTargetとかなってるのかわからんが、
たいしたことやらんなら、そのままAS1だかAS2でいいんじゃね?
つか、どっちにしてもまずシーンやめろ。
現状、数字の読み方もわからない人が中学の数学やろうとしてる感じなので
まずは基本から勉強したほうがいーです。
AS3とそれ以前は別物なので、勉強するならどちらかに絞らないと混乱するよ。
>>838 FlashCampってTwitterの中での話題のこと?
やべー、AS3てスクリプトを別ファイルで作るんかいな。 今までAS1からAS2って機能追加程度だったのに AS3からはまったく別もんじゃん。 ASバージョン変えたら全編早送りになってビビったw ほとんど作り直しだー。 無理な質問してた様ですんませんw
バージョンごとの定義がややこしいがAS2からクラス使える。 Flash4 ( タイムライン ) →AS1 ( prototype )→AS2( クラス )→AS3 (クラス) となってきてるからAS2とAS3は違いは大きいが開発手法はかなり近い。 AS1やFlash4のスクリプト込みでAS2と言う人が多いけど混ぜない方が分かり易いと思う。
ここが適切なスレかどうか分かりませんが。 Adobe Flash CS~とAdobe Flexの違いを教えてください。
FLASHはデザイナ向けで直感的に操作できるFlexはプログラマ向けでほとんど全てプログラムで作成する
852 :
Now_loading...774KB :2010/03/17(水) 17:02:44 ID:yZ4/JUXY
>>851 なるほど。大変分かりやすい回答どうもありがとうございます。
C言語に飽きてきて新しいことを始めてみようと思っていたところなのでFlexを使ってみようと思います。
>>852 右クリックして拡大押してみ
ただの画像で集まってるように見せかけてるだけ
>>852 各ウィンドウを画像として、
画像のscaleを0.1か0.2くらいにして並べる
クリックした画像の位置にTweenerを使って集合させる
集合アニメが完了したら今度は一番上の画像のscaleを1までアニメーションさせる
多少の位置調整も必要かな
856 :
Now_loading...774KB :2010/03/18(木) 09:45:37 ID:qlAu9pKB
852のサイトだけど右下のボタンを押したときは 1箇所に集まるのはMovieClipじゃない? 画像(JPG)じゃないと思う。 Tweenerを使って拡大するのが 少し難しい。真ん中なら中心から拡大しなければ ならないし右下端なら右隅を中心に拡大しなければならない。 Tweenerなら左上から下に向かってしか拡大できない。
んなこたぁない
拡大するとともに座標変えれば
859 :
Now_loading...774KB :2010/03/18(木) 10:39:06 ID:qlAu9pKB
Tweenerは左はしからscaleX,scaleYでしか 拡大できないはずだが
>>859 スケールと同時にxとyのプロパティを0へ変化させればいいだけ
861 :
Now_loading...774KB :2010/03/18(木) 17:37:10 ID:qlAu9pKB
flash Cs4のエディタは使いにくい。 なによりも文字が小さすぎ。 変更できないのか? それともメモ帳でコピペを推奨しているのか。 セミコロンとコロンが区別できないw
お前の頭が残念すぎるだけだろ
>>861 Flash内のエディタは昔から、そんなに使いやすいもんじゃないので、
俺はずっと他のフリーのテキストエディタなどで書いてからコピペしてた
そのままテキストで保存しといて後で見たりも出来るから、何気に便利。
それ以外だと、FlashDevelop のエディタは文句の無い仕上がり。
#全然まったく無いって事は無いが、Flash製品のエディタに比べたら雲泥の差
CS4のエディタ使ってコード書いてる人は恐らくほとんどいない。
865 :
Now_loading...774KB :2010/03/18(木) 18:46:59 ID:qlAu9pKB
だからなんで修正しなんだろう? もうバージョンアップ何回もしているのに? そんなに手間がかかるのか?それとも技術力がないのか? adobe に聞きたい
聞く努力はしたのかよ
867 :
Now_loading...774KB :2010/03/18(木) 18:52:43 ID:6kDYJQoS
2010-03-18T17:00:00.00 という時間を、よけいな記号をとり 2010031817000000 という数字だけで表示するにはどのようにすれば よろしいでしょうか? substrで地道に抜き出したりするしかないですか? replaceは使い方がわかりませんでした泣
868 :
Now_loading...774KB :2010/03/18(木) 19:12:39 ID:qlAu9pKB
性器表現だとおもう
>>867 正規表現で数字以外を空文字で置き換えるとか
"2010-03-18T17:00:00.00".replace(/\D/g, "");
CS4のエディタでコード書いてますがなにか?
なにか?
すみません、JSFL関係のスレって無いんでしょうか? 一番近いのはここですか?
>>861 サイズもカラーもフォントも変更出来る。文句は使い倒してから言いなよ。
気に食わなければFlash DevelopeなりFDTなりAXDTなりあるんだから。
Flashユーザとしてデベロッパーチームには敬意を払うべきだと思う。
ちなみにCS5でかなり改善される予定だとさ。
papervision3d で描画した100本ほどの線を毎フレーム、 再描画して、オブジェクトに追従させたいんだけど、 通常のas3のclearのようなpapervision3d版のメソッドとして、 removeAllLines()というのを使おうとすると、 エラーになります。 removeLinesというのもダメで、、、どうやって線を毎フレーム、 レンダリングしたらいいでしょうか。
876です Line3dで、v0(始点)と、v1(終点)というpublicなプロパティがあることがわかったのですが、 この点を毎フレーム変更してやれば再描画できるかと思いやってみると、 ReferenceError: Error #1056: org.papervision3d.core.geom.Lines3D のプロパティ v0 を作成できません。 みたいなエラーがでます。 v0とv1に毎フレーム正しくアクセスして書き換えるにはどうしたらいいのでしょうか。
876です
海外のフォーラムで同じような質問を投げてる人みつけました
http://forum.papervision3d.org/viewtopic.php?f=14&t=264 具体的にやろうとしているのは、
var lineMaterial:LineMaterial = new LineMaterial(lineColor);//色味の決定
var line:Lines3D = new Lines3D(lineMaterial);
line.addNewLine(1, main.x, main.y, main.z, photo.x, photo.y, photo.z);
scene.addChild(line);
みたいに線を最初に表示しておいて、あとは毎フレーム、
mainと、photoがどんなに動いても線がくっついてくるみたいな処理をしたいのですが。。。
photoが無数にある感じで、それぞれ終点がmainの座標という感じです。
エラーを出すソースをくださいな
>>874 分かりました。どうもありがとうございました。
pv3dのソースはwonderflにいっぱいあるから探すといいよ
>>875 861じゃないのですが参考になりました。
でも、ぐぐっても見つからないのね。「エディタ」とかモーションエディタが引っかかるし。
ヘルプ検索で見つけたよ。
>[編集]-[環境設定] (Windows) または [Flash]-[環境設定] (Macintosh) を選択し、
>[カテゴリ] リストの [ActionScript] をクリックします。
うおお、便利!wwww
883 :
Now_loading...774KB :2010/03/20(土) 00:12:52 ID:tqxS3LuR
べつに882を茶化すつもりないけど敬意は払えない ユーザインタフェースが悪すぎる。VBなみにとは言わないが 改良するべし。初期設定に10ptてなんだそれ。 (記号が見えない)しかも処理に手順が多すぎる。 まあ、勉強不足だというんだろうが前にVBユーザも使ってほしいと 言っていたが努力の成果が見られない。 AS3になって優れたフリーソフトが出始めてあせっている 気がする。CS5に期待する。
884 :
Now_loading...774KB :2010/03/20(土) 01:33:21 ID:b9fNzyIh
CS4 パブリッシュ10 Winです。 ■mc1 └■mc2 ■mc3 という感じで、mc1とmc3_rootにあり、mc2はmc1の中にあります。 そして、mc1は回転したり移動したり、画面の中を飛び跳ねていて、 座標は不規則です。 mc3をmc2の位置に合わせたいのですが、 (mc1が回転していようとも、mc3は回転させたくないので、mc1の中には入れられない) mc3に _x = _root.mc1.mc2._x; とやっても見当違いな場所に移動してしまいます。 mc2を_rootから見た絶対座標にすることは出来ないのでしょうか? (絶対座標もしくは、mc1の座標)
>>884 localToGlobal() を調べてみればいいと思うよ。
それがですね、 mc3に this._x = localToGlobal(_root.mc1.mc2._x); と書いても変なところに表示されるし、mc1の中のmc2は mc1が回転することによって位置が変わるはずなのに まったく動きません。もちろんmc3はonEnterFrameです。
ちゃいまんねん ドキュメントよく読むねん
>>886 AS2の表記は間違ってるかもしれないけど、
localToGlobal は 呼び出したオブジェクトのローカル座標 → グローバル座標だから
mc3の座標をmc2にあわせたいのなら……
var pt:point = { x:0, y:0 }; //mc2のローカル座標、ここでは仮に(0,0)
mc2.localToGlobal( pt ); //mc2のローカル座標ptをグローバル座標に変換
mc3._x = pt.x;
ってしなくちゃダメなんじゃないかな。
いやあ、ヒドイAPIだよね!
さっぱり分かりません。 首吊ってきます。
>>889 var point:Object = new Object();
point.x = _root.mc1.mc2._x;
point.y = _root.mc1.mc2._y;
_root.mc1.localToGlobal(point);
trace(point);
そもそもなんでAS2でやろうと思ったの?
mc3に書くのですよね? だとしたら var pt:point = { x:0, y:0 }; //mc2のローカル座標、ここでは仮に(0,0) _root.mc1.mc2.localToGlobal( pt ); //mc2のローカル座標ptをグローバル座標に変換 _root.mc3._x = pt.x; って_rootから参照するでないですか? まだ動きません。
>>891 > _root.mc1.mc2.localToGlobal( pt ); //mc2のローカル座標ptをグローバル座標に変換
_root.mc1.localToGlobal( pt );//上で出てるけど、こうじゃね?
>>891 記述的にはあってるから、ほかの所を疑うべきかも。
trace( _root.mc1.mc2._x );
trace( _root.3._x );
として、ほんとうにムービークリップに参照できているか確かめてみては。
インスタンス名はあっていますか?
タイムラインは途切れていませんか?
いろいろパスいじっても変わりませんなぁ。 tarceにも反映されてない・・・。
mc3に書いたAS(AS2でパブるとpointをロードできません、と出るのでAS1で。 onClipEvent (enterFrame) { var pt:point = {x:72, y:138};//mc2のローカル座標、ここでは仮に(0,0) _root.mc1.mc2.localToGlobal(pt);//mc2のローカル座標ptをグローバル座標に変換 this._x = pt.x; trace(pt.x); } traceの結果は undefind 。 なんだろう????
>>896 ごめん、Point忘れて。
「var pt:Point = {……}」 → 「var pt = {……}」
さっきアップしたの動くから、
それ参考にしてみてよ。
アップしてくれたやつ動きました! _rootにスクリプト書かんといけないんですね。 _rootに書くと、goToAndPlay(1個前)とかってやらなきゃいけなくて なんかオールドなテクニックな感じしません? mc3にonEnterFrameで書けないのかしら。
mc3にenterFrameでイケました。 onClipEvent (enterFrame) { var pt = {x:14, y:14}; _root.mc1.mc2.localToGlobal(pt); _root.mc3._x = pt.x; _root.mc3._y = pt.y; }
そっちの方が古いと思うが
901 :
Now_loading...774KB :2010/03/20(土) 10:16:00 ID:NQm6LEQ/
ご指導よろしくお願いします。 win7 AS2.0 CS4です。 1ページに100枚ぐらいある写真を1フレームごとに1枚ずつ表示しています。 枚数がおおいので外部からファイルを読み込んでページのおもさを分散しています。 写真の読み込みが始まったらプログレスバーを表示しているのですが、 一度読み込まれるとキャシュされて次からは一瞬だけプログレスバーが表示されます。 キャシュがある時はプログレスバーを表示しないようにするにはどのようにすればいいのでしょうか? var mcLoader:MovieClipLoader = new MovieClipLoader(); var listenerObject:Object = new Object(); listenerObject.onLoadProgress = function(mc, lb, tb) { num.text=Math.floor(lb/tb*100); } よろしくお願いします。
ローカルにあるXMLファイルを読み込むFlashをローカルでデバッグしている時、セキュリティ Sandbox 違反とエラーが出ます。この現象はFirefoxで開いたときのみ発生し、chromeで開くとこの現象は発生しません。これは何かFirefoxでキャッシュ?されているからでしょうか? ご教示頂ければ幸いです。
903 :
902 :2010/03/20(土) 11:17:54 ID:hlHtXT6I
>>901 読み込み開始から、たとえば1秒ほど待って、
それでも完了してなければプログレスバーを表示するってのは?
>>903 日本語でおK。おちついて。
ASバージョンとOS、マストだと思うよ。
で、FlashPlayerTrust はしらべてみた?
905 :
Now_loading...774KB :2010/03/20(土) 15:23:59 ID:NQm6LEQ/
>>904 回答ありがとうございます。
1秒ほど待つとはどのようなスクリプトになるのでしょうか?
勉強不足ですがよろしくお願いします。
>>905 Timer関数回すかタイムラインでどうにかすればOK
907 :
Now_loading...774KB :2010/03/20(土) 17:32:11 ID:NQm6LEQ/
>>906 ありがとうございます。
挑戦してみます。
908 :
Now_loading...774KB :2010/03/20(土) 18:24:36 ID:4SOuBl4M
/pic1のアクション/; mister_top.btn_1.addEventListener(MouseEvent.ROLL_OVER,photo_alpha1); function photo_alpha1(eventObject:MouseEvent):void { mister_top.pic1.alpha=100; } /pic2のアクション/; mister_top.btn_2.addEventListener(MouseEvent.ROLL_OVER,photo_alpha2); function photo_alpha2(eventObject:MouseEvent):void { mister_top.pic2.alpha=100; } 〜(略)〜 mister_top.btn_5.addEventListener(MouseEvent.ROLL_OVER,photo_alpha5); function photo_alpha5(eventObject:MouseEvent):void { mister_top.pic5.alpha=100; } AS3.0です。 このコードをfor文を使ってまとめたいんです。 自分なりに調べてやってみたのですが、上手くいかず…。 ぜひお知恵を拝借したいです。お願いします。
>>908 試してなくて、あんま自信ないけど
for (var i:int = 1; i < 10; i++)
{
mister_top['btn_1'].addEventListener(MouseEvent.ROLL_OVER, createphotoAlphaFunc(i));
}
function createphotoAlphaFunc(photoNum:int):Function
{
return function(eventObject:MouseEvent):void {
mister_top['pic' + i].alpha=100;
}
}
910 :
902 :2010/03/20(土) 18:32:49 ID:hlHtXT6I
すまん mister_top['btn_1'] ↓ mister_top['btn_' + i] だ
>>908 for文っていうか、まず似たような関数は一個でよくね?
function photo_alpha(eventObject:MouseEvent):void
{
(eventObject.target as *).alpha=100;//*はbtn_○のクラス
}
んで、
>>908 と意味的にほぼ同じだけどfor使う例
for (var i:int = 0;i < 5; ++i)
{
mister_top.getChildAtName("btn_" + i).addEventListener(MouseEvent.ROLL_OVER, photo_alpha);
}
914 :
初心者 :2010/03/20(土) 22:06:44 ID:66XaxOY1
どなたかActionScriptの指導を していただけませんか?
いいよ
916 :
初心者 :2010/03/20(土) 23:34:24 ID:66XaxOY1
まずどんなことからはじめたらいいですか?
まずパンツを脱ぎます
次にラーメンを食べます。とんこつです。
初歩的な質問ですがご指導おねがいします。下記のようなコードを短く書くにはどうしたら良いでしょうか?(Mac CS4 AS3) 1.外部ボタン画像を読み込みたい 2.1の画像幅はバラバラだけど同間隔で並べたい 3.拡張性を考えて_Numと_btに追加するだけで、4つ、5つにも対応したい var _Num:Number=3; var _bt:Array = ["bt01.png","bt02.png","bt03.png"]; var bt1:MovieClip = new MovieClip(); addChild(bt1); bt1.name="bt1"; var btN1:MovieClip = MovieClip(getChildByName("bt1")); var btLoader1:Loader = new Loader(); var btUrl1:URLRequest=new URLRequest(_bt[0]); btLoader1.load(btUrl1); bt1.addChild(btLoader1); var bt2:MovieClip = new MovieClip(); addChild(bt2); bt2.name="bt2"; var btN2:MovieClip = MovieClip(getChildByName("bt2")); var btLoader2:Loader = new Loader(); var btUrl2:URLRequest=new URLRequest(_bt[1]); btLoader2.load(btUrl2); bt2.addChild(btLoader2); var bt3:MovieClip = new MovieClip(); (省略) btN1.x=5; btN2.x=5+btN1.width+5; btN3.x=5+btN1.width+5+btN2.width+5;
>>919 動作確認してないからタイポとかあったらごめんね。
あと、インデント、全角スペースだから気をつけて。
var _bt:Array = ["bt01.png","bt02.png","bt03.png"];
var BTN_PITCH_W:Number = 5; //ボタン間隔
var bts:Array = []; //ボタンローダー配列*/
var lodedBtNum:uint = 0; //読み込み完了したボタンの数*/
for( var i:String in _bt ) loadBt(i);
function loadBt( i:String ):void {
var ldr:Loader = new Loader();
ldr.load( new URLRequest( _bt[i] ) );
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void {
bts[i] = e.target.content;
if ( ++lodedBtNum == _bt.length ) {
var x:Number = 0;
for each( var bt:DisplayObject in bts ) {
bt.x = x;
x += bt.width + BTN_PITCH_W;
}
}
});
addChild( ldr );
}
921 :
919 :2010/03/21(日) 13:42:56 ID:Cw9YMnKm
>>920 ありがとうございます!!
ちゃんと動作しました!
こんなに短くなるんですね。感動です。
1行ずつ何が書いてあるか勉強させていただきます。
Action Script 3.0を勉強中なんですが、C言語で書くところの bool DateArray[10][10] = {0} ; みたいな宣言って、多次元配列の動的生成みたいに、 var k:int = 10; var DateArray:Array; DateArray = new Array(k); for(var i:int = 0; i < k; i++){ DateArray[i] = new Array(k); for(var j:int = 0; j < k; j++){ DateArray[i][j] = new Boolean(false); }; }; って書くしかないんでしょうか? 最初から要素数が決まってる二次元配列の生成にしては煩雑なんですが、 もっと別のシンプルな方法ってのはないんでしょうか・・・。
>>922 C/C++のように型厳密でないから、宣言時初期化(静的に初期化)のような事はそもそも出来ません。
・・・てか、C言語理解してるなら、Arrayみたいな要素型が自由なメモリ領域再確保処理で、静的初期化なんて
出来ないのは想像出来るような気がするが。
まとめると、Cでのソレは二次元配列を用意してるんじゃなくて、型(の、メモリサイズ)を厳密に指定した宣言時に、
動的でない内容で初期化するから出来る事。
大して AS(などの)Arrayは動的配列(というか、コンテナ)クラスで、内包する要素は自由に取れる事から、
それはそもそも出来ない。 なので、そのサンプルのように処理してください。
簡単に言えば、Cのソレとは全然動きが違います。
924 :
919 :2010/03/21(日) 15:16:50 ID:Cw9YMnKm
すみません。
もう少しおつきあい願いたいのですが、
>>920 のコードで
配置したボタンにそれぞれ違うイベントリスナーを設定するにはどうしたら良いでしょうか?
いろいろやってみたのですが、アクセスの仕方が分かりませんでした。。。
あ、C/C++ から来た人向けにもっと簡単に言えば、 boost の array って思えばおk。 まんま、アレイ
>>923 var DateArray:Array みたいな宣言が独立して出来る時点で、
C/C++のクラスかストラクチャみたいなもんなんだろうなぁと想像はしてたんですが、
多次元配列なんて基本的なもんだし内部的には一緒でもショートカット的な宣言方法があんじゃないだろうかと、
ちょっと期待してたんです。怠け者ですみません。
とにかくありがとうございます。怠けずにちゃんと書きます。
>>924 (略)
for each( var bt:DisplayObject in bts ) {
bt.x = x;
x += bt.width + BTN_PITCH_W;
bt.parent.addEventListener( MouseEvent.CLICK, function():void { trace("CLICK#"+i); } );
}
(略)
実はコメントが間違ってたんだけど、bts[] ってのが読み込んだオブジェクトの配列。
だから bts[n].parent が Loader になります。
だもんで、それにイベントリスナーを登録してやれば OK。
>>927 これ任意のタイミングでremoveEventListenerできるの?
>>928 無名関数は removeEventListener できないよ。
メンバに var oFunc:Function; を持っておいて、 oFunc = function():void { trace("CLICK#"+i); bt.parent.addEventListener( MouseEvent.CLICK, oFunc } ); とかして置けば、関数として無名でも後で自由自在
931 :
919 :2010/03/21(日) 18:36:40 ID:Cw9YMnKm
>>927 「parent」が必要なんですね。
bt.addEventListener・・・でトライして挫折してました。
頑張って勉強します。
何度もありがとうございました!
933 :
Now_loading...774KB :2010/03/22(月) 00:24:45 ID:wYnn3uZk
Flex(AS3)でButtonに対し、強制的にクリックイベント等を送ることは可能でしょうか? Buttonをクリックした時に、ラベルが色々と変化しているように見せかけるために Buttonの上にTextを重ねています(Button自体のラベルは空にしてます)。 Textのクリック時とButtonのクリック時に、同じイベントハンドラを 呼び出すようにしているので、処理自体はうまく動作しています。 どちらをクリックしても処理が行われ、かつ、その結果の状態によって、 Textの文字列を変化させることで、Buttonのラベル表示が変化しているように見えます。 (Textは複数行で、色やカラーや文字列が変化する) でも残念なことに、Textにロールオーバーしたり、クリックしたときに Buttonの見た目が反応しないので困っています。 Textがクリックされたときに、Buttonに対して強制的に クリックイベントを発生させることって可能でしょうか? どうぞよろしくお願いします。
>>933 EventDispatcher クラス調べてみては。
ローカルでパブリッシュしてみると全然快適なのに、 HTTPでアップして、ブラウザ上で見ると 遅くなるのはどういう場合でしょうか 30fpsが、20fpsぐらいになっちゃいます。 同じマシンで見ているのですが・・ うまい回避策というのはないのでしょうか?
>>935 ブラウザのせいじゃない?
Chrome で試してみては。
>>935 ブラウザによってはwmodeのバグ。
一応、再生に特化したプレビューの方が、ブラウザのプラグイン経由より処理が速く
高速に再生されるということもある。
938 :
933 :2010/03/22(月) 01:35:23 ID:wYnn3uZk
>934さん どうもありがとうございます。 自分でもあれから色々やってみていたのですが、解決しました。 仰るとおり、Textで発生したマウス関連のイベントを、Buttonに対して EventDispatchするだけで事足りました。 一応、コードを次に乗せておきます。
939 :
933 :2010/03/22(月) 01:36:52 ID:wYnn3uZk
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml " layout="absolute">
<mx:Script><![CDATA[
private function onClick(event:MouseEvent):void{
trace( "clicked!" );
count++;
myTextText = "clicked!\n" + count;
}
[Bindable]
private var myTextText:String;
private var count:int = 0;
]]>
</mx:Script>
<!--テキストが真上に重ねられるボタン-->
<mx:Button id="myBtn" width="100" height="100" x="20" y="20" click="onClick(event)" />
<!--ボタンの真上に重ねられるテキスト-->
<mx:Text id="myText" text="{myTextText}" selectable="false" buttonMode="false"
width="100" height="100" x="20" y="20"
click="myBtn.dispatchEvent(event)"
mouseDown="myBtn.dispatchEvent(event)" mouseOver="myBtn.dispatchEvent(event)"
mouseOut="myBtn.dispatchEvent(event)" mouseUp="myBtn.dispatchEvent(event)"
mouseDownOutside="myBtn.dispatchEvent(event)"
rollOver="myBtn.dispatchEvent(event)" rollOut="myBtn.dispatchEvent(event)"/>
<!-- 比較するためのダミーボタン-->
<mx:Button id="myBtn2" width="100" height="100" x="20" y="140" />
</mx:Application>
うざwww
無名関数内で条件もうけてarguments.calleeで出来るっしょ?
ボタンに音を仕込もうとしてますが、 Soundオブジェクトを外部のmp3から生成しておいて、 マウスオーバーの際に、 Soundオブジェクト.play() とすると、音はなるのですが半秒ぐらい遅れてから音がなります しっかりとユーザーのマウスオーバーと同時に音をならしたいのですが、 これは外部読み込みのやり方だと実装不可能なんでしょうか
初めまして、Flash初心者です。 マスクにグラデーションをかける方法を模索しています。 Mask.cacheAsBitmap = true; Image.cacheAsBitmap = true; Image.setMask(Mask); 以上の記述で合っているはずなのですが、CS4のせいか以下のようがエラーが出ます。Warning: 1060: 移行の問題 : メソッド setMask はサポートされないようになりました。代わりに、MovieClip.mask プロパティを使用してください。。 この場合はどのようなソースを打てば解決するのでしょうか?
>>943 エラーの通りにいくと
Image.mask = Mask;
かな
>>944 見事に解決しました。本当にありがとうございましたm(_ _)m
>>942 音を Embed すれば、音の遅れはなくなるの?
947 :
Now_loading...774KB :2010/03/22(月) 20:22:17 ID:DoJ7wMBq
Actionscript3です flashとhtmlの連携で swfobjectを使ってhtmlからflashへ変数を渡すという記事は見かけるのですが htmlの一部 <div id="contents"><p>文章</p></div> このid="contents"のdivタグ内の文章を、flashへ丸々渡すような事はできるのでしょうか?
無理ぽ
>>947 直接できるような機能は無いな。
どのタイミングでそれを渡したいのか分からないけど、
swf を表示するタイミングで渡すなら、どうせ swfobject で埋め込んでいるんだし、
addVariable で document.getElementById("contents") を渡すって言うのはどうだろう。
swf 実行中に渡すなら、LocalConnection で通信して渡すしかない。
950 :
947 :2010/03/22(月) 21:28:43 ID:DoJ7wMBq
>>948-949 ありがとうございます。
因みに読み込みたいタイミングは、メインのswfを読み込むプリロードを行う時、一番最初です
できるのなら、そのdiv内データの文字列?をプリロードswfで受け取り、読み込んだメインswfへ渡そうかと思っていました
javascriptは殆ど知らないので、addVariableについてなど調べてみます
HTML自体をxmlとして読み込んでe4xでパースしちゃうっていう 裏技もある。
SWFからJavaScript側のメソッド呼び出して戻り値えればええやん
わからないから、そのやり方を聞いてるんじゃないの?
AS3 JAVASCRIPT でググればわかるだろ? ExternalInterface.cal を使えばいい HTMLの要素内容を簡単に取りたいならJQuery使え これだけわかれば答えにはいきつくだろ
955 :
Now_loading...774KB :2010/03/23(火) 11:39:27 ID:uhBDMNmQ
addEventlintenerについて、 「ある処理を終えたあとでなければ実行できない関数」を作る方法 ってありますか? いまのところは、「ある処理」の行われる関数の末尾に 目的の関数の呼び出し文(?)を書いているのですが、 コードが汚くなっていくので。
956 :
Now_loading...774KB :2010/03/23(火) 13:37:13 ID:lkUDavNG
初心者の質問で申し訳ないがactionscriptのエディタで 上に部分に任意に式を評価というボックスがでて(式)そこを通じてしか 書き込みができなくなってしまったんだけど元に戻すやりかた を教えて!
どのエディタ
958 :
Now_loading...774KB :2010/03/23(火) 14:07:42 ID:lkUDavNG
右上のスクリプトアシスタントを押すことで解決しました。 もういらんだろ。ノーマルモードなんて。 余計に混乱するだけ
959 :
Now_loading...774KB :2010/03/23(火) 16:54:16 ID:lkUDavNG
TransitionManager.start(img2_mc, {type:Zoom, direction:3, duration:1, easing: Bounce.easeOut}); いったん表示してそのあとに Tweener.addTween(img4_mc, {time:1.0,alpha:0,delay:0.5, transition:"linear"}); でアルファ値を変えてデザインをしてるんだどimg2_mcの処理を終えてから すぐにimg4_Mcの処理をしたいんだけどTweenは順番に処理できないの? なにかタイミングでうまくいかない。 (要するにはじめの処理を確実に終えてから次の処理をしたい。) これはTweenでは不可能?タイムラインをつかわなければだめ? だれか教えて
960 :
Now_loading...774KB :2010/03/23(火) 17:37:13 ID:Bwr4nOUO
Flash8 as2 hoge="a=1&b=2&c=3"; というデータがあったとします。 たとえばaの値を取りたいときどうしたらよいでしょうか? aの値=hoge.a みたいに取れないでしょうか?
>>959 onCompleteっていうオプションがあったと思う、そこに関数渡しで。
>>960 自分で分割して配列なりに入れるしかない
「as2 parse query string」とかで検索すればよろし
>>960 "&"でスプリットして得られた配列をループして、"="でスプリットすればキーと値が取り出せるジャン
言語無関係な基本の文字列処理の一つ。もちろんスプリットの部分を、正規表現とかに変えてもいい
964 :
Now_loading...774KB :2010/03/24(水) 02:08:53 ID:b0V3kUhz
>>955 その「ある処理」でdispatchEventしてそれを監視するとか。
それでも結局書く量は同じか下手すりゃ増える気がするけど。
private function init():void {
addEventListner("complete", sonogonoShori);
}
private function aruShori():void {
// ある処理の処理
dispatchEvent(new Event("complete"))
}
private function sonogonoShori(e:Event) {
removeEventListner("complete", sonogonoShori);
// その後の処理
}
965 :
Now_loading...774KB :2010/03/24(水) 10:17:38 ID:gockrkYn
961さん そうですね。ありましたね。ありがとうございます。 やってみます。
966 :
Now_loading...774KB :2010/03/24(水) 15:32:05 ID:gockrkYn
movieクリップを拡大したとき枠の線まで拡大されてしまうの なんとかならないかな。縮小は問題なんんだけど(当たり前だが) 枠は一定の太さにしたいんだけど・・・・ よわったな
線だけ別にすればいいじゃん
968 :
Now_loading...774KB :2010/03/24(水) 18:50:23 ID:8KhVlCiS
FlashCS4 AS3 ステージ上にmcとmaskMCがあります。 mcにはぼかしフィルタがかかっています。maskMCにはかかっていません。 オーサリングでmcをmaskMCでマスクすると、ぼかしがかかるのはマスク内だけで、マスクのエッジはスパッと切れてます。 ところがオーサリングでマスクせずに(本来やりたいことはコレ) mc.mask = maskMC; とすると、マスクはかかりますが、マスクのエッジ部分もぼかしがかかってしまいます。 スパッと切りたいのですが、どのようにすればいいんでしょうか?
線だけ別にすればいいじゃん
>>966 >>969 確認してないけど線を塗りに変換すればいいんじゃないの?
てかスレ違いじゃなくね?
>>968 フィルターのかかったmcを別の親MCに入れて
親MCにマスクをかければ大丈夫かな
container_mc.addChild(mc);
container_mc.mask = maskMC;
972 :
Now_loading...774KB :2010/03/24(水) 19:59:52 ID:8KhVlCiS
>> 971 おおおお!ありがとーございます!!!!!!!
973 :
Now_loading...774KB :2010/03/24(水) 22:25:11 ID:Ljo9ozJ6
すみません!AS2.0で質問です。FlashCS3使ってます。 xmlを使って別サーバーの画像をロードして、attachMovieしてるのですが 読み込んだ画像をすべて指定のサイズにリサイズしたいと考えてます。 読み込んだ後、 MC._width = 50; などとすると、サイズが100だったものは50になりますが 450のものは、225になってしまうなど、縮小率で適用されてしまいます。 絶対的にリサイズするにはどうすればよいのでしょうか?
>>973 表示されてから_width = 50をセットしてみては?
数学を勉強しろ
>>973 MC._width = 50の手前で、MC._widthの値をtraceしてみるとどうなってる?
977 :
973 :2010/03/24(水) 23:14:05 ID:Ljo9ozJ6
皆さんありがとうございます。
onLoadInitを使う事で自己解決しました。
というか、onLoadInitの使い方をいまいち間違ってたみたいなのです…。
>>976 その時点では0でした。
ありがとうございました。
>>977 MovieClip の width や height の値は特殊で、
そもそも MovieClip や AS3 で言う Sprite は、領域としての幅と高さって概念を持っていない。
幅と高さは、中に描画される内容によって決まるから、もっていないんだ。
(特に基本はピクセルでなく、抽象単位で座標を持つベクタ情報だし)
なので、幅と高さを書き込む場合には割合にしかならない。 これ大事な概念なので覚えとくといいぜ
ASオンリーで自己サイト作ってる人にしつもん。 メインのドキュメントクラス何行くらいになってる? 知ってどうこうという訳ではないし行数なんて基準にならんけど参考までに教えてくだされ。 ちなみに俺は700行弱っす。
980 :
Now_loading...774KB :2010/03/25(木) 13:46:40 ID:QzujLBUI
AS3でカスタムカーソルを表示させる方法について質問です。 Mouse.hide()したあとカーソル用のオブジェクトをMouseEvent.MOUSE_MOVEイベントでマウスに追従させているのですが、 カーソル用のオブジェクトに邪魔されてクリックなどのマウスイベントが効きません。 現在はオブジェクトをマウス位置から微妙にずらす、マウスイベントをステージに設定するなどで回避していますが、 カーソル用のオブジェクトがマウスの下にあっても無視できるような方法はないでしょうか?
mouseEnabled
マウスの位置をゲットして、自分より右なら右に5ピクセルだけ ゆっくりと移動するシンボルを作りたいのですが onClipEvent (enterFrame) { _root.x = _root._xmouse; _root.y = _root._ymouse; } このあとどう書くのが一番コンパクトでしょうか? お教え下さい
983 :
Now_loading...774KB :2010/03/25(木) 18:55:24 ID:6Srtileg
カスタムクラスのクラスパスについて flaファイルと同じディレクトリ内にカスタムクラスを置いて問題なく生成できていたのですが、 「環境設定」の「ActionScript3.0設定」のクラスパスを弄っているうちに、エラーが出て生成できなくなりました。 エラーの内容は、「playgroval.swcが見つかりませんでした。」 どうしたら元通りになりますか?先に書いてある通り、カスタムクラスはflaと同じディレクトリ内です。 そもそもplaygroval.swcってなんですかね。
何故弄ったし
そもそも綴り間違ってそうだし
986 :
983 :2010/03/25(木) 19:46:07 ID:6Srtileg
ああ、すいません。 「ActionScript3.0設定」のクラスパスの初期値を教えてください。
>>986 パブリッシュ設定じゃなくてグローバル設定いじったの?
一応CS3で下の2つだった
.
$(AppConfig)/ActionScript 3.0/Classes
988 :
983 :2010/03/25(木) 21:43:37 ID:6Srtileg
>987 ありがとお。動くようになりました。 パブリッシュ設定でなくて、環境設定をいじってしまいました。 環境設定のデフォルトに戻すボタンを押しても、ここだけは 戻らなかったのでやばかったです。 ありがとうございました。 個別flaの設定はパブリッシュ設定から変更すればいいんですね。
すでに完成している.swfファイルが6つあります。 これを指定されたサイズ(1920px×1080px)で次々と続けて再生する プロジェクターを作りたいのですが、アクションスクリプトを使えばできるのでしょうか? 6つ普通にタイムラインに並べたところ、 ステージを指定サイズで作ったら左上に小さく表示されてしまい、 複数フレーム一緒に拡大しようとしたらFLASH強制終了になりましたorz FLASHではパタパタアニメしかつくれません。 アクションスクリプトが何もわからない状態です。 なんともお恥ずかしいのですが、 できることでしたら参考になりそうな本やサイトを教えてください。 (グーグル先生に聞いてはみたけど、どこをどう拝見していいのかすらわからなかったよ・・・TT)
すいません 989です 書き忘れてましたが、使ってるFLASHはCS4です
991 :
Now_loading...774KB :2010/03/26(金) 16:37:50 ID:LzkvqvZM
クラスやオブジェクトにプロパティが存在するかどうか調べる方法を探しています。 下の場合、プロパティdがないですが、dが存在しない場合は抜けるという書き方を教えて下さい。 var obj = {a:A, b:B, c:C}
if(obj.d==undefined){ return; //とかヌケる処理 }