ActionScript 誰かが物凄い勢いで解答するスレ 26
AcitonScriptのことなら
初歩的な質問でもなんでもおk
見れない、保存したい、flashを作りたいはスレ違い
下記の関連スレ、超基本的な質問へ。
●質問する時は自分の環境を書く(AS2,AS3の別も)
●質問はものすごい勢いじゃなくて結構
●できるだけコードも示す
●まず自分がやりたいことを明確に書く。そのために試してみた処理を書く
前スレ
ActionScript 誰かが物凄い勢いで解答するスレ 225
http://pc12.2ch.net/test/read.cgi/swf/1258749795
今から勉強するならAS3でいいのか 2じゃだめなんですか
>>1 てんきゅう!
>>2 俺は使い分けてる
A) 将来の拡張が予想される,時間が掛かっても良い,XMLを正しく使いたい,
(今のところ)PCのみ ・・・ などなどの場合はAS3
B) その場限り,納期が短い,携帯でも使いたい(Lite4.0はAS3可) ・・・
こんな時はAS2
まあ3が出来れば2は問題無く修得できるし、今後の主流はAS3であることを
考えると3の方だな。
(勉強時間とお金と入手できる本次第ってのもある)
3.0です。 設定などを保存してるオブジェクトやstageを他のオブジェクト内部で頻繁に使うのですが、 いちいちコンストラクタに引数で渡したりするのがめんどくさいです 何かうまい方法はありませんか?
>>5 なんかそれっぽいの出てきました。
ちょっと勉強してみます。
ありがとうございます。
質問です Flashlite1.1 で シンボルの詳細や着色のカラー設定を変更する方法はないでしょうか? setTransformがFlashlite2.0からのようなので それに変わるものを探しているのですが、見つかりません
8 :
Now_loading...774KB :2010/04/07(水) 17:41:50 ID:ZvF77rPK
num ||= 100; こういう書き方見かけるんですが、 これはnumがfalseの場合100ってことでいいんでしょうか。
質問です。 AS2、FLVPlaybackでFLVを読み込んで表示させています。 再生中のシークバーハンドルの位置を取得できるプロパティを 探しているのですがわかる方いらっしゃいませんか。
10 :
9 :2010/04/08(木) 01:06:45 ID:niMNoCLy
すみません、自己解決しました。
AS3.0で質問させて下さい。 ムービークリップの特定色だけアルファ100%にして透過する方法がありますでしょうか? 特定色はどの色にする事も可能で、そこに背景を入れたいのです。 ブレンドモードなども試してみましたが、特定色だけ、透過するかしないかの状態だけで中間は 無い、というのがどうしても作れませんでした。 宜しくお願いします。
13 :
Now_loading...774KB :2010/04/12(月) 07:52:11 ID:PgJX9Vp+
Loaderで読み込んだ画像を回転させたいのですが、 rotetionに角度を入力するだけだと、 縦横の比率が変わる上に画像のサイズが少しずつ大きくなっていきます。 画像を回転させるには、どのような方法があるのでしょうか?
ActionScriptで、以下のような文がエラーにならないのはなんで? private function a(){ 1; } 似たような言語仕様(と個人的に思ってる)を持つJavaだと、 「文ではありません。」ってエラーになるんだけど。 逆に、これをエラーにしない事で得られるメリットってある?
15 :
Now_loading...774KB :2010/04/12(月) 20:45:39 ID:eV7oIrVh
CS4,Player10,WinXP-Pro テキストフィールドのフォーカス制御で質問です。 MC(mcOya)内に2個のテキストフィールド(tfA0,tfA1)と入れ子でMC(mcKo)を 置き、更にmcKoの中に既に文字が入ったテキストフィールド(テキスト入力型)を 3つ置きました(tfB0〜tfB2)。 tfB0〜tfB2には予め文字が1文字づつ入っており、Tabキーによるテキストフィールド 間のフォーカス移動を試みました。模式的に書くと次のようになります。 mcOya[ tfA0 mcKo[tfB0〜tfB2] tfA1] ※テキストフィールドは計5個 最初ASは何も書かず(tabIndexやtabChildrenの設定は何もせず)プレビューでTab キーを押すと tfA0,tfA1にはキャレットが現れず、更にtfB0〜tfB2ではキャレットが 現れるものの予め書いておいた文字が消えてしまいます。 原因を探るために、ステージ上に単純にテキストフィールドを3個置いてフォーカス 移動をTabキーで行おうとしましたがキャレットが現れず行き詰まっています。 目標は上で書いた通り、Tabキーによるテキストフィールド間のフォーカス移動です。 アドバイス願います。
ActionScript 3.0を仕事で使うことになりました 唯一Flashを触ったことがあるというだけで私が担当することになったのですが 最後に触ったのは数年前のFlash8でAS自体よくわかってないレベルです 書籍は何を買えばいいでしょうか?
詳説ActionScript3.0
AS1.0です。 デフォルトのカーソルだと、ボタンに触れると形がポインターに変わりますよね。 それをカスタムカーソルでも再現したいんですけど、ASでまとめて変換する方法ありますか? 今は、代替案として、一つ一つのボタンにrollOverでフラグ立てをして、 カスタムカーソルMCのenterFrameでフラグを監視、ラベル移動をし画像を切り替えています。
19 :
15 :2010/04/13(火) 02:41:53 ID:khJoy34v
自己解決しました。 テキストフィールドが複数行になっていたのが原因でした。 (Tabを動かす→キャレットが改行位置に移動→結果改行状態) 単一行にしてOKでした。
20 :
13 :2010/04/13(火) 06:24:48 ID:kjpyhjaS
自己解決しました。 どうも
22 :
14 :2010/04/13(火) 13:09:11 ID:qeYbMCdv
レスつかないね。 for (var i:int = 0 ; i < 10 ; i + 2){ } みたいなミスしちゃったときに、 Javaだとコンパイル時エラーになるのに AS3だと実行時無限ループになるんで問題と思うんだが。
>>22 なんでだろうね。
private function foo():void{
1;
}
だけだと確かにリテラルなのが確定なのでアレだけど。
private function foo():void{
tsukareta;
}
だけだとtsukaretaという変数を参照している場合もあるし、
private function get tsukareta():int{
throw new Error("とべるよ!");
}
みたいなゲッターを呼んでいる場合もありえるわけで。
あとforの停止性はあまり関係ないかと。
for(int i = 0; i < 10; i--){}
はJavaでもコンパイル通るけど止まらないよね。逆に
for(i = 0; i <10; i + 2){}
はASでiのゲッターセッター作れば停止するように作れないこともない。
AS3で教えてください! MovieClip(mcParent)へ動的に追加したMovieClip(mcChild)に、 MovieClipのインスタンス名を変数としてアクセスしたいのですができません! var mcParent:MovieClip = new MovieClip(); var mcChild:MovieClip = new MovieClip(); mcChild.name = "hoge"; mcParent.addChild(mcChild); --------------- var hensuu:String = "hoge"; trace(mcParent[hensuu].x); ↑ここで条件は未定義でありプロパティがありません。となります
getChildByNameでググろう。
26 :
Now_loading...774KB :2010/04/13(火) 22:35:57 ID:I6Lt3Ryp
as2です。 FLVPlaybackコンポーネントを使って 動画のストリーミング再生がしたいのですが contentPathをrtmpで始まるパスにする他に 何か設定が必要でしょうか? よろしくおねがいします。
27 :
14 :2010/04/14(水) 20:08:53 ID:xCkis+kb
>23 あーなるほど。AS3 だと ゲッターを呼んでる可能性あるね。 だけどゲッターから返ってきた値をそのまま捨てるなんて ゲッターの使い方そもそも間違ってると思うわけで、 その用法も含めてエラーにしちゃえばいいと思うんだけどな。 forの停止性については確かに些細な事かもしれないね。
>>27 ただgetterもsetterも"b = o.a()"を"b = o.a"と書けたり"o.a(b)"
を"o.a =b"と書けたりと、基本的にはメソッド呼び出しの別記法
にすぎないわけだ。
なのでただ"o.a;"と書いてあってもそれは"o.a();"みたいな文の
別記法にすぎないわけで、文法的にはまぁおかしくはない。
自然不自然の感覚の問題は当然個人差があると思うけど、より
ピュアなOOPと呼ばれるものの多く、メジャーどころだとRuby
なんかもそうだけど、そういう言語ではオブジェクトの内部変数
の読み書きも基本的には全てオブジェクトへのメッセージ送信と
して設計されている。
なので例に挙げた"tsukareta;"も内部変数の読み書き云々以前に
まずオブジェクトに対する「疲れた」というメッセージ送信だと
考えれば、そうおかしくはないとは思うのだが、どうだろう。
(説明が難しいね)
はじめまして。 DataGridの使い方で質問させてください。 開発環境はAS3になります。 DataGridをArrayCollectionでバインディングさせて データを表示しています。 画面上のボタンを押下したら、ArrayCollectionに要素を追加して DataGridにも行が増えるような処理を実装しています。 上記の処理自体は問題なく動くのですが、 行を追加したときに、それまでDataGridに手で入力していた データが消えてしまいます。 おそらく ArrayCollection→DataGridへの変更の反映は出来ているようなのですが、 DataGrid→ArrayCollectionへの変更の反映は出来ていないようです。 DataGridの変更内容をArrayCollectionにも反映するようにするには どのようにすればよいのか教えていただけないでしょうか。 DataGrid→ArrayCollectionは自分で処理を実装する必要があるのでしょうか。 どうかよろしくお願いいたします。
31 :
Now_loading...774KB :2010/04/16(金) 16:36:15 ID:x3N36rSx
AS2でNo.1〜No.100の抽選スクリプトを作っています。 Windowsプロジェクタ(.exe)出力をして、スタンドアロンPCで実行します。 各Noが再抽選されないように、当選したNoをファイル等に書き出したいのですが ASでは不可能という事を知りました。 当選Noを変数で保持すると、万が一、パソコンやスクリプトを再起動した際に 当選Noデータが飛んでしまいます。 AIRならできるそうですが、明日までに仕上げなければならないために、AS2でなんとか ならないか思案中です。 (基本部分は以前AS2で作成したものがあり、それを流用しようと思っております) 「AS2でローカルPCにデータを保持する方法」について何かアイデアがあれば ぜひお教えください。
>>31 SharedObjectで調べてがんばれ
33 :
31 :2010/04/16(金) 18:10:53 ID:x3N36rSx
>>32 今テストを行っていますがバッチリです。
とても助かりました!ありがとうございます。
34 :
29 :2010/04/17(土) 11:15:05 ID:4mc6BUrs
環境: CS4,WinXP-Pro,AS3 です
ソートした連想配列(ハッシュ,結合配列)の一覧表示で質問です。
ttp://logic.stepserver.jp/memo.cgi/archive/656/?linkmenu= において
// ダンプ関数(AS3標準関数ではありません。)
D = new dumper3( hoge_array );
なるものがあり、『結果』が書かれていますが dumper3 の内容
が分からないため、どういう仕組みで『結果』が得られたのかが不明です。
※上記サイトでは言及されていません。
『結果』からdumper3の記述が推測できましたら教えて下さい。
36 :
35 :2010/04/18(日) 03:19:14 ID:DMeQ9Sqz
すいません。 現在 for..in の勉強もしているので、できたら この書き方でお願いします。
37 :
Now_loading...774KB :2010/04/20(火) 00:49:00 ID:US6Vit34
as2で質問です 一つのボタンをクリックしたときに全てのボタンを無効にしたいのですが下記の書き方では汚いのでどうにかしたいのですが何か良いまとめ方ありますか? var space =20 for(var i=0; i<3;i++){ attachMovie("mc","mc_"+i,i); this["mc_"+ i]._x = i*(this["mc_"+i]._width +space); this["mc_"+i].onRelease =function(){ mc_0.enabled = false; mc_1.enabled = false; mc_2.enabled = false; } }
>>37 forループと配列アクセス演算子を使う。
>>38 ありがとうございました。
↓の感じでいいのでしょうか?
var arr:Array =new Array(mc_0,mc_1,mc_2);
for(var j =0;j<arr.length;j++){
arr[j].enabled = false;
}
Flashのタイムライン上のスクリプトの質問です。 以下のように、無名関数を使って完結しようとすると、thisの参照がおかしくなるようでうまく動作しません。 関数を別途定義して、その中でthisを行うとうまく動作するんですが、無名関数で完了させるにはどうしたらいいでしょうか。 状況:btn1〜btn10という名前のインスタンスがステージ上に並んでいます。どのボタンにマウスオーバーしてもbtn5のアルファが0.5になるという動作です。 ========================================================== //以下動作する 無名関数じゃない。 for(var i:uint = 1; i < 11; i++){ this["btn" + String(i)].buttonMode = true; this["btn" + String(i)].addEventListener(MouseEvent.MOUSE_OVER, overHandler); } //このように無名関数を使わずに関数を作ってやると動きます function overHandler(e:MouseEvent):void{ this["btn5"].alpha = 0.5; } ================================================== //以下動作しません thisの意味が変わってくるようです。 //これを無名関数でthisの代わりに何を書けばいいのでしょうか。 for(var i:uint = 1; i < 11; i++){ this["btn" + String(i)].buttonMode = true; this["btn" + String(i)].addEventListener(MouseEvent.MOUSE_OVER, function(e:MouseEvent):void{ this["btn5"].alpha = 0.5; }); }
>40 var oya:Sprite = e.target.parent; これでthisの代わりに使えます。
ライブラリなどのzipを解凍したときによく出てくる srcという名前のフォルダがありますが、 あのsrcってどういう意味なんでしょう?
as3です ライブラリのシンボル(mc1)をaddChildで設置したのですが、 そのインスタンスの中にある入れ子のインスタンス(mc2)に画像を読み込ませたいのですが出来ません。 入れの子インスタンス(mc2)へのアクセスは記述すればいいのでしょうか? 宜しくお願い致します。
↑すみません解決しました
46 :
Now_loading...774KB :2010/04/24(土) 12:22:01 ID:96RBWMzD
お絵かきぱっとのようなものを作っています。 graphics を使って 書いた絵を、ローカルに保存するやり方教えてください。 すいませんがよろしくお願いします><
>>46 Player10以上かAIRを使う。
→ 「save JPG OR PNG Flash OR AIR」 でググる。
48 :
Now_loading...774KB :2010/04/24(土) 20:06:16 ID:lZSTBvdB
FlashDevelopでActionScript3.0を扱っています。 画像の中心を基点(軸)に回転させたいのですが、 基点が画像の左上になっているため、意図しない挙動になります。 基点を中心に移す方法か、そのためのアルゴリズムを ご存知でないでしょうか?
>>48 回転後、左上と中央の距離分、移動させればいいです。
高校一年生の数学なので、中学生以下だったら「三角関数」でググってみよう。
「actionscript 画像 回転」でぐぐれ
FlashDevelopでパブリッシュすると 戻り値がねーぞ馬鹿やろー!と突き返されてしまいました。 public function textF(dx,dy,dw,dh){ var tf:TextField=new TextField(); tf.x = dx; tf.y = dy; tf.width = dw; tf.height = dh; return addChild(tf); } このfunctionの戻り値は何ですか?教えてください。
52 :
Now_loading...774KB :2010/04/24(土) 21:56:16 ID:elJsaX+/
tf。型はDisplayObject。
54 :
Now_loading...774KB :2010/04/25(日) 03:37:31 ID:jbx9jiOW
CS4,Papervision3d(2.0),WinXPです。
Plane上に配置した複数の細長いCubeの高さをダイナミックに変更するには
どうしたら良いでしょうか?
つまり、Plane内に複数のCubeが入れ子で入っている状態で、お盆(トレー)の
上に複数の四角棒がキノコのようにニョキニョキと生えている感じです。
理想は:
ttp://www.verbatim.jp/senshuken/?id=26061 最初、CubeA.height としましたが、このようなプロパティが無いためダメでした。
目標は、Event.ENTER_FRAME で
function onFrame(frameEvt:Event):void {
CubeAの高さ++;
}
のようにして、縦に伸長させることです。
よろしく願います。
>>54 びっくりするぐらいわかってないので、ドキュメントなりリファレンスを読み直そう、
56 :
Now_loading...774KB :2010/04/25(日) 06:04:52 ID:L/8nanfy
SharedObjectを使ってローカルに保存した画像を読み込もうとしています。
以下↓を参考にしたのですが、エラーの解決ができません。
http://cakey2.blog65.fc2.com/blog-entry-46.html ソースは以下です。よろしくお願いします
var so:SharedObject = SharedObject.getLocal("so"); //@変数宣言の仕方がわからない。
var mc:MovieClip = new MovieClip();
var bitmapArray:Array = so.data.bitmapdata; //Aデータの読み込みはこれで正しい?
var tmpWidth:Number = bitmapArray.length;
var tmpHeight:Number = bitmapArray[0].length;
var bmd:BitmapData = new BitmapData(tmpWidth, tmpHeight, true);
for (var tmpX:Number = 0; tmpX < tmpWidth; tmpX++) {
var cols:Array = bitmapArray[tmpX];
for (var tmpY:Number = 0; tmpY < height; tmpY++) {
bmd.setPixel32(tmpX, tmpY, cols[tmpY]);
}
}
mc.attachBitmap(bmd, 0);
addChild(mc);
tmpYのfor文のループ条件が間違ってる。 最後の2行もよくわからない。 AS2なの?AS3なの?
58 :
Now_loading...774KB :2010/04/25(日) 11:42:56 ID:L/8nanfy
for文間違ってました、ありがとうございました。 AS3です。が、コピー元はAS2のようでした。 movieClipでなくBitmapを使うとできたので 一応、以下にソースを書いておきます。 var so:SharedObject = SharedObject.getLocal("so"); var bm:Bitmap = new Bitmap(); //MovieClipでなくBitmapに変更。 var bitmapArray:Array = so.data.bitmapdata; var tmpWidth:Number = bitmapArray.length; var tmpHeight:Number = bitmapArray[0].length; var bmd:BitmapData = new BitmapData(tmpWidth, tmpHeight, true); for (var tmpX:Number = 0; tmpX < tmpWidth; tmpX++) { var cols:Array = bitmapArray[tmpX]; for (var tmpY:Number = 0; tmpY < tmpHeight; tmpY++) { bmd.setPixel32(tmpX, tmpY, cols[tmpY]); } } bm.bitmapData = bmd; addChild(bm);
addEventListenerで追加したリスナーは removeEventListenerで削除しないといけないというのは理解出来るのですが、 みなさんはどのようにして削除してますか? 各コンポーネントで一つ一つremovedイベントをキャッチして削除しているのでしょうか? 例えば大元のウインドウを閉じようとしたときに そのウインドウの子のアイテムに追加されているイベントリスナを 削除する様な方法があったりするのでしょうか? 皆様のお知恵を拝借したくよろしくお願いします。
>>59 そういう場合は大元のウィンドウがまずウィンドウの外で発生する
イベントをlistenして、それを受けてウィンドウが改めてウィンドウ
内の子アイテムに向けたイベントを投げるか、bindingで更新通知が
飛ぶようにしている。Flexで部品の再利用性を高める場合ね。
AS2です。 windowコンポーネントのタイトルバー部分の高さを取得する方法はあるでしょうか?
64 :
Now_loading...774KB :2010/04/26(月) 21:50:47 ID:7xZF7eS7
配列に対してaddEventListenerをすることはできるでしょうか? 以下のような書き方では、実行されなかったのですが……。 for (var i:int = 0; i < 10; i++) { boxs[i] = new Shape(); boxs[i].graphics.beginFill(colors[i]); boxs[i].graphics.drawRoundRect(tmpX, tmpY, tmpSize, tmpSize, 5, 5); boxs[i].graphics.endFill(); addChild(boxs[i]); boxs[i].addEventListener(MouseEvent.CLICK, changeColor); }
>>64 shapeってマウスイベント拾わないんじゃない?
>>64 ShapeとSpriteの違いを確認しろ
67 :
Now_loading...774KB :2010/04/27(火) 00:15:40 ID:NgUUZROY
>>65 >>66 ありがとうございます。
ShapeをSpriteに変更したところ、無事実行できました。
Shapeは「Spriteより機能を減らす代わりに実行速度を上げたもの」だそうですね。
知りませんでした。
68 :
Now_loading...774KB :2010/04/27(火) 02:04:32 ID:iEKby/CO
CS4,WinXP,AS3(Player10) MCの入れ子の階層数をスマートに調べるにはどうすれば良い でしょうか? 例えば、あるMC01が MC01{ MC02{ MC03a{ },MC03b{ } } } となっていた場合、 3階層として把握したいです。 今考えているのは、各層のMCに var kaisou:int という変数を置いて 入れ子側より parent.kaisou++; と子MCが生成する度に親側に 追加するという方法です。 しかしこれでは、MC03a と MC03b がそれぞれ親に数を足すことに なるので都合が悪いです(計算上、4階層になってしまう)。 手元の本やWebでは入れ子が何個あるかを把握する numChildren はありますが、階層数が得られるプロパティが見つかりません。 アドバイス願います。
各MCに階層用の変数を置いて、子を追加した時に親の値と比較して 親の値が子以下だった場合に子の値+1を代入する。 子の値+1を代入した場合は、その親にも同様の処理を行う。
変数とか持たせるとバグの温床にならないか。 階層を取得したい時に、ルートから再帰呼び出しで数えた方が確実だと思う。
なんか適当に書いてみたけど これで動くかな function getChildDepth(base:DisplayObjectContainer, target:DisplayObject, depth:int=0) { if (target.parent == null) return 0; depth++; if (target.parent == base) return depth; else return getChildDepth(base, target.parent, depth); }
>>63 にレスがもらえないのは何か情報が足りないから答えてもらえないのでしょうか?
お前の態度が気に入らないってパターンでしょうか?
誰も知らない(=方法が無い)だけでしょうか?
>>72 知らない / 興味ない / 値を求めること自体が筋違い、じゃない?
今時AS2×コンポーネントなんてニッチだろうし。
Window とその子 MC mask_mc との bouns を比較すればわかるっぽいけど、
正直実装次第だし、やっぱり個人的には「値を求めること自体が筋違い」だと思うな。
コンポーネントなんだから、コンポーネントらしく使った方がいいよ。
74 :
68 :2010/04/27(火) 21:49:05 ID:AoKPE/0I
>>69-71 レスありがとうございます。
71さんの記述をMCのタイムラインのフレームアクションとしてこのままコピペ
したところ、文法エラーだらけになりました。
ただ(幸いですが)、今日買った「ActionScript3.0入門ノート[完全改訂版]」(大重 美幸 著)
のp081に、同時に考えていた別案(最深の位置にあるMCの把握)に近いサンプルが
ありました(再帰呼び出しを使用しています)。
本来の目的は、最深のMCの変数をその親に渡して → 親は子の変数を書き換えて
その上の親に渡して → ・・・ と、最深MC→Topに変数を伝播させることです。
そのために最深MCまでの階層数または最深MC名の把握がしたかったです。
※なお、「ActionScript3.0入門ノート」のサンプルでは最深MCが複数の場合、1個しか
把握できません(下記。 ** 著作権上、改変しています)。
function deepestMC(mc:MovieClip):MovieClip {
var gaitouMC:MovieClip;
if (mc.numChildren==1) {
return (mc);//シェイプの場合mcを返す
} else {
var koMC:MovieClip=mc.getChildAt(1) as MovieClip;//入れ子のmcを取り出す
gaitouMC=arguments.callee(koMC);//再帰呼び出しを行う
return (gaitouMC);
}
}
var endMC:MovieClip=deepestMC(this);
trace(endMC.name);//名前を出力する
複数の最深MCを把握するにはどう改造すべきでしょうか?
>>72 AS2でコンポーネント使ってないから、自分も知らないし興味ないです、すまん
>>74 子 MC を追加する際、その MC が最深かどうか確かめ、最深 MC を Array にしておけば?
ちなみにその関数、最初の末端の MC 返すだけで、意味ないよ。
#あと、3行目「if (mc.numChildren==0) {」だよね。
結局何をしたいかがイマイチ明確じゃないんだけど、
「カスタムイベント」とか「二分木」とかでググると幸せになれるかも。
>>72 具体例がないからわからんけど、AS2のコンポーネントって1フレームあと取るとうまく行く時があったような気がします。
なにかはわからないけど、好印象ではありませんでした。
コンポーネントってas3だとお利口さんなの?
Tweenerなどのトゥイーンライブラリは、 秒数で動きを指定しますが、 あれって内部的にどんな計算したらいいんでしょうか。 フレームレートを取得して、それで秒数に対して何フレームかだとは思うんですが。 たとえば、3秒で動きを完了したいとした場合、30fpsだと 90フレームで動きを完了したらいいことになるというのはわかります。 あとは、Tweenを90フレームに区切る方法をどうしたらいいでしょうか。
>>78 入力 [0.0-1.0] / 出力 [0.0-1.0] のイージング関数を用意。
( 経過時間 / 完了時間 ) で呼び出し、出力をスケール。
>>76 う〜んカスタムイベントも二分木探索もあまり関連するようには
思えないのだが。
>>74 普通に再帰でとれるよ。テストしてないけどこんな感じ。
public static function getDeepestMovieClips(rootMC:MovieClip):Array{
var result:Array = [];
var maxDepth:int = 0;
function visit(mc:MovieClip, depth:int = 0):void{
for(var i:int = 0; i < mc.numChildren; i++){
var child:* = mc.getChildAt(i);
if(child is MovieClip){
visit(MovieClip(child), depth + 1);
}
}
if(depth > maxDepth){
maxDepth = depth;
result = [mc];
}else if(depth == maxDepth){
result.push(mc);
}
}
visit(rootMC);
return result;
}
>>80 >カスタムイベント
やってることは、もろイベントバブル。
>二分木
親子関係の巡回は二分木の基本です。
>>81 二分木なんて書くから深読みしちまったい。
「イベントバブル」「木の巡回」ってストレートに書いてくれないと
想像力豊かな俺っちは混乱するぜよw
83 :
68&74 :2010/04/28(水) 18:03:03 ID:0UK5pUP7
>>76 >>80-82 レスありがとうございます。
別件で直ぐには取り掛かれませんが、
結果が出ましたら報告します。
84 :
Now_loading...774KB :2010/04/28(水) 21:04:56 ID:a9MLHK1G
<環境> OSはWinXP-Pro,CS4使用,AS3 ステージにaddChildされたMC(これにリンケージされたカスタムクラス名は「MojiT_01」)から rootの変数の参照で質問です。 (同じ範疇で2つの質問) asファイルの中身は下記。 public class MojiT_01 extends MovieClip { var rootMC:MovieClip=new MovieClip();// rootMCの宣言 //var rootTL:MovieClip=root as MovieClip;// ← 1a) ここで使うとrootTLは下のtraceでnull になる public function MojiT_01() { //rootMC=MovieClip(root);// ← 2a) ここで使うとエラー txt.addEventListener(Event.CHANGE,txt_handler);// テキストの文字列の変更 } // private function txt_handler(evt:Event):void { var rootTL:MovieClip=root as MovieClip;// ← 1b) ここならOK rootMC=MovieClip(root);// ← 2b) ここならOK trace("obj : "+rootTL+", "+rootMC); trace(" value : "+rootTL.tmpVal+", "+rootMC.tmpVal);// rootの変数を参照 } } 要は、rootを参照するための記述をどこに置くかということで、1a),2a)の位置は駄目で、 1b),2b)はOKということが色々試した結果わかりましたが、偶然の産物のようなもので、 他の人に理由の論理的な説明が出来ません。 どなたかAS3の文法に沿って筋の通った説明ができるヒントを頂けないでしょうか? つまり、「コンストラクタの前で1a)を書くと〜の〜の理由により不可」とか、「〜の理由により、 コンストラクタで2a)のようにキャストすると〜になるので、〜するためにリスナー関数内に書く] という感じです。 すいませんが、宜しくお願い致します。
rootの値はMojiT_01のインスタンスがaddChildされた時にセット される。 addChildする前にまずMojiT_01をnewしなければならないけど 1a, 2aの記述はこのnewした時に実行される。なのでこの段階 ではrootはまだnull。 1b, 2bはイベントハンドラの中だから大抵はステージにaddChild されて画面上に表示された後にようやく呼ばれる可能性がある。 なのでOK。
86 :
68&74 :2010/04/28(水) 23:53:01 ID:Hmb0r5d8
>>80 実際にやってみました。
trace(getDeepestMovieClips(this).length); ならば、最深部のMCが2個のとき
2が得られますが、MC名の一覧を得る方法が分かりません。
たぶん、for..in とか for each..in を使うと思いますが、適用方法が分かりません。
試しに下のようにしましたが何も出ません。
for each (var i:MovieClip in getDeepestMovieClips)
{
trace(getDeepestMovieClips(i));
}
どうすべきでしょうか?
※あと、80さんの全部の行の先頭に全角スペースが入っています。
勉強不足過ぎるだろ。 80のソースを読んで、解らない所は自分で調べて理解するべき。
88 :
Now_loading...774KB :2010/04/29(木) 03:41:52 ID:dMiKRI0W
ローカルにデータを保存する方法を試しているのですが、 shadeObjectの関数clear()は、 「ローカルのデータ全てを消去する」という意味で合っているでしょうか? もしそうでなければ、 ローカルのデータをすべて消去するには、どのようにする 必要があるでしょうか? よろしくお願いします。
90 :
88 :2010/04/29(木) 04:24:04 ID:dMiKRI0W
そうでしたか! ありがとうございます!
actionscript3.0を使っています。 メモリ管理の点で何か注意しておくべきことはありますか? 思いつくことで結構ですので教えてください。よろしくお願いします
>>85 あんがと。
要はタイミングの問題ってことですね。
93 :
Now_loading...774KB :2010/04/29(木) 13:54:42 ID:2ow0LloQ
CS4,WinXP,AS3 ステージ上に単純にMCを3つ配置し、それぞれに適当に入れ子MCを 適当な数配置し、さらにこれらの子供に適当な数のMCを入れました。 (計21個のMC。全部に個別のインスタンス名を付けている) まず、それぞれの名前(インスタンス名)を把握しようと最初の(親の) 3つのMCの1つ(elem_0)にフレームアクションとして var thisName:String=name; trace("name= "+thisName); を書いたところ、下記のエラーが出ました。 [場所] シンボル 'elem_0' [説明] 1026: コンストラクタ関数はインスタンスメソッドでなければなりません。 なぜエラーになるのでしょうか? やっていることは、メチャ初歩的なことなんですが・・・
94 :
93 :2010/04/29(木) 14:05:40 ID:2ow0LloQ
自己解決しました。 MCのライブラリ名とインスタンス名が同一だったのが原因でした。
95 :
Now_loading...774KB :2010/04/29(木) 21:09:54 ID:RyLowC//
>>95 顔写真のアップが入れ替わるとこはマスクレイヤーにMCをいれて
そのMCを変化させる
MCをどう変化させるかが肝で
この場合細いシェイプ(シェイプトィーンで微妙に変化させてる)を
ゆっくり複製してるというのが基本のようだけど
AS使わないでも似たようなものはできるんじゃないかな?
という説明じゃ多分ぴんとこないかもしれない
とりあえずマスクレイヤーを使ってみれば判るんじゃないかな
ってASスレ的な答えじゃないなw
ちなみにモザイク部分はこういうの使ってるんじゃないかな
ttp://hakuhin.jp/as/raster_efc.html#RASTER_EFC_02
97 :
95 :2010/04/29(木) 23:53:29 ID:RyLowC//
有り難うございます。 やっぱりAS使わないで作るほうがいいんですかね? 頑張ってみます!
>>95 あ〜ごめんAS使わないで作るほうがいいとはいってないよw
staticによる静的関数内から、 stageのフレームレートを取得するにはどうすればいいでしょうか。 stageプロパティが取得できません・・。
>>99 その静的関数にstageへの参照を渡すか、ステージ上にある表示オブジェクトを渡す
stageへの参照を持った別の静的クラスを作って、そこから取ってくる等々
101 :
Now_loading...774KB :2010/04/30(金) 18:39:25 ID:mNve1iaH
CS3/CS4のアクションフレームパネル左側にあるActionScriptの一覧表 (最上位から始まる表です)はどのようにして使うのでしょうか。 かなり検索しましたが使い方を説明したサイトをみつけることができま せんでした。ご存知の方お願いします。
>>101 関数の一覧のこと?
普段使わないけど、関数を調べたり、入力するためじゃろ
携帯向けのフラッシュ作るときはちょっとだけお世話になった
104 :
101 :2010/04/30(金) 19:38:47 ID:mNve1iaH
>>101 >>103 レスありがとうございました。
ActionScript2.0のころはわかりやすく表示してありましたが3.0は
Adobeサイトにも主だった説明がなく?、一般ユーザの方のサイト
にもみかけませんでした。
参考書「詳細!ActionScript3.0入門ノート」を買いましたがアク
ションツールボックス(名前もはじめて知りました)の説明が一切
なくエレメントを覚えていることを前提にして書かれているようです。
たまにしか使わないのでヒントがないと苦しいです。
すいません、質問です。ライブラリに symbol0 symbol1 symbol2 symbol3 symbol4 という5つのMCシンボルが登録されています。この5つのシンボルをASでステージに置く場合 var obj:Array=new Array(); for(var i:int=0; i<5; i++){ var symbol:String="ObjSymbol"+i; obj.push(new ObjSymbol()); var num:int=obj.length-1; obj[num].x=this.stage.stageWidth/2; obj[num].y=this.stage.stageHeight/2; this.addChild(obj[num]); } というスクリプトだとエラーがでます。 単純にfor文使わないで obj.push(new symbol0()); obj.push(new symbol1()); obj.push(new symbol2()); obj.push(new symbol3()); obj.push(new symbol4()); でやればうまくいくのですが、for文使った場合 どう変更すればいいのでしょう?
エラー内容くらい書いてくださいよ
getDefinitionByName
108 :
105 :2010/05/02(日) 02:41:31 ID:XHQaxr1+
>>107 ありがとうございます。
文字列からクラス参照させる関数があったんですね。
解決しました_@。@_
携帯用lite2のsharedobjectではまってます。 so=SharedObject.getLocal("mydata"); 携帯だと↑のオブジェクト生成が完了するのにラグがあるみたいで うまくプロパティを参照できません。 適当にフレーム回してからなら参照できることはできるのですが、あいまいなのでしっくりきません。 読み込み完了を教えてくれるメソッドか何かありますか?
111 :
Now_loading...774KB :2010/05/05(水) 02:06:19 ID:XKeFnd5I
WinXP,CS4,AS3 入れ子MCのテキストフィールドの変化を 子(mc01)→親(mc02)→その親(mc03)・・・ の流れでドミノ倒しのように伝達したいのですが、mc03以降がうまくいきません。 最深のMC:mc01以外は共通の構造を持ち、模式的に書くと下のようになります。 mc03{ txt, mc02{ txt, mc01{ tx t} } } ASはchangeイベントを使い、MCにほぼ共通で下記です。 txt.addEventListener(Event.CHANGE, txt_changed); function txt_changed(txtEvt:Event):void { //親のテキストフィールド(txt)を書き変える //親の関数を呼び出す // ※上の2つは最上部のMC以外に書いている } 子(mc01)から親(mc02)の関数を呼び出せたのですが、その後が続きません。 Event.ENTER_FRAMで周期的に変化をチェックしようと思いましたが、これでは常時 SWFが動くことになり、PCに負荷が掛かります。 この場合、どういう方法が考えられるでしょうか?
112 :
111 :2010/05/05(水) 02:14:46 ID:XKeFnd5I
(補足です) あと、dispatchEventでイベント伝達も考えましたが、これもテキストフィールドの 変化を感知しないと始まらないので保留しています。
(自己レス) すいません。自己解決しました。 親の関数を呼び出した際に、親の関数自体がその親を呼び出すように すればOKでした。
なんで僕の質問にはものすごい勢いで回答してくれないんですか? 勢いはさておいて回答やレスすらありません。 ここの住人はくず場仮ですね
質問者は質問以降のレスに質問時のレス版を名前欄に入れること、等 質問スレにはそれなりのルールがある ルールを無視した質問はスルーされる可能性が高い まずそれをチェックしてくれ 次に質問が日本語になっているかチェックしてくれ 意味のわからない質問はまずスルーだ あと誰が考えてもぐぐった方が早いとか、それ基本的な質問過ぎるだろ?ASの質問じゃねーじゃん という質問もこのスレではスルーされることが多い あと高度すぎるとかマニアックすぎるとか解答確率の低いと思われる質問にものすごい勢いでレスを期待するのは土台無理 できる人は暇人じゃないでしょう、このへんは結局運です
116 :
115 :2010/05/05(水) 17:16:00 ID:51qHU/u6
xレス版 ○レス番
ありがとうございます。
なぜスルーされたのかも考えず感情的になり、見苦しい書き込みをして申し訳ありませんでした。
チェックする点を再度確認したうえでまた質問させていただきます。
>>115 さん本当にありがとうございました。
質問させていただきます AS2.0です http;//flash.com/12345.htmという架空のページがあります。 単純にここに飛ばすボタンを作るには on(release){ getURL("http;//flash.com/12345.htm") } と書けばOKです。 今回は簡単なパスワードを設けたいということで、"12345"の部分を手入力させたいのです。 テキストボックスに"12345"と入力してボタンを押すと http;//flash.com/.htmに12345を付加したURLでアクセスするようにするにはどうすればいいでしょうか?
>>118 getURL("http;//flash.com/12345.htm") の引数を適当にhpURLと仮定して。
hpURL= "http;//flash.com/"+パスワード文字列+".htm";
で、パスワードのテキストフィールドは password_txt.password = true;
乙です! めっちゃ助かりました!
121 :
Now_loading...774KB :2010/05/08(土) 07:14:16 ID:BhLXeKtF
構文についての質問です。 [1]のようなイベントリスナーの呼び出し方で、 [2]を[3]のように書き換えたいのですが、[3]ではうまくいきません。 「evt.target」の型変換がうまくいっていないようなのですが、 どのようにしたらいいでしょうか? [1]. char.addEventListener(MouseEvent.CLICK, gagagagaga) [2]. private function gagagagaga(inChar:BaseCharacter):Function { return function (evt:MouseEvent):void { inChar.setWidth(0.0); inChar.setHeight(0.0); } } [3]. private function gagagagaga(evt:MouseEvent):void { var inChar:BaseCharacter = evt.target as BaseCharcter; inChar.setWidth(0.0); inChar.setHeight(0.0); }
BaseCharcterは何を継承した型なの?
123 :
121 :2010/05/08(土) 07:28:53 ID:BhLXeKtF
BaseCharcterのtypoじゃないの?
mouseChildrenをfalseにしてないとか?
>>121 evt.targetをevt.currentTargetにしてみる。
仮にcharの上にlabelが貼り付けられていて、このlabelの上から
charをクリックすると、このイベントがcharで処理される時点
ではevt.targetはlabelでevt.currentTargetがchar。
あと[2]も動かないと思うのだが・・・
127 :
121 :2010/05/08(土) 22:33:44 ID:BhLXeKtF
TextFieldについて教えていただきたいのですが テキストフィールドを新しくASで作って ステージへaddChildで配置。 そこへテキストを表示させる場合 表示させるテキストの文字数にあわせて自動的に テキストフィールドの幅は広がるんでしょうか。 アルファベットで文を表示させた場合、右端が欠けるのですが TextFieldにwidthで幅を指定するなどしなけないとかありますか。
130 :
128 :2010/05/08(土) 23:11:18 ID:volEqeu4
>>129 物凄い勢いの回答ありがとうございます。
作ったテキストフィールド.autoSize=TextFieldAutoSize.LEFT;
指定したら文字にあわせて広がってくれました。
131 :
Now_loading...774KB :2010/05/08(土) 23:45:30 ID:w1p96kMo
スライドショーで 外部画像でサムネイル一覧で、外部画像をMCに読み込ませていますが、 これにnextボタンをつけたいのですが on (press) { Num++; _root.photo.load_mc.loadMovie("p"+Num+".jpg"); _root.photo.gotoAndPlay(2); _root.info = comment; } でやったら、最初の1からカウントされます。 現在読み込まれている画像の番号からの カウントアップはどうすればいいでしょうか。 あとインスタンスinfoに外部テキストキャプションがでません。
>>131 _root.info = comment;
ここはたぶん
_root.info.text = comment;
それでもためならtrace(comment)でコメント自体の参照が出来ているか確認
そのスクリプトはどこに書かれてるの?
試しにこれでどうかな?
_root.Num++;
_root.photo.load_mc.loadMovie("p"+_root.Num+".jpg");
133 :
131 :2010/05/09(日) 00:17:14 ID:NAa60t9K
>132 どうもです。でもだめでした。 on (press) { _root.Num++; _root.photo.load_mc.loadMovie("p"+_root.Num+".jpg"); _root.photo.gotoAndPlay(2); _root.info.text = comment; } 例えばサムネイルからのp3.jpgをロードしキャプションはp3のものが表示されますが nextボタンを押すと 画像は最初に戻ってしまいp1.jpgがロードされ次にp2、p3、p4・・・・となってしまいます。 そしてキャプションはp3のものがずっと表示され続けます。 スクリプトはボタンシンボルに書いてます。 ちなみにサムネイルのMC onClipEvent (load) this.loadVariables("maisu.txt"); function setPic(a,b) { sam = "mc" + a; this.attachMovie("pic",sam,a); this[sam]._x = a * 105; this[sam]._y = 0; this[sam].mc.loadMovie("s"+b+".jpg"); this[sam].comment = this["info"+b]; this[sam].fileName = fileName="p"+b+".jpg"; ウェブ上のサンプルをDLしたもので初心者でよくわかってません。
>>133 なるほど、1から作った方が早そうだけど、
要は、各サムネイルのクリックイベントに
_root.Num = 自分の番号;
を入れる
コメントの方はこんな感じで番号と連動させる
on (press) {
_root.Num++;
_root.photo.load_mc.loadMovie("p"+_root.Num+".jpg");
_root.photo.gotoAndPlay(2);
_root.info.text = _root['mc' + _root.Num].comment;//こんな感じで番号からコメントを取得する方法を実装する
}
135 :
131 :2010/05/09(日) 01:12:18 ID:NAa60t9K
>>134 すみません。同じ結果でした。たぶん私の説明がへたなのです。
最初にs3.jpgサムネイルをクリック
→インスタンスphotoにp3.jpg
→インスタンスinfoにinfo3のキャプション
が表示される
その後にNEXTボタンをクリックすると
→インスタンスphotoにp4.jpg
→インスタンスinfoにinfo4のキャプション
となってほしいのですが
→インスタンスphotoにp1.jpg(1からはじまる)
→インスタンスinfoにinfo3のキャプション(キャプションは変わらず)
となってしまいます。
>>135 だから「s3.jpgサムネイルをクリック」のタイミングでNumを3にする処理を追加
137 :
131 :2010/05/10(月) 21:49:39 ID:CSKrm7jV
間が空きましたがすみません。 どなたか教えていただくとありがたいです。 136さんの >s3.jpgサムネイルをクリック」のタイミングでNumを3にする処理 がどうしてもわりません。 サムネイルには on (press) { _root.photo.load_mc.loadMovie(fileName); _root.photo.gotoAndPlay(2); _root.info = comment; } でインスタンスphotoに読み込みしてます。
>>137 on (press) {
_root.Num = 画像番号;
_root.photo.load_mc.loadMovie(fileName);
_root.photo.gotoAndPlay(2);
_root.info = comment;
}
全体がわからないから完璧に動作するスクリプトは教えられないよ
今出てる情報でわからないなら先にちょっと勉強した方がいい
AS3ですメモリの解放してみたいんですが例えば menuっていう名前の子供をたくさん持つスプライトがあったとして removeChildでmenuだけステージから切り離してnullを代入すれば menuの子供達も自動的にメモリから削除されたりします?
>>139 基本的に参照がなくなればそのうち消される
参照がないっていうのはアクセスする手段がない状態やね
>>139 Flash はメモリ解放をしていいかを判断する方式に Mark & Sweep を使っていて、
stage からたどれる表示オブジェクトやそのオブジェクトが持つ参照、
また static な変数からの参照がされていないものを解放する。
つまり、たとえ null を入れたからと言って、そこからの参照が消えただけであって、
他のところで参照されていたらそのオブジェクトが置かれているメモリは解放されない。
ただ、null を入れることによってその解放されない現象が起きるのを抑えることができるから、
ローカル変数で確実に解放されるとかでなければやっておいて損はないかもね。
142 :
131 :2010/05/10(月) 23:12:01 ID:CSKrm7jV
>>138 さん
どうもです。
自己解決しました。
ちゃんと勉強します・・・
>>141 長文説明ありがとうございます半分くらい理解しました
>stageから辿れる表示オブジェクトやそのオブジェクトが持つ参照
にremoveされた親やその子供達は含まれますか?
ローカルで宣言して追加した子供は親以外の何処からも参照されませんよね?
宣言はグローバルなプロパティで、オブジェクトの生成と参照だけローカルな子達は親が絶縁されても生き残りますか?
質問多くてすみません
144 :
109 :2010/05/10(月) 23:24:55 ID:9IwUgd9y
>>110 ありがとうございました。
LiteのSharedObjectが普通と少し違うのはわかりました。
ただ、なぜかうまくいきません。
SharedObject.addListener("log_data" , gotoAndStop(3));
var so=SharedObject.getLocal("log_data");
stop();
読み込みが完了してからフレームを飛ばしたいんですが
生成前の空っぽの状態で移動してしまいます。
宣言の順番は色々変えてみたのですがだめでした。
そしてまた携帯は駄目なのにPCではうまくいくのがなんとも。。
145 :
Now_loading...774KB :2010/05/11(火) 01:29:41 ID:Fd9iZy5R
■質問です AS3で麻雀の得点計算や和了判定するようなライブラリか例をご存じないでしょうか? TempaiCheckerというのしか見つかりませんでした。
>>145 麻雀ルールはよく分からんけど、本気なら自分で作ったら?
ほんで、試作品を公開して他の人の意見を元に改良するとか。
>>146 まあ、かなり勉強にはなるだろうなあ
でも他にも作りたい物あるし時間もないし、楽したいq
AS3で質問です。 webサービスにアクセスして、 値を取得する共通関数を作ろうと考えているのですが、 いまいち良い実装方法が思い浮かびません。 たとえばPHPとかであれば、 class hoge{ public static function getValue(){ //何がしかの処理 return ****; } } とあれば、hoge.getValue()で値を取得できますが ActionScriptだとgetValue()内でwebサービスにアクセスして、 かつ、イベントリスナに登録して値を取得する関数を別途作る必要がありますよね? ActionScriptでもgetValue()のような関数を作って、 関数内でwebサービスにアクセスして、getValue()の戻り値として、 webサービスからの値を返すような処理を実装する場合は どの様にすればよいのでしょうか。 もしくは、getValue()の戻り値としてwebサービスからの 取得値を返すようにするにはどの様な実装方法が 最適でしょうか。 つなたい質問で申し訳ないですが、 よろしく御願いします。
集合画像を表示し、人物ごとにマウスオーバーしたらその人の名前を表示するというものを作りたいです。 プログラム、処理的にどんな感じになるのでしょうか?
>>148 難しいと思うねぇ。基本的にASのネットワーク処理は非同期で、完了
イベントを受けるには一旦関数を抜けてイベントループに処理を返す
必要があるだろうから、関数の戻り値としてネットワークから取得
した値を返すのは困難だと思う。
関数内からブラウザ側のJavaScriptを叩いてウェブサービスを呼び出し、
あとは結果が保存されるJS側の変数の値をポーリングして処理完了待ち
するトリックは思いつくけど、良いアイデアではないね。
おそらくイベント周りの処理を逐一書くのが手間なので
>>148 に書か
れたような同期処理的な関数を実現したいのだろうけれども、これだと
ウェブサービスから結果が返ってくるまでFlash全体の処理がブロック
されてしまい、ユーザから見るとFlashがフリーズしたように見える
のであまり快適じゃない。
なので多少手間でも非同期で解決する方法を考えるべきだと思う。
**Deferred系のライブラリを使えば多少は非同期処理を書くのも楽に
なるので調べてみると良いかも。
>>150 おっしゃるとおりイベントリスナの実装をめんどく感じたのと、
getValueで値を取得できればいいなという考えから
質問させていただきました。
やはり堅実に手間をかけていくのがよいようですね。
ありがとうございました。
>>143 >>stageから辿れる表示オブジェクトやそのオブジェクトが持つ参照
>にremoveされた親やその子供達は含まれますか?
stage からたどれなくなったので、親とそれが持つ子供は GC の対象です。
>ローカルで宣言して追加した子供は親以外の何処からも参照されませんよね?
いいえ、stage 自身が参照されているので GC 対象ではありません。
stage 自体が private な表示中のオブジェクトを保持していると思えば矛盾は生じないかな。
実際に getChildAt(index) でも取得できるからね。
>宣言はグローバルなプロパティで、オブジェクトの生成と参照だけローカルな子達は親が絶縁されても生き残りますか?
親が絶縁された時点で子供も GC 対象となります。
補足だけど、
子を参照するメンバー変数が public や private であっても、GC から見て親はその子を参照していると考えます。
もし GC されると、親がその子を参照しようとしたときに勝手に null になったら困るしね。
ごめん、リードミスがあったから連投すまない。
>>143 >宣言はグローバルなプロパティで、オブジェクトの生成と参照だけローカルな子達は親が絶縁されても生き残りますか?
親が絶縁されても stage からその子をたどれるなら、親は GC 対象になっても、子は GC 対象にはなりません。
逆に、親も子も stage からたどれないなら、両方とも GC 対象となります。
datagridにコンボボックスを表示しています。 コンボボックスに表示されてる値とプログラムで 管理する値は別のを使いたいと考えています。 例) 0:未選択 1:男 2:女 この場合はプログラムでは0〜2のコードを管理します。 DataGridColumnのlabelFunctionにgetNameという 独自の関数を用意して、コンボボックスの値から 性別名を表示するようにしました。 最初、男を選んだ後、別の項目に移動して 再度性別のコンボボックスにカーソルを持ってくると 選択した内容が消えて(初期化?)しまいます。 前回選択した内容は保持したまま、 変更があった場合のみ変更内容を反映させるにはどのようにすればよいでしょうか?
155 :
Now_loading...774KB :2010/05/12(水) 23:48:06 ID:sOGV0Ch5
AS3 配列のデータををPHPに送りたいのですが・・・
private function save_click():void{
var s:int = 0;
const php_url:String = "
http://localhost/oekaki_hozon.php ";
var request:URLRequest = new URLRequest(php_url);
var params:URLVariables = new URLVariables();
☆☆☆
request.method = URLRequestMethod.GET; //postでも おk そのときはphpも
request.data = params;
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE,onComplete);
loader.load(request);
}
private function onComplete(event:Event):void{
var loader:URLLoader = event.target as URLLoader;
var result:String = String(loader.data);
Alert.show("サーバーに保存されました")
}
おそらく ☆のところに送りたいデータを記述すると思うのですが、、
moji[0]〜moji[m]まで送りたい場合どういう記述をすればよいでしょうか?_
AS3で質問させてください。 swfファイルをURLLoaderでバイナリでロードして、 それをLoader.loadBytes()の引数に渡しているのですが Event.COMPLETEイベントが投げられなくて困っています。 var url:String = "hoge.swf"; var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.BINARY; urlLoader.load(new URLRequest(url)); urlLoader.addEventListener(Event.COMPLETE, onLoadComplete); private function onLoadComplete(e:Event):void { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); loader.loadBytes(e.target.data); } 以上のような感じでProgressEvent.PROGRESSイベントは投げらています。 でもいくら待ってもEvent.COMPLETEもEvent.INITも投げられません。 1日ハマって原因すら分かりません。 よろしくお願いします。
一旦バイナリで読む理由は何なのか。 Loaderのloadメソッドを使わない理由は何?
loadの前にaddEventListenerしないと駄目なんじゃないの
>>156 普通にそのやり方でできるはずだけど、元のswfが壊れてるとかじゃないの?
160 :
Now_loading...774KB :2010/05/14(金) 00:34:35 ID:jUEPrSV4
フォーカスにあるテキストフィールドの 内容を取得するにはどうすればいいですか? selection.getFocus() textfield.text これらの組み合わせ方がわからないです
>>160 AS2.0? ちゃんと環境書いてもらわないとわからないよ。
Selection.getFocus() ではフォーカスが当たっているボタンやテキストフィールドへのパスの文字列を返すから、
そいつを"."で分割した配列などにして for ループで 1 階層ずつたどり、
まずはフォーカスのあたっているオブジェクトまでたどり着く。
次にそれが TextField、もしくはそいつを継承したやつかを確認したらキャストして text プロパティを見に行けばいい。
AS3でfl.transitions.TweenのTweenを使ってて動作がカクカクだったんですけど、 調べたらTweenerとかTweenMaxとかいろいろあるんですね。 比較的単純で普通な(無茶なパーティクルとかしない)アニメーションやるなら どれを使った方がいいとかあるんですか?
163 :
Now_loading...774KB :2010/05/14(金) 19:12:23 ID:WnPwPJQx
Tweenerがいいと思う
164 :
160 :2010/05/14(金) 22:32:14 ID:jUEPrSV4
>>161 すみませんAS2です
教えてもらった通りsplit(".")でできました
ありがとうございました!
165 :
162 :2010/05/14(金) 22:53:55 ID:dPxmoQA1
Tweenがカクカクなのは処理が重いからというよりガベージコレクタにくわれるからでした。 一応直ったんですけどせっかくだしTweenerも使ってみます。
166 :
Now_loading...774KB :2010/05/15(土) 17:03:27 ID:RzcihIVv
開発環境は FlexBuilder3 ActionScript3 になります。 開発環境で動作するときと本番環境で動作するときでは リクエスト先のURLが違うのですが、 皆さんはどのようにしてリクエストの送信先の設定をされてますか? フラッシュが動作する環境に応じて、リクエスト先などのパラメータを 動的に変更する手段が分からないので 皆様の採られている方法をぜひ教えていただけないでしょうか。
リクエスト先がflashが置かれているのと同じドメインにあるとか いう仮定がおけるならApplication.urlで得られるSWFファイルの URLを加工してリクエスト先のURLを作ったりするけど。
168 :
Now_loading...774KB :2010/05/15(土) 20:08:16 ID:250udcIW
Actionscript3.0です 画面全面・画面の外にも画像が敷き詰められており、 マウスを動かすと、画面がマウスの動かした方向にスクロールして、 画面外の画像も表示されるようなフラッシュサイトが色々とありますが、 あれはどのように実装されているのでしょうか? 画像を敷き詰めた巨大なスプライトは用意できたのですが、 マウスの動きによる画面移動、Tweenerを使ったようななめらかな動きを実装する方法が上手に出来ません。 こういった処理のスタンダードなやり方・サンプル等はどこかで公開されていたりするのでしょうか?
169 :
Now_loading...774KB :2010/05/16(日) 00:07:46 ID:AYuEcfVd
AS3,WinXP,CS4 フォーカスを受け取ったテキストフィールドの境界線(枠)の色を変えようと していますが変りません。 function txt_focusIn(focusEvt:FocusEvent):void { focusEvt.target.border=true; focusEvt.target.borderColor = "#FF9900";//枠をオレンジ色にしたい trace("target in= "+focusEvt.target.name); } Traceではターゲット名が正しく出るのですが・・・ どこが間違っているのでしょうか?
borderColorはuintです。
171 :
169 :2010/05/16(日) 00:43:22 ID:AYuEcfVd
>>170 さんきゅうです。
focusEvt.target.borderColor = parseInt("0xFF9900",16);
でOKでした。
なんで一回文字列にすんだよ
173 :
Now_loading...774KB :2010/05/16(日) 03:05:54 ID:mQDD27NW
WinXP-ProでCS4のAS3.0ですが、テキストフィールドの文字(1文字のみ)が ギリシャ文字(αとかΣとか)を含めて大文字か小文字かを判別するにはどうしたら 良いでしょうか? Googleで ActionScript 3.0 正規表現 大文字 小文字 RegExp で検索しましたが アルファベットでの判別方法は書いてありましたが、ギリシャ文字を含めての 方法はありませんでした。 文字コードで判別しようと思いましたが、ギリシャ文字のコードが分かりません。 どなたかお願いします。
ほしゅ
DataGrid内に2列カラムを用意して 1列目にはコード、2列目には名称を入力/表示したいと考えています。 1列目のコードには同じ値は入力できないようにしたいと考えているのですが、 1列目に値が入力したタイミングで値のチェックを行うようにするには どの様にすればよいでしょうか? どのイベントを拾えばよいのか、 そして、1列目の値を取得する方法が思い浮かびません。 何かよい方法をご教授いただけないでしょうか。
>>176 開発環境と試しに記述したコードを書けば吉。
>>177 すみません。
開発環境はAS3になります。
以下に記述したソースのサンプルを記載します。
よろしくおねがいします。
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var dataList:ArrayCollection = new ArrayCollection([{code:1,name:'サンプル名前1'},
{code:2,name:'サンプル名前2'},
{code:3,name:'サンプル名前3'}]);
private function init():void{
//初期処理
}
private function dataCheck():void{
//データを取得する。
var list:ArrayCollection = grid.dataProvider as ArrayCollection;
//以下重複チェック処理
}
]]>
</mx:Script>
<mx:DataGrid id="grid" dataProvider="{dataList}" editable="true">
<mx:columns>
<mx:DataGridColumn editable="true" itemEditor="mx.controls.TextInput" editorDataField="text" headerText="コード" dataField="code"/>
<mx:DataGridColumn editable="true" itemEditor="mx.controls.TextInput" editorDataField="text" headerText="名称" dataField="name"/>
</mx:columns>
</mx:DataGrid>
FlashCS4 AS3なんですが、 とあるMCにマウスカーソルが乗った時だけマウスカーソルを変えるというのをやってるんですが、 なぜかのせると元のマウスカーソルと変えた後のマウスカーソルで点滅してしまいます。 どうすればいいんでしょう・・・ ソース ------------------------------ 代えカーソル.visible = false; addEventListener(Event.ENTER_FRAME, enterfunc); とあるMC.addEventListener(MouseEvent.ROLL_OVER, overEvent); とあるMC.addEventListener(MouseEvent.ROLL_OUT, outEvent); function enterfunc(e:Event):void{ 代えカーソル.x = stage.mouseX; 代えカーソル.y = stage.mouseY; } function overEvent(e:MouseEvent):void { Mouse.hide(); e.target.addEventListener(MouseEvent.MOUSE_MOVE, mousemove); } function mousemove(e:MouseEvent):void{ 代えカーソル.visible = true; e.updateAfterEvent(); } function outfunc(e:MouseEvent):void{ Mouse.show(); 代えカーソル.visible = false; }
180 :
179 :2010/05/18(火) 16:59:59 ID:8h4QSHmI
すません 最後のメソッドfunction outfunc じゃなくてfunction outEventでした
>>179 試してないが
function overEvent(e:MouseEvent):void {
Mouse.hide();
代えカーソル.visible = true;
}
function outfunc(e:MouseEvent):void{
Mouse.show();
代えカーソル.visible = false;
}
>179 点滅するのは、代えカーソルが表示されて「とあるMCからカーソルが外れるから」でしょうね。 代えカーソルがSpriteなら、hitAreaに適当なSpriteを設定すれば大丈夫だと思います。 そんな事より、mousemoveのイベントいくつ作る気ですか。
ありがとうございまーす 点滅しないようになりました。 ついでにマウスイベントも一つになりましたw
//パソコンのログインパスワードの初期設定 var PcPassward:String = "Passward"; //パソコンのログインパスワード正解設定 var PcPasswardAnswer:String = "furavie"; Win CS4 As2.0です。 現在、パスワードを入力して次のフレームにジャンプするところで詰まってます。 ルートにて //テキスト入力の初期設定 //var TextInput:String = "Passward"; //パスワード正解設定 var Passward:String = "flash"; と設定して、パスワードが合っているかの判定をボタンインスタンスに on (release) { if (_root.TextInput == _root.Passward) { play(); } else { _root.PcPassward = "Error"; } } と書いて、正解なら次のフレームへ、誤りならErrorと表示するようにしてみましたが なかなか上手く動いてくれません。 両方の文字変数を同じ文字にするとボタンを押せば次フレームに飛ぶのですが キーボード入力すると、エラー判定になってしまいます ぜひ、お教えくださいよろしくお願いいたします。
FlashDevelopでUIコンポーネントって使えないんですか? 公式のActionScript 3.0 コンポーネントガイドからコピペすると コンパイルは通るんですけどaddChildするときに、 「パラメータ child は null 以外でなければなりません。」 とエラーがでてしまいます。
使える、けどコピペで駄目か どこのか教えてほしい
>184 キーボードで入力した文字は、どこでTextInputに代入しているんですか? >185 もしFlexでコンパイルしているのであれば、Flexリファレンスを見てください。 FlashとFlexではパッケージが違います。
AS3で質問です。 HTTPServiceを使用してサーバからデータを受信するプログラムを作成しています。 サーバにリクエストを送信して、 fault,またはresultイベントで取得したデータに特定の値が入っていたら カスタムイベント(MyEvent.MY_EVENT)を発生させるような仕組みを考えています。 myclass.addEventListener(MyEvent.MY_EVENT,myEventHandler); function myEventHandler(event:MyEvent):void{ //色々な処理 } とした場合、myEventHandlerの引数eventの中に HTTPServiceのresultイベントで取得したデータ(サーバからの受信データ)を 保持させるにはどの様にすればよいのでしょうか? もしくはmyEventHandlerの中でHTTPServiceのresultイベントのデータを取り扱う方法を 教えていただけないでしょうか。
>>188 MyEventクラスにデータを入れるプロパティ作って、
dispatchEventの時にnew MyEventでデータ突っ込めばいいんでないの
190 :
188 :2010/05/19(水) 14:57:04 ID:a694xA9m
>>199 MyEventクラスはEventクラスをクラスを継承しているのですが、
コンストラクタをオーバーロードするということでしょうか?
AS3ではオーバーロードは出来ないと認識していたので、
コンストラクタの引数も
type:String, bubbles:Boolean = false, cancelable:Boolean = false
の3つしか定義できないものかと思ってました。
それとも別の方法があるのでしょうか?
イベントを発生させるときは
dispatchEvent(newMyEvent(MyEvent.MY_EVENT));
と、記述しています。
自作イベントクラスのコンストラクタには、自由に引数を設定できますよ?
192 :
188 :2010/05/19(水) 19:23:13 ID:a694xA9m
>>191 ありがとうございます。
おっしゃるとおり、引数を自由に設定することができました。
FlashDevelopで新しく追加したプロパティに入力支援が対応する条件は何でしょう 一度ファイルを閉じて開きなおすとか?
すぐ補完してくれると思うんだが
196 :
Now_loading...774KB :2010/05/20(木) 08:10:25 ID:a+HbV2A+
>>194 たまにバグか何かでできなくなった場合がありましたが、
FlashDevelopを再起動すると直りました。
あと、すでに「メソッド名()」と入力している場合、
カッコを消してもう一度「(」を入力し、
「メソッド名(」の状態にして0.5秒くらい待つと
必要な引数の一覧が見れます。
197 :
Now_loading...774KB :2010/05/20(木) 08:18:01 ID:a+HbV2A+
以下のソースで作った図形から、色の情報「0xFFFF00」を取得するためには、 どのようにしたら良いでしょうか? なかなか見つからなかったので circle.color()やcircle.getColor()などと入力してみましたが、駄目でした…… var circle:Shape = new Shape(); circle.graphics.beginFill(0xFFFF00); circle.graphics.drawCircle(300, 300, 200); circle.graphics.endFill(); addChild(circle);
>>197 bitmapdataにdrawしてからgetPixel32しなきゃだめかも
199 :
188 :2010/05/20(木) 13:08:06 ID:VjldZhzn
>>193 クラスはこのようなクラスを作成しました。
コンストラクタの引数を一個追加しています。
public class MyEvent() extends Event{
public var resultEvent:ResultEvent = null;
public static const MY_EVENT = 'MY_EVENT';
public function (type:String, bubbles:Boolean=false, cancelable:Boolean=false,event:ResultEvent=null){
super(type, bubbles, cancelable);
resultEvent=event;
}
}
イベントを通知するときは以下のような感じで行っています。
dispatchEvent(newMyEvent(MyEvent.MY_EVENT,false,false,event));
eventはResultEventオブジェクトです。
イベントリスナに追加して、データの取得は以下のように行っています。
addEventListener(MyEvent.MY_EVENT,myEventHandler);
function myEventHandler(event:MyEvent):void{
var obj:Object = event.resultEvent;
}
上記のようにすることでobjにサーバからの結果を取得することができました。
202 :
200 :2010/05/21(金) 16:01:34 ID:clwuVLNi
203 :
Now_loading...774KB :2010/05/22(土) 14:56:55 ID:KkXYGnva
AS3,WinXP,CS4を使用しています。 キーを使わない(要素番号による)並べ替えはどうしたら良いでしょうか? 例えば、 var Arr:Array=new Array(); Arr.push({名前:theName,X座標:xPo,幅:haba,高さ:takasa}); においてX座標の昇順でソートしようとしたら Arr.sortOn("X座標", Array.NUMERIC); なのですが、X座標が(ゼロから数えて)要素の1番目なのでこの要素番号 を使って並べ替えたいです。 ※sortOnをAdobeのヘルプで見たら、第1引数はフィールド名のみでした。 宜しくお願い致します。
>>203 Object内の順番は保証されないからインデックス番号でのアクセスは出来ない
>ギリシャ文字のコードが分かりません。 とか書いてるからスルーされる 文字コードなんてcharCodeAt使って調べろよっていうかググレば一発だし 同じStringクラスにあるcharAtとか使って1文字づつ調べりゃいいじゃん
ちょっと便乗質問になります charCodeAtはutf-16の数値を返すようですが utf-8でやりたい場合はByteArrayを使うほかないでしょうか
>>207 成る程そうですね。charCodeAtで地道にチェックする方が近道ですね。
ほんで、ギリシャ文字を調べてみました。
小文字: α= 945,β= 946,・・・,ω= 969
大文字: Α= 913,Β= 914,・・・,Ω= 937
Ωとαの間に何が入っているのかは分かりませんw
AS3で質問です LAMEで作ったVBRなMP3をSound()で再生してます どうもpositionが正しい値を返してこないようなのですが、 正確な再生位置を取得する方法はありますでしょうか? バイト位置でも秒数でも構いません あと、CBRにしろはなるべくなしでお願いします
211 :
Now_loading...774KB :2010/05/24(月) 14:21:50 ID:LDZYV0dR
AC3で質問です。
イベントリスナの追加と削除についてですが、
関数内でイベントリスナを追加した場合は、
↓こんな感じで関数内で削除も行うべきなのでしょうか。
private function hoge():void{
var
http:HTTPService = new HTTPService();
var param:Object = new Object();
http.url= '
http://www.hoge.hoge ';
http.addEventListener(ResultEvent.RESULT,'hogehoge');
http.send(param);
http.removeEventListener(ResultEvent.RESULT,'hogehoge');
}
これだとイベントリスナが実行されないのですが、
イベントリスナの削除は本来ならどこで行うのがよろしいいのでしょうか。
関数内でオブジェクトを作ってリスナを実装すること自体がナンセンスなのでしょうか。
よろしくお願いいたします。
>>211 速攻でremoveしてるのが問題では?
通信は非同期で行われますから、イベントが起こってから(addした飛び先で)removeするのが常道だと思います
213 :
Now_loading...774KB :2010/05/24(月) 14:38:20 ID:fHsgVScv
外部ファイル読み込みについての質問です。 制作環境 CS3 AS2.0 XP 複数の外部JPGデータを一つのMCにまとめて読み込ますには どのように書けばいいのでしょうか? よろしくお願いします
>>213 普通にfor文じゃダメなん?
あるいは、onDataハンドラは?
>>212 ご回答ありがとうございます。
addしたとび先の関数でリスナの削除を実装するとなると、
HTTPServiceの場合、サーバにリクエストを投げたときに
ResultEvent.RESULTやFaultEvent.FAULTが発生しますので、
どちらか片方しか削除が出来ないといったことは無いでしょうか。
私の理解が間違っていたら申し訳ありません。
>>215 考え方の問題です
両方ともリクエストの結果であり、どちらかが帰ってくれば他方は一生発生しないのですから
どっちが帰ってきても一遍に削除するのが常道でしょう
>>216 なるほど。
仰るとおり、どちらか片方の関数で両方のリスナを削除すれば問題なさそうですね。
addした各々の関数に引数に渡す、
ResultEventやFaultEventでのオブジェクトの
currentTargetプロパティからリスナの削除処理を実装するようにします。
蛇足ですが、リスナの追加と削除の処理の記述ですごい手間がかかりますね。。。
何かうまくまとめられないか考えてみたいと思います。
>>209 亀レスでごめん。toUpperCaseで大文字に変換してみて比較して
みるというのはどうだろう。大文字に変換しても元の文字列と同じ
なら大文字、違う文字列になったら小文字みたいな。
とりあえずtoUpperCaseはギリシャ文字にも対応しているみたいだ。
public static function isUpperCase(str:String):Boolean{
return (str.toUpperCase() == str);
}
実際にテストしたコードじゃないけど、概念的にはこんな感じ。
FlexSDKで文字にアンチエイリアスを掛ける方法が分かりません>< <embed>タグとかいうのでフォントを埋め込めばいいという所までは分かったんですが 具体的に何処にどうやって使えばいいのかがどうにも・・・
>>217 removeEventListenerする理由は何?
>>220 イベントリスナーが不要になった場合は、EventDispatcher.removeEventListener() を呼び出して、イベントリスナーを削除します。
削除しない場合、メモリの問題が発生する可能性があります。
と、アドビのサイトに書かれてあったのと、他のサイトでも、
同様の記事があったためです。
【AS3.0】 マウスオーバでフレームが移動して、移動先の画像がフェードインするようなものを作ってたんだけど、 5フレームに飛ぶと「TypeError: Error #1009: at _fla::MainTimeline/image1()」とエラーがでる。 どこかにremoveでaddEventを消さなきゃいけないまではわかったんだけど、 どこにどうにかけばいいのかわからないので 教えてほしい ※1フレーム目 stop(); //ボタンの設定 btn1.addEventListener(MouseEvent.MOUSE_OVER,idou1); btn2.addEventListener(MouseEvent.MOUSE_OVER,idou2); function idou1(event:MouseEvent) { gotoAndStop(1); } function idou2(event:MouseEvent) { gotoAndStop(5); } //画像の透過 img1.alpha=0; img1.addEventListener(Event.ENTER_FRAME,image1); function image1(event:Event) { if (img1.alpha<1) { img1.alpha+=0.05; } }
function image1(event:Event) { if (img1.alpha<1) { img1.alpha+=0.05; } else{ img1.removeEventListener(Event.ENTER_FRAME,image1); } } removeするのは上記で良いけど、エラーは別の原因じゃないの? 5フレームにimg1が存在していないと予想。
>>223 >5フレームにimg1が存在していないと予想。
そうです、1フレーム目に画像1、5フレーム目に画像2がある状態です。
226 :
224 :2010/05/25(火) 22:56:50 ID:Z54saU6Q
できました。お騒がせしました。
5フレームに飛んだ際にimg1をフェードインさせるなら 5フレーム目にimg1とスクリプトがないとおかしいよ。 img1.addEventListener(Event.ENTER_FRAME,image1); は5フレームに書いてるの? もし5フレーム目でimg2をフェードさせるなら img2.addEventListener(Event.ENTER_FRAME,image2); ・・・・・ を5フレームに書かないと。
228 :
Now_loading...774KB :2010/05/26(水) 10:42:03 ID:ZfaiGg3+
すみません。
AS3で質問なんですが、
画面読込み時にテキストインプットにフォーカスを当てて、
キャレットを表示させるにはどの様にすればよいでしょうか?
下のようなコードで試してみたのですが、うまくいきませんでした。
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml " layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
private function init():void{
textinput1.setFocus();
textinput1.setSelection(0,0);
textinput1.drawFocus(true);
}
]]>
</mx:Script>
<mx:TextInput id="textinput1" x="146" y="47"/>
<mx:TextInput id="textinput2" x="146" y="99"/>
</mx:Application>
上のサンプルではtextinput1にキャレットを表示させようと試みていますが
うまくいきませんでした。
よろしくお願いします。
コピペでご希望通りの動きをしてるんだけど
>>229 私のほうでは同じソースを使ってもやはり期待通りの動きをしてくれませんでした。
環境によって挙動が変わることがあるのでしょうか?
ああすまんブラウザで見てみたらキャレット出てなかったわ FlashDevelop上なら出るんだがなぁ・・・
232 :
Now_loading...774KB :2010/05/26(水) 19:43:06 ID:rzghBUrP
外部swfの再生終了のイベントとかはASだけで簡単にとれるのでしょうか 外部swfのコードは触らない前提で
ルートのタイムラインににベタなムービーなら_totalframesと_currentframeで それ以外なら何を持って終了とするかってことで、簡単にとはいかんでしょう
AS3のタイマー制御関数を使って、ある一定の時間内のみ処理を実行するためにはどのようにすればいいんでしょうか
一定の時間が始まるところでタイマー開始すればいいんじゃないの
最近AS3を始めた超初心者です。 お訪ねしたいのですが、マウスアクションでクリックするとその場所に花が咲くようなスクリプトってありますか? 又はクリックした場所から花びらがぱっと散るようなものが書きたいのですが・・・。 回答よろしくお願いします。
>>236 先ずAS3の良書(自分に合った本)を見つけて勉強する。
スクリプトじゃなくてアニメーションなんじゃないの 花が咲くアニメなら探せば見つからなくもないかもしれないけど それを読み込んでクリックで再生させるスクリプトは自分で作るしかない
CSもってるかどうかも大事
>238はクリックしたとこにアタッチムービーだろ? 入門書読めばわかるな 俺はAS3知らんからあれだけど
アンカーミス。。。236だった
コンパイル時間がクソ長いのによく作るなお前らw
cs4, player9, as3 オーサリングツールで作成されたShapeに、スクリプトでビットマップの塗りを適用することってできますか? Shapeはやや複雑な形なので、lineToとかで描くのは厳しいです。 ごく普通に出来てもよさそうだと思ってたんですが、 beginBitmapFillで矩形を塗って、それをマスクで抜くしか方法はないんでしょうか。
244 :
81 :2010/05/28(金) 19:20:23 ID:wNQhxYeU
>>242 だからみんな fcsh 使うんじゃないの?
245 :
Now_loading...774KB :2010/05/31(月) 04:27:17 ID:OOJ+AV+d
cs5使ってみたが、だめだこりゃ ・オーサリングのインターフェイスがさらに使いづらく固くなった ・コード補完・スニペット等が使えるようになったが、flashdevelopの豊富な機能には遠く及ばず X ・packager for iphone は 例の事件によって無用の長物 X ・CS3から続くオーサリング関連のバグがまだ残っている (いい加減なおせよこのクズ会社)X ・相変わらずコンパイルが超遅い 個人的にはバグがなおってないのにはらわた煮えくりかえった。 アメリカ人ってのは基本機能に不具合があっても平気な人種なのかね? あきれかえるわ。
246 :
Now_loading...774KB :2010/05/31(月) 20:36:28 ID:IACTP8Vn
loaderで呼び出した外部swfのunload時のメモリリークについて悩んでいます。 親swfに複数の子swfを繰り返し呼び出すビューアーみたいなものを作成中なのですが、 unloadした子swfにリンゲージしたMC等のカスタムクラスやドキュメントクラスが含まれいる場合、 ロード/アンロードを繰り返すとメモリが完全にGCされないためか使用メモリがだんだん増えていってしまいます。 おそらく子のクラス定義がGCで削除されていないためだと思います。 そして不可解な事に、この現象はCS4のムービープレビューで再生した時は発生しません。(パブリッシュしたswfをFlashPlayer等で再生すると起こります) load/unload処理やApplicationDomainについては適切に処理しているつもりなのですが、どなたかアドバイスお願いします。 以下はソースです。メモリの監視は「AS3 SWF Profile」で行っています。 //親swfのドキュメントクラスでのロード処理部分(子swfには大量の画像をリンゲージしています) private var loader:Loader; private function loadSwf ( fileName:String ):void{ loader = new Loader(); var info : LoaderInfo = loader.contentLoaderInfo; info.addEventListener(Event.INIT,loaderInitHandler); var appDomain:ApplicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); var context:LoaderContext = new LoaderContext(false, appDomain); loader.load(new URLRequest(fileName) ,context); } private function loaderInitHandler (event:Event):void{ var info : LoaderInfo = loader.contentLoaderInfo; info.removeEventListener(Event.INIT,loaderInitHandler); addChild(loader); } private function unloadSwf():void{ loader.unloadAndStop(); removeChild(loader); loader = null; }
>>246 removeEventListenerと弱参照はペアにする
248 :
246 :2010/05/31(月) 21:59:40 ID:IACTP8Vn
http://sugar310.dip.jp/cgi/upload/source/up24189.swf ↑が上のテスト用に作成したswfなんですが、ロード/アンロードを繰り返しても無限にメモリが増えていくわけじゃないみたいです。
しばらく経つとある程度までは減りますが、ロードする前の水準には戻りません。
(右クリックでメモリ状況のグラフを表示できます)
ローカルでのスタンドアロンプレイヤーによる再生では、メモリが無限に増えていってしまいます。
この挙動は普通なのでしょうか?
ちなみに子swfにカスタムクラスが一切含まれいない場合には、すぐにキレイサッパリGCされます。
249 :
246 :2010/05/31(月) 22:33:19 ID:IACTP8Vn
250 :
246 :2010/06/01(火) 09:22:16 ID:7FLTDGkz
連投してすみません。 どうやらこちらの検証環境の方の問題だったようで、別PCのFlashPlayerで再生したところ問題なくGCされていました。 不可解なのは同じバージョンのFlashPlayerでもPCによって挙動が違ったりすることです。 (同じPC上のFlashPlayerでも通常版はOK、Debug版はNGなんてことも) ブラウザ再生でもGoogle ChromeだとダメだったのにFirefoxやIEだと大丈夫という、よくわからない結果になっています。 実際にメモリリークが原因でコンテンツ再生に支障が出たことは無いですが、メモリがどんどん増えていく状態は気持ち悪いです。
251 :
246 :2010/06/01(火) 11:00:41 ID:7FLTDGkz
さらに検証したところ、どうやらFlashPlayerのバージョンによる挙動の違いの線が濃厚です。 最新版のFlashPlayer「10,0r45」だと外部swfのunloadでクラス定義がGCされなかったのですが、 「10,0r42」で試したら大丈夫でした。
ん? 結局、unloadと当時にGCさせたいってこと? それとも、環境によってGCのタイミングが違うのが困るってこと?
AS3です。 TextInputので率を入力させたいと考えています。 エクセルでいうところの##.#%のような形で入力した値を表示したいと思います。 また、日付もYYYY/MM/DDのような形で 入力の規制を設けたいと思うのですが、 どの様にすればよいか分からず、こまっております。 restrictプロパティで[0-9]と指定して、 数値ののみの入力というのは実現できたのですが 率や日付については出来ておりません。 どなたかアドバイスを頂けないでしょうか。
254 :
81 :2010/06/01(火) 15:37:11 ID:PCqn1aMA
>>253 change イベントで監視すれば?
んでフォーマットに沿ってるかは正規表現で判断。
間違った入力を突っぱねるのを「バリデート」、
正しい入力に修正するのを「サニタイズ」と言います。
ググればいっぱい情報あると思うよ。
255 :
246 :2010/06/01(火) 21:56:37 ID:lfd+xv/1
>>252 いえ、GC自体は頻繁に行われるのでタイミングの問題ではないんです。。
Debugプレイヤーで再生して強制GCしても、子swfのクラス定義の分のメモリだけが解放されません。
残ってしまったメモリは時間が経ってもGCされないので、その状態でload/unloadを繰り返し行うと、どんどんメモリが増えていきます。
とりあえず判っている事は、最新版のFlashPlayer「10,0r45」だとメモリリークして、「10,0r42」だと無問題ってことです。
AS2.0でマウスが動いているかどうかif文で調べたいのですが、 どうしたらいいですか?mouseMoveでは出来ない気がするのですが。 出来ればマウスがどう動いているか(左から右、下から上など)も 取得できればいいのですが。配列にマウスの座標を入れて調べるしか ないですかね?
>>256 >mouseMoveでは出来ない気がする
気がするだけだろw
実際にどういう結果を期待して、どういうASを書いたのか
もっと具体的に示してみれば、どこで間違っているのかわかると思う
>>257 マウスが動いてればtrue、動いてなかったらfalseって返したいとして
mouseMoveでtrueには出来ますよ?止まったらfalseに出来ないのです……
止まっている状態をどう定義するのか知らんけど mousemoveイベント使う以外方法はないよ 動いている方向は前回の位置から角度を計算すれば出来る
>>259 やっぱりフレーム毎にマウス座標を配列に突っ込んで
数フレーム間変化がなければfalse返すって方法しかないんすか
重たいからなるべく別の方法があればと思ったのですが…
>>260 俺だったらタイマー使って指定秒後に動いていませんフラグを立てるか、
最後に動いた時刻を残しておいて、動いてるか調べるときに現在時刻と比較するかな
とりあえず配列使う方法は思いつかないわ
RTMFPについていい感じにまとめてる所はまだないのかな
263 :
Now_loading...774KB :2010/06/04(金) 09:04:01 ID:VWFOfJWw
FLASHゲームのスコアランキングを作りたいです。 FLASHからcgiにスコアを送信するときに、 スコアを偽造されない、うまい方法ってありますか?
>>263 暗号化。
とは言っても Flash のプロセスメモリいじれば偽造は簡単だから、
厳密なのは難しいかなあ。
>>263 ActionScript 3.0で暗号化・復号化のメモ(1) データフォーマットについての予備知識(バイナリ、Hex、Base64...)CommentsAdd Star
ttp://d.hatena.ne.jp/monta31/20080904/p1 (PHPの場合)AS3でByteArrayをPHPに渡して保存するメモ
ttp://memo.kappa-lab.com/2007/12/as3bytearrayphp.html ほか、過去レスで検索してみた。
26 Now_loading...774KB sage 2009/08/08(土) 12:26:19 ID:9bqO6CoH
AS2.0で文字列を簡単に暗号化させるようなことはできますか?
環境、変数をいくつか文字列に保存→暗号化
それをユーザーがローカルに保存
ユーザーが入力→複合化→環境、変数を取り出す→反映
ということをしたいのですが
29 Now_loading...774KB sage New! 2009/08/09(日) 00:36:35 ID:YOa3qRmx
rot13あたりでググれ
266 :
263 :2010/06/05(土) 13:46:01 ID:OhwaQ2Wn
>>264 ,265
回答ありがとうございます。
暗号化だと、暗号化のためのキーを、Flash内部に持たないといけないのでは?
暗号キーと暗号化関数を、Flashから引っこ抜いて、
自前でニセのハイスコア暗号文を生成、httpでサーバに送りつけたら、
偽装できますよね。
正しいクライアントから送られてきたハイスコアであることを、
サーバ側で保証できる方法はあるんでしょうか。
原理的に不可能なら、暗号キーの断片をswf各所に散りばめるとかして
難読化しようかと思ってます。
ぶっちゃけクラックを完全に防ぐ方法は無い 気休めで良かったらリプレイデータも鯖に送りつけて後の検証やり易くするくらいか
268 :
Now_loading...774KB :2010/06/06(日) 04:15:39 ID:+IElA0fz
すごく初心者な質問なので恐縮なのですが 最近AS3.0の勉強を始めたばかりで、プログラムの経験もありません。 バーがだんだん伸びていくような感じにしたくて以下のようなコードを書いたのですが なぜか、もとの画像の約2倍ほどの長さまで伸びてしまいます。 どこをどう直せばいいのか、アドバイスいただけないでしょうか? var barScale:Number = 0; while (barScale<=1.0){ addEventListener(Event.ENTER_FRAME,geji); function geji(Event):void{ barScale = barScale+0.1; bar01.scaleX = barScale; } }
269 :
Now_loading...774KB :2010/06/06(日) 04:47:08 ID:fDmZ+fpk
関数とメソッドの違いについて。 判らなくなって、いろいろ調べてみたら、return で返すのが関数で、メソッドは違う。とあったんだけど。 どうも、そうじゃない気がするんだ。 例えばグローバル関数で String() データを文字列で返す関数があるんだけど。 dataAを文字列だ表す表記は以下のとおり。 String(dataA); 一方で toString() というメソッドがあって。 使用方法は String() 関数と同じなのね。 でも。 dataA.String(); って表記する。インスタンス.String() なのね。 この違いから考えられるのは、メソッドはインスタンス(クラス)専用の命令で、 関数はクラスを必要としない。 メソッドは主語のようなインスタンスがあって、 関数は必要に応じて目的語のような引数を使う。 って考えてみた。 この考え方あってますか?
>>268 よくわからんけど、それ無限ループしないかな
var barScale:Number = 0;
function geji(Event):void{
//毎フレームここが実行される
barScale = barScale+0.1;
bar01.scaleX = barScale;
//ゲージが伸びきったらフレームイベントを外す
if (barScale == 1) {
removeEventListener(Event.ENTER_FRAME, geji);
}
}
addEventListener(Event.ENTER_FRAME, geji);
3.0で質問します。 外部に置いたテキストファイルを読んだり書いたりするswfを 作りたいのですが、ファイルに書き込む処理がどこを探しても 分かりません。テキストファイルに書き出す処理はどのような 方法があるのでしょうか? ちなみにテキストファイルを読み込む部分はこれでうまく行っています。 //読み込むファイルのアドレス情報を作成 var request:URLRequest = new URLRequest("test.txt"); //URLLoaderのインスタンスを作成 var loader:URLLoader = new URLLoader(); //読み込み完了後の処理を作成 loader.addEventListener(Event.COMPLETE,traceData); 〜 よろしくお願いします。
AS3で質問です。 addEventListenerメソッドをオーバーライドするときに 気を付けるポイントはありますか? ある記述をしておかないと挙動が不安定になるなど 注意点があれば教えていただけないでしょうか。
273 :
268 :2010/06/06(日) 14:54:49 ID:+IElA0fz
>>270 ありがとうございます。長く伸びてるんじゃなくて、
無限ループで暴走してエラーで止まってただけだったんですね。
直したらちゃんと動きました!
>>271 AS3 Player 10 File でググる
275 :
274 :2010/06/06(日) 20:21:03 ID:dXvM42NE
>>271 間違えた 「AS3 Player 10 FileReference クラス」 だった
>>269 うん、全然違う
Adobeがアフォで独自用語使いまくってるから混乱してるんだろうけど
普通の言語なら クラス名.メソッド名 って形式のは静的メソッドと呼ばれる
逆に インスタンス変数名.メソッド名 は動的またはインスタンスメソッドと言う
そして関数ってのは、値を返すメソッドのこと
ちなみに静的と動的の違いはクラス内変数スコープの違いかな、ざっくり言うと
インスタンス毎に変数管理しなきゃならない場面でなきゃどっち使ってもいいよ
277 :
Now_loading...774KB :2010/06/06(日) 21:52:36 ID:fDmZ+fpk
えええ? いわゆるfunction関数でも returnしないものは、実は関数でない??
278 :
Now_loading...774KB :2010/06/06(日) 22:35:41 ID:81R78OH1
AS3で質問 同じタイムラインで var a = new A(); //aはムービークリップシンボルのクラス addChild(a); ↑の2行を書くとaがステージ上に表示される。 でも var a = new A(); を例えば1フレームのタイムライン addChild(a); を例えば2フレームのタイムライン で書くとaはステージに表示されない。 なんでだろう? 教えてもらえないでしょうか。
>>278 変数のスコープについて調べると良かろう
280 :
Now_loading...774KB :2010/06/07(月) 01:27:00 ID:jHCOvDYv
281 :
278 :2010/06/07(月) 07:10:27 ID:BpTFr76s
ありがとう。
>>279 エラーは出てないからスコープ内だと思うんだ。
>>280 そうか。。じゃぁ違う問題かな。
もう少し考えて見ます。
282 :
81 :2010/06/07(月) 07:57:09 ID:QYvgySjZ
>>269 基本あってます。
クラスを抽象化し、カプセル化するための手段の一つがメソッドです。
インスタンスを主語とするのが「インスタンスメソッド/動的メソッド」。
クラスを主語とするのが「クラスメソッド/静的メソッド」。
ただ引数云々は関係ないです。
C++ などではメソッドのことをメンバ関数と呼んだりするので、
web なんかで調べると、ややこしくなっちゃいがちだよね。
>>276 うん、全然違う。
ヒント:Java には関数が無い。
283 :
271 :2010/06/07(月) 20:53:15 ID:9u9/uwEO
>>275 さんありがとうございます。
いただいたキーワードを元にググっては書いてある事試したんですが、今のところ思ったような
処理は出来てないです。
あと.browse()っていうメソッドが良く出てくるんですが、これ付けないと書き込みできないのでしょうか?
それと手元の本には□.open("w","","");で開いて□.writeln();で1行ずつ書き込めるから楽勝
みたいな事書いてたと思ってたんですが、よく見たらLiveMotion2.0専用って書いてました。
これってFlashとは別物なんでしょうか?
よろしくお願いします。
サーバ上のファイルを更新するのはCGIを挟まないと無理じゃないの
FlashMX2004を使って、特定の単語が含まれたTwitterの発言を取得するFLASHを作成しようとしています。
http://search.twitter.com/search.atom?q=%23flash の内容をFLASHに読み込めればOKと考えて下さい。
読み込み自体は出来るのですが、日本語が文字化けしてしまいます。
ソースは以下の通りです。
System.useCodepage = false;
var tweet_xml = new XML();
tweet_xml.ignoreWhite = true;
tweet_xml.onLoad = reflesh;
tweet_xml.load("
http://search.twitter.com/search.atom?q=%23flash ");
function reflesh() {
trace(tweet_xml);
}
なお、WEB上に設置するつもりはございませんので、
php等で一度受ける必要も無く、また、出来ればそういった手順も踏みたくないと思っております。
どうすれば文字化けを回避出来るでしょうか。
ご教授願います。
286 :
Now_loading...774KB :2010/06/08(火) 00:31:47 ID:/vCeSj75
初心者です。 actionscriptとPHPと連携するプログラムを作成しようとしています。 actionscripにはsendAndLoad関数や、LoadVarsオブジェクトを使って、 PHPと通信するプログラムが作成できるらしいのですが、 FlashDevelopでプログラムを組むことは可能でしょうか? それともFlashCSとか使わないとだめでしょうか?
>>286 お薦めの2冊
「FLASH BOOKS Version 02.Communication」水野 俊也 (著), 松本 一馬 (著)
「ラーニングバイブル Flash MX ActionScript サーバサイドスクリプト編」胡鵡 (著)
288 :
Now_loading...774KB :2010/06/08(火) 01:39:05 ID:/vCeSj75
>>287 !!
ラーニングバイブルFlashMX〜
はちょうど以前アマゾンで買って手元にあります!!
FLASH MXを使ってPHPとの連携のプログラミングが解説してあるから、
FLASHMXを使ってプログラミングするのが近道でしょうか?
289 :
Now_loading...774KB :2010/06/08(火) 01:46:00 ID:nSdnPmmb
>>288 別になんでもいいんじゃないの?
バージョンは
290 :
Now_loading...774KB :2010/06/08(火) 01:58:34 ID:/vCeSj75
>>288 最新のバージョンだと
adobe flash ビルダーとか、adobe flash pro cs5
とかみたいですが、actionscriptを使ってPHPと連携するプログラム作るという目的
(FLASHムービーは今のところ作る予定はないです)
ではadobe flash ビルダーでもいいでしょうか?
291 :
Now_loading...774KB :2010/06/08(火) 02:16:20 ID:nSdnPmmb
>>288 お前あっちゃこっちゃで聞きまくるのはだめだぞ。
マルチは今後気をつけるように。
actionscriptを使ってPHPと連携するプログラム作るという目的
ということをおれはやったことがないので、なんとも
いえないが本があるんでしょう?
それ見て作ればいいんじゃないの?
なにが目的なん?
作品として会社に見せたいの?
292 :
Now_loading...774KB :2010/06/08(火) 02:38:55 ID:/vCeSj75
2Chのルールがよくわからず申し訳ないです。 趣味で将棋とかオセロの対戦ゲームを作るのが目的です。 (市販の将棋とかオセロのソフトやYAHOOのネットゲームの方が 完成度が高いのは十分わかっているのですが、 プログラミングが子供のころからの憧れなので) actionscript+PHPの関係の本は参考文献が少なくて、 知りたいのはサーバサイドとクライアントサイドのデータのやり取りの方法なのですが 解説はADOBEのソフトを使うことが前提で書かれていて FLASHムービーを作らないのにADOBEのFLASH用ソフト買うかどうかも いまいち踏みきれないところで迷ってるんです。 会社に見せる気はあまりありませんが、 pya!とかで紹介してもらえるプログラムができるといいなあと思ってます。
googleで「as3 php」で検索するとたぶん読みきれない程の情報が出てくるよ
294 :
Now_loading...774KB :2010/06/08(火) 03:12:34 ID:MebAOQJb
2chのルールというか、基本的な掲示板のエチケットでしょ。 よくそれで、ウェブの作品を作れるもんだね。 といってみた。ま、気にするな。
295 :
Now_loading...774KB :2010/06/08(火) 03:34:06 ID:/vCeSj75
>>293 as3 phpで検索すると確かに読み切れない情報が出てくる。
サンプルソースコードも公開しているのもありがたいです。
>>294 ご指摘ありがとうございます。
いろいろ経験して出直してきます。
296 :
Now_loading...774KB :2010/06/09(水) 12:15:48 ID:hFwioXtg
AS2.0を使用しております 配置してあるムービークリップに 先読みしておいた外部SWFのファイル群の中から一つのポインタを渡して 表示されているswfを入れ替えるような処理を実装するにはどうしたらいいでしょうか アバターみたいなムービークリップが配置してあり、 先読みしておいた服のリストから服を選んで入れ替えたりできるようなイメージです。
>>296 単純な方法としては、そのswfを表示して、指定したフレームとかに
gotoAndStopじゃないの?
あるいはattachMovieとかattachBitmapとか
298 :
Now_loading...774KB :2010/06/09(水) 12:46:38 ID:hFwioXtg
レスありがとうございます 外部SWFが全部別のSWFになっているため、 別のフレームに飛ぶような処理では実装が難しいです。 attachMovieは呼び出す側のライブラリに無いMCはアタッチできないと思ったのですが 外部SWFもアタッチできるのでしょうか
>>298 > 外部SWFが全部別のSWFになっているため、
> 別のフレームに飛ぶような処理では実装が難しいです
ちょっと上記の意味がわからない
attachMovieの仕様もその通りだけど、やりたいことと状況がもっと具体的に
わからないと、何が可能で何が不可能なのかこちらでは判断できんです
ただ、場合によっちゃ設計変えたほうがいいんじゃないのか?
大抵の場合、問題となるのはASじゃなくて、設計だと思うよ
そしてこの場合、難しくなるような作りになってること自体に問題があるんじゃないのかな
【環境】AS3.0/CS4 Tシャツなどにオリジナルのプリントができ、Web上でシュミレーション→注文可能なコンテンツを作ろうとしているところです。 (UNIQLO CUSTOMIZEのようなもの) フォームにテキストを入力してもらってから、フォントを選んでプレビュー部に反映させる部分の仕組みがわからず苦労しているんですが、いいやり方はありますかね?
301 :
Now_loading...774KB :2010/06/09(水) 13:31:51 ID:hFwioXtg
絵が大量にあるため一つのファイルにまとめると容量が大きくなり、 転送コストが大きくなる為、必要な絵のみを取得するような仕様が必要になっております。 ASについては初心者のためどういう設計にすればいいのかが今一つ判っておりません。
埋込フォントの使い方は知ってるの?
>>301 なるほど、ちょっとわかった
まず、swfのなかから、一部だけを読み込むということはできないよ
画像を1ファイルにまとめられないのはいいが、いくつかにはまとめられているということ?
大量の画像のなかのどれかひとつを読み込む、という仕様なら問題ない気もするが
304 :
296 :2010/06/09(水) 14:21:19 ID:hFwioXtg
すべて個別のアニメもしくは静止画のSWFを必要な数だけ先読みするような仕様にするつもりです。
>>304 「先読み」の定義が、よくわからないな
たとえば、表示すべき箇所に、表示すべきswfやjpgなどが読み込まれているなら
swfやjpgの表示/非表示を切り替える、当該swfの任意のフレームに飛ぶ、
といった処理で問題なさそうに思われる
そうでないなら、「先読み」されているのは、どこに、なにが?
もし「先読み」されているファイルの内容を複製して表示したいなら、
再度、読み込みが必要になる(ただし「先読み」の恩恵で、キャッシュからの読み込みになり
ロード時間は短縮する)
そして読み込み完了後に、任意のフレームに飛ぶ
設計によっては、読み込まれたファイル上にattachMovieやattachBitmapを
することでも意図するような動作は実現できるようにも思うけどね
>>300 つまり任意のフォントで文字を出す方法が分からないってことか?
307 :
300 :2010/06/09(水) 21:11:47 ID:69hX2kpo
>>306 簡単に言うとまさにその通りです!
入力したテキストを読み取る→任意のフォントに変更→書き出す
ができるようにしたいです。
308 :
Now_loading...774KB :2010/06/10(木) 02:28:17 ID:wETRQM74
309 :
Now_loading...774KB :2010/06/10(木) 12:19:40 ID:fI2mo7Zg
JavaScriptからExternalInterface.addCallback経由で渡すんじゃね
FLASHをActionscript以外の言語で動かすことってできますか? 翻訳機とかあるんでしょうか Actionscriptはまるきり初心者です。
312 :
Now_loading...774KB :2010/06/10(木) 18:43:07 ID:wETRQM74
313 :
ドラえもん吉 :2010/06/10(木) 19:39:52 ID:N7DoTqDv
はなそ!
314 :
Now_loading...774KB :2010/06/10(木) 20:26:58 ID:fI2mo7Zg
>>310 javascriptを使うの?actionscriptからじゃダメ?
ちょっと何言ってるかわからないっすね
>>314 どうあってもJSがイヤってんならPHP側でWebサービス実装してXMLLoader使え
317 :
Now_loading...774KB :2010/06/10(木) 22:16:00 ID:fI2mo7Zg
>>314 返答ありがとう。
いつかは理解できるかもしれないけれど今の自分の知識では少しハードルが高い。
他スレで聞いてみる。
startDrag()を適用してあるMCのドラッグ中に再びstartDrag()を指定してドラッグ可能範囲を動的に変更しようとすると、マウスとの動きの連動が変になるのですが、回避方法は無いのでしょうか?
winXP、FlashMX、AS2.0使用です。
6×6のマス目にp_1_mc〜p_36_mcを配置して、p_1_mc〜p_36_mcの上でホイールを回すと表示が切り替わるというスクリプトを組んでいます。
p_1_mc〜p_33_mcとp_36_mcは正常に動くのですが、p_34、35_mcだけが動きません。
(ムービークリップの上に乗せてもマウスカーソルが指の形にならない)
試しにp_34_mcの名前をp_37_mcに変更した所動くようにはなりましたが、今度は正常に動いていたp_27_mcが動かなくなってしまいました。
重なってるmc・同名のmcがないこと、スペルミス等は一通り確認済みです。
考えられる原因は何でしょうか?
また、ソースの関連ありそうな部分をコピペして下にうpしてみました。
ttp://kissho.xii.jp/1/src/1jyou116063.txt 正直自分の力では手詰まりなので、ヒントだけでもいただければ幸いです。
よろしくお願いいたします。
>>312 遅くなりましたが返答ありがとうございます。
>>319 function d_wheel(){ が閉じてないような気がするんだけど、これはコピペミス?
trace()で重なっているMCを正しく取得できているのか確認してみた?
>>321 trace()でチェックしてみたところ、mcの名前ミスが見つかったので直したら正常にうごきました!
こんな便利な命令があったのですね
ありがとうございました!
あとfunction d_wheel(){ が閉じてないのはコピペミスでした……
323 :
Now_loading...774KB :2010/06/12(土) 16:03:53 ID:5d1wvIF+
AS3で質問です。 自前のクラスのgetterメソッドの一覧を取得するには どのようにすればよろしいでしょうか?
324 :
263 :2010/06/12(土) 17:10:01 ID:k0PLy2M/
>>323 flash.utils.describeType()関数を叩くと、
型に関する情報がXMLで返ってくるから、
XMLの中のaccessor要素を見る。
325 :
Now_loading...774KB :2010/06/14(月) 00:18:04 ID:V7Rxt6dm
ボタンをクリックすると、フレームを移動させるように AS3で書いているんですが、以下のエラーがでてしまいます。 TypeError: Error #1010: 条件は未定義であり、プロパティがありません。 // public class SampleButtonA extends MyEffectButton { public function SampleButtonA() { addEventListener(MouseEvent.CLICK, clickHandler); } public function clickHandler(event:MouseEvent):void { bg.gotoAndStop(2); } private var bg; } } ご教示お願いいたします。
>>325 bg.gotoAndStop(2);
}
private var bg;
ここがよく分からん。bgって何? バックグラウンド?
もしかしてステージ?
327 :
Now_loading...774KB :2010/06/14(月) 01:30:52 ID:2lDf91bX
>>325 bgがMCだとして…
まずbgをインスタンス化しないと。
今の状態じゃ、生まれてない子供にあーしろこーしろ言ってるのと同じ。
そもそもなんでbgの宣言をわざわざそこでしてるかも謎だけど…
AS3.0で質問があります。 テキストフィールドを使用する際に、入力した文字列のまま取得出来る場合と、 HTMLタグが付加されて取得する場合があるのですが、これらをあらかじめどちらかに 設定しておくことは出来ますでしょうか?特にタグ情報を省略する方法をお教えください。 よろしくお願いします。 合ってるかは分かりませんが、テキストフィールドの変数に.text()を付けてみたんですが、なんか取れませんでした。
>>329 TextField.onChangedメソッドでタグの <〜〜> を検出し処理するとか。
>>330 それは2.0では?
あとメソッドなのそれ?w
>>329 htmlTextを調べるとタグ付きで返ってくるので、textを調べれば良いと思う。
332 :
329 :2010/06/14(月) 11:39:28 ID:mdJLtbtH
>>330 レスありがとうございます。
それは入力されたテキストはタグが付いてくる前提で処理を行うということなんでしょうか?
他に試したことは、プログラム内でテキストフィールドに文字列を表示した場合は
参照しても元の文字列のままなんですが、その内容を1文字でも編集するとタグ付きで
参照してしまいました。
例えば”入力テキスト”とフィールドに入力すると、
”<P ALIGN="LEFT"><FONT FACE="_sans" SIZE="8" COLOR="#000000" LETTERSPACING="0" KERNING="0">入力テキスト</FONT></P>”
て感じでタグが付いちゃうんです。
2.0の時はそのまま取得できていたのでホント分かりません。
>>331 レスありがとうございます。
それはさっき試した.text()の事でしょうか?書き方が間違ったのかもしれないんでもっかい試してみます。
その時は単純に
wk_loadtext = _parent.p_text.text();
って書いてました。
wk_loadtext = _parent.p_text.text; でいいと思う。 って、_parentはAS2.0だよね? 3.0と2.0どっちよw
334 :
329 :2010/06/14(月) 12:13:08 ID:mdJLtbtH
すいません自己解決しました。
テキストフィールドのプロパティで、文字間隔に-1.0を設定していたのが原因だったようです。
初期値の0.0にすると入力したテキストの内容だけ取れました。
まだよく分かってはいませんが当面これだけ分かれば進めます。
お騒がせしてすいません。
>>333 レスありがとうございます。
作ってるもんのプロパティ見てみたら2.0って書いてました…
ずっと3.0だと思って作ってました、色々ホントすいません。
.textは将来3.0で作る際に使ってみます。
335 :
325 :2010/06/14(月) 13:07:21 ID:V7Rxt6dm
326さん、328さんありがとうございます。 bgは、ムービークリップです。 bgはインスタンス化しないと。 ←というのは、F8でインスタンス化しているんですが、 また違った意味でしょうか? 今の状態じゃ、生まれてない子供にあーしろこーしろ言ってるのと同じ。 そもそもなんでbgの宣言をわざわざそこでしてるかも謎だけど… bgの宣言は、どこでどういったふうにすればよろしいでしょうか? エラー内容から考えるに、328さんの仰るようなことが原因なのでしょうか? 初歩的な質問で申し訳ありませんが何卒よろしくお願いいたします。
>>335 根本的に間違ってる気がする&文章自体が意味不明。
どんな本を買ってるの?
ネットに情報は溢れているけど、最低2冊は買った方がいいよ。
ActionScriptを使ったらこんなことができる!ってのを紹介するために FLASHだけのサイトやActionScriptも使ってるサイトを比較したいと思ってるんですけど、 良さそうな場所知りませんか?
>>335 F8は「シンボルに変換」であって、雛型を作る作業なの。
変数の宣言は決まりがあるわけではないけど、特別な理由がない限りクラス宣言のすぐあとに書くのが普通。
とりあえず本当に基本的な理解が足りてないから、「actionscript 入門」あたりでググってみてください。
別に意地悪してるわけじゃなく。
339 :
Now_loading...774KB :2010/06/15(火) 04:49:56 ID:HMsbaTL5
AS2の質問です。 ボタン(flashの)を押してキー入力ってできますか? on (release) { ctr + w を押す/macならcommand + w } のような感じの。 ウィンドウを閉じる(ctr+w)、お気に入りに追加(ctr+D)など キー操作で出来るものをJSを使わずにできるようになると 楽かなぁと。
>>339 Key.getAscii()とかKey.getCode()とかKey.isDown(Key.SPACE)で
ググり組み合わせる。
>>339 Key入力はできるが、Flash外の動作はFlashだけではできないから
JS経由とかになるんじゃないかな
342 :
327 :2010/06/15(火) 23:49:06 ID:ZKoQuKOQ
どなたかお願いします。
>>327 分からない。普通にできちゃう
試しにパブリッシュの設定→Flashタブ→スクリプト設定ボタン→ドキュメントクラスのチェック
でちゃんと外部ASを読み込めているかチェック。それくらいしか思いつかない
344 :
327 :2010/06/16(水) 22:15:14 ID:XRTR0HOr
>>343 原因(?)が分かりました。
一言で言うと、DL→解凍したフォルダ以外でパブリッシュしたためでした。
素直に解凍フォルダ内部で作業すればOKでした。
ただし、他のフォルダでも作業できるようにクラスパスを解凍フォルダに設定
しましたが不可でした。
解凍したフォルダ以外では本当にダメなのかも知れません。
345 :
Now_loading...774KB :2010/06/19(土) 00:55:08 ID:j11sndd+
質問があるのですが、【好きなところをクリックしたらオブジェクトが出てくる】というのを作りたいと思っています。 そこで更に、複数のオブジェクトを表示させたいです。当方AS初心者で、寄せ集めで作ってみました。 var mcClass:Class; var my_mc:MovieClip; stage.addEventListener(MouseEvent.CLICK,haichi) if (function haichi(event:MouseEvent)) { my_mc= new mc(); stage.addChild(my_mc); my_mc.x = mouseX; my_mc.y = mouseY else function haichi2(event:MouseEvent) { my_mc= new mc2(); stage.addChild(my_mc2); my_mc2.x = mouseX; my_mc2.y = mouseY } エラーが3つほど出ます。何かおかしなところがあればご指摘ください。 勝手なことですが、早く教えていただけたら幸いです。よろしく御願いします。
>>345 if文の使い方間違ってる
これでも正解かどうかは知らんけど、
stage.addEventListener(MouseEvent.CLICK, haichi);
function haichi(event:MouseEvent) {
var my_mc:MovieClip = new mc();
stage.addChild(my_mc);
my_mc.x = mouseX;
my_mc.y = mouseY
var my_mc2:MovieClip = new mc2();
stage.addChild(my_mc2);
my_mc2.x = mouseX;
my_mc2.y = mouseY;
}
348 :
Now_loading...774KB :2010/06/20(日) 14:52:48 ID:6qM6b+f9
AS3で質問です。 DataGridを入力部品として使っています。 DataGridに入力された値が妥当かどうかを検証するのに 一度サーバにリクエストを投げてその返り値で判断しようとしています。 検証の元になるデータをローカルに持ってくるにはデータが多すぎるのと 更新頻度が多いのでサーバ側での検証を行うようにしました。 ただ、AS3って非同期ですよね? サーバにリクエストを投げている間もユーザは入力出来ますが、 皆さんは上記のような場合、どのようにして機能を実装されてますか? 私が考えている案が、 まずは、DataGridのItemEditEndイベントをキャッチして フォーカスを次の入力欄に行かないようにし、 DataGridのenabledをfalseにする。 その間にサーバで入力値をチェックをして、 問題がなければ次の入力欄へ 問題があればメッセージを出して元の入力欄へフォーカスを設定する というのが今考えている案なのですが、 他にも良い案があればぜひ教えてください。 よろしくお願いいたします。
そもそもクライアントバリデートとサーバーバリデートじゃやることが違う 正規表現で片付くことはクライアント それ以外は"まとめて"サーバー 大体、ひとつ間違えたくらいで不正データだのなんだの喚かれちゃー鬱陶しくてしょうがない 強制的に戻されるなんて使ってられねーUIだよ
350 :
348 :2010/06/21(月) 14:41:38 ID:y9RNdcVk
>>349 >正規表現で片付くことはクライアント
>それ以外は"まとめて"サーバー
とのことですが、せっかくのRIAなのでもう少しクライアント側にも
処理を任せたいと考えています。
今回考えている画面で更新するデータは
他のユーザからの更新頻度が多いため、
可能な限りリアルタイムで入力値の妥当性を検証したいと考えています。
当然クライアントに入力したときにはOKだったとしても
サーバにリクエストを投げたときにNGであれば、
その旨は表示しないといけなくなりますが・・・。
> 大体、ひとつ間違えたくらいで不正データだのなんだの喚かれちゃー鬱陶しくてしょうがない
> 強制的に戻されるなんて使ってられねーUIだよ
このあたりは仰る通りだと思います。
ユーザに入力値が妥当でないことを通知しつつ、
使い勝手のよいUIを実現するにはどうしたら良いのか悩んでいます。。。
ロックとフォーカスの強制移動をしないで、通知だけすればよかろう
>>350 「悲観的ロック」でググるといいことあるよ!!
楽観ロックはマズイ気がする
>>351 なるほどですね。通知だけ行ってユーザに修正を促すのは
ユーザにも優しい設計ですよね。
>>352 ありがとうございます。
悲観的ロック・・・・、今までずっと排他制御は避けておりましたが
調べてみたいと思います。
多次元配列のソートをする場合に連想配列の形をとらず 配列にはいってるオブジェクトのプロパティ(int)でソートすることはできますか?
355 :
Now_loading...774KB :2010/06/21(月) 20:35:51 ID:l0qTYTw3
どなたか教えてください。 b1からb4まで名前をつけたボタンをロールオーバー時にはフェードアウト、ロールアウト時にはフェードインさせたいのです。 ロールオーバー時は思い通りの動きをするのですが、ロールアウト時は一回分だけフェードインして止まってしまいます。 現在このように書いています。
356 :
Now_loading...774KB :2010/06/21(月) 20:39:01 ID:X3GYQI/o
阻止
357 :
Now_loading...774KB :2010/06/21(月) 20:39:11 ID:l0qTYTw3
for (var i:int=1; i<=4; i++) { this["b"+i].addEventListener(MouseEvent.ROLL_OVER, xrollover); this["b"+i].addEventListener(MouseEvent.ROLL_OUT, xrollout); } //ロールオーバー時のアクション設定 function xrollover(rovevt:MouseEvent):void { var btn=rovevt.target; for (var i:int = 1; i <= 4; i++) { if (btn==this["b"+i]) { this["b"+i].addEventListener(Event.ENTER_FRAME, rovEF); }}} function rovEF(rovEFevt:Event):void { var rovevt_mc:MovieClip=rovEFevt.target as MovieClip; rovevt_mc.removeEventListener(Event.ENTER_FRAME, rouEF); if (rovevt_mc.alpha>0) { rovevt_mc.alpha-=0.1; }} //ロールアウト時のアクション設定 function xrollout(rouevt:MouseEvent):void { var btn=rouevt.target; for (var i:int = 1; i <= 4; i++) { if (btn==this["b"+i]) { this["b"+i].addEventListener(Event.ENTER_FRAME, rouEF); }}} function rouEF(rouEFevt:Event):void { var rouevt_mc:MovieClip=rouEFevt.target as MovieClip; rouevt_mc.removeEventListener(Event.ENTER_FRAME, rovEF); if (rouevt_mc.alpha<1) { rouevt_mc.alpha+=0.1; }}
358 :
Now_loading...774KB :2010/06/21(月) 20:41:04 ID:l0qTYTw3
分割で書き込んでスンマセン。 そして阻止された・・・。 どなたかご享受お願いします。
エンターフレームを二つ用意するやり方だと、俺の頭では無理だったので いらんかもしれんが、俺ならこうする for (var i:int = 0; i < 4; i++) { this["b"+i].fadeInOut = "Nothing"; this["b"+i].addEventLisner(MouseEvent.ROLL_OVER, xrollover); this["b"+i].addEventLisner(MouseEvent.ROLL_OUT, xrollout); this["b"+i].addEventLisner(Event.ENTER_FRAME, fade); } function xrollover(e:MouseEvent):void { var mc:MovieClip = MovieClip(e.target); mc.fadeInOut = "fadeOut"; } function xrollover(e:MouseEvent):void { var mc:MovieClip = MovieClip(e.target); mc.fadeInOut = "fadeIn"; } funtion fade(e:Event):void { var mc:MovieClip = MovieClip(e.target); if (mc.fadeInOut == "fadeOut") { if (mc.alpha > 0) mc.alpha -= 0.1; } else if (mc.fadeInOut == "fadeIn") { if (mc.alpha < 1) mc.alpha += 0.1; } } ただし、コンパイルはしていない
>>354 Arrayのsortに比較関数渡してあげて
>>357 すまん出来た
ROLL_OVERとROLL_OUTのイベントでENTER_FRAMEのイベントを
addする前に、それぞれのエフェクトとは逆のENTER_FRAMEのイベントを
removeしてやったらいいっぽい
そうしないと、二つのENTER_FRAMEが平行するので、動作は不定かな?
ちょっと詳しいことは分からないので、偉い人に教えてもろうて
362 :
Now_loading...774KB :2010/06/22(火) 01:51:13 ID:E4VCjkUz
下の形でMCを回転させたいのですが、設定値に近付くにつれて回転を 緩め、設定値で回転を止めるにはどうすればいいですか? MC.onEnterFrame = function(){ }
>>362 現在の値と設定値の差を固定値で割る
で一個IF文を入れて十分近づいたら設定値を入れてフレームイベントを外す
364 :
Now_loading...774KB :2010/06/22(火) 02:31:15 ID:E4VCjkUz
>>363 ありがとうございます!
さっそく、試してみます。
>>364 読み返したら説明足りてなかった
> 現在の値と設定値の差を固定値で割る
これで得た結果を現在の値に加算
366 :
Now_loading...774KB :2010/06/22(火) 02:46:41 ID:NKU1xDpM
AS2の質問です。 現在、まずメインとなる.swfファイル(※main.swfとします)に音量調整バー付きで、ループする音楽を流しています。 その中に「loadMovie」の指示で、コンテンツとなるページを呼び出したりして構成しています。 その中のコンテンツ(※仮にstory.swfとします)を読み込んだ際に、現在main.swfで流している音楽をフェードアウトしながら、 story.swfを開いたときに別の音楽がフェードインしながら流れる。 A.swfファイルが閉じられたら、もともとmain.swfで流れていた音楽が再びフェードインしながら流れる という指定をしたいのですが、 どのようなスクリプトを書いたら良いのでしょうか。
MovieClipLoaderじゃダメ?
368 :
Now_loading...774KB :2010/06/22(火) 16:51:24 ID:ORZiJy84
>>359 ありがとうございます。出来ました。
初心者なもので、やり方がこれしか考えられませんでした。
>>366 まず個別に制御するために別々のMCにsoundを割り当て
sound1=new Sound("mc1")
sound2=new Sound("mc2")
mc1、mc2は入れ子にしたら駄目
音量調整バーをマスターボリュームに使うならmy_sound=new Sound()も作っとく
クロスフェード部分
onEnterFrame = function () {
vol1 = sound1.getVolume();
if (vol1<=0) {
sound1.setVolume(0);
sound1.stop();
} else {
sound1.setVolume(vol1-10);
}
// 以上フェードアウト以下フェードイン
vol2 = sound2.getVolume();
if (vol2>=100) {
sound2.setVolume(100);
} else {
sound2.setVolume(vol2+10);
}
// ↓完了したらEnterFrameを停止
if (vol1<=0 && vol2>=100) {
delete onEnterFrame;
}
};
こんな感じ、外部swfを読み込む場合読み込み待ちを考慮する必要がある
loadMovie()と同じフレームに書くとたぶん動作しない
上のは外部swfのルートに1フレーム目から同期ストリーミングで貼り付けた例。
アタッチとかstart()とかは適宜使用のこと
370 :
369 :2010/06/22(火) 17:26:58 ID:KBvEMdPj
>1フレーム目から同期ストリーミングで貼り付けた →MP3を貼り付けたと言う意味ね ストリーミングの場合loadMovie()の次のフレームに記述しても一応動作するけど その他の場合はプリローダーとかで読み込み待ちしないと駄目ってことが言いたかった 音楽ファイルをメインのほうにまとめるなんて手もあると思うけど
371 :
Now_loading...774KB :2010/06/22(火) 18:24:59 ID:ORZiJy84
>>359 このやり方でもやってみましたが、
条件は未定義であり、プロパティがありません。
とエラーがでてしまいました。
仕様
374 :
Now_loading...774KB :2010/06/24(木) 04:32:23 ID:JH2d7/FW
FlashDevelopでAS3です。 キーボード入力について、うまくいかずに困っています。 stage.addEventListener(KeyboardEvent.KEY_UP, changeMember); と記入すると反応するのですが、 backgroundImg.addEventListener(KeyboardEvent.KEY_UP, changeMember); とすると反応しなくなります。 「backgroundImg」はSprite型のオブジェクトです。 ・キーボード入力の際に必要な書き方 ・Main.as以外のファイルで「stage.addEventListener(……」を使う方法 について、どなたかご存知の方、よろしくお願いします。
tabEnabled
stage.focus
本当に初歩な質問で申し訳ないですが、AS3の質問です。 3つのMC(a,b,c)があったとして、それを別々のタイミングで動かす場合 どのようにすればいいのか全く分かりませんw 方法としては、いくつかスタンダード?なやり方があると思っているのですが 参考書には、そういう基本的な事書いてないしサイトも見つからないです・・・。 ヒントみたいなのでも良いので、教えてください。 Flash CS3使ってます。
AS3の話なのにいきなりTweenで正解なの? 具体的に言ってくれないと「MCを動かす」ってのが良くわからん…俺がアフォなのか
てぃ・・・Timer
いや、自分も「別々のタイミングで動かす」ってだけじゃ エスパー以外無理じゃね?と思ったが…
>>378 ありがとうございます。
Tweenは以前調べてやってみた事がありますが
それだけで全て作るとなると、逆に複雑になる場合もありますし
1つずつ基本的な事からやりたいので今回はTweenの使用はしません。
>>379 >>381 言葉足らずですみません。
例えば、a_mc,b_mc,c_mcがあり、それぞれ何らかの動きの指示があるとします。
そのまま再生すると、3つ同時に動いてしまうので任意のタイミングで
a_mcが動いてから3秒後にb_mcが動くとか、b_mcが指定の座標に行ったら
c_mcが動くとか、そういった方法が知りたいのです。
380さんが言ってるTimerで可能なのでしょうか?
どんだけついーんスキーだよw
>>382 了解。座標を動かすのね
プログラミング自体の初心者ってことでいいのかな?ifって知ってる?
結論から言えばTimerでも出来る、けど…
今は、一応は動いてはいるんだよね。enterFrameで動かしてるのかな?
最初はそこで動かした方が分かりやすいよ
たとえば今
a_mc.x = a_mc.x + 5;
みたいな感じで動いてるとしたら
とりあえず、そこに条件判断(if文)を追加して
a_mc.x = a_mc.x + 5;
if (a_mc.x > 100) {
b_mc.x = b_mc.x + 5;
}
みたいにすれば、AのMCのx座標が100より大きいの時に、
if文の内側の、BのMCの座標を加算するところが実行されるよ
何秒後に動くかっていうのは、Timerを使ったり、開始した時間と今の時間の差を見て判断したり、だね
とりあえず長々と書いてみたが本当にこんなことでいいのか???
>>384 ご丁寧にありがとうございます。
なるほど、ifで出来るんですね。
if (a_mc.x > 100)はAのMCのx座標が100より大きいの時
との事ですが、100ぴったりで動くというよりも100以上と解釈して良いのでしょうか?
Timerも便利そうですね。調べてみます。
>100ぴったりで動くというよりも100以上と解釈して良いのでしょうか? そうだよ 細かいこと言うと、以上じゃなくて超過だけど 算数の不等号と同じ ぴったりの時だけ動かしたいなら if (a_mc.x == 100) ってなる
>>385 この手の座標を条件にする場合、Flash上では厳密に100ピッタリに
ならなかったりするので、a_mc.x==100だとアクションが発動しないでスルーされてしまう
だから、>=とか>にしたほうがいい
>>386 超過なんですね。
ありがとうございます。
>>387 結構アバウトな部分があるのですね。
精密に動かしたい場合、Timerにすれば良いという事でしょうか?
少し調べましたがTimer難しそうですっ
AS3について質問させてください。 Class1,Claas2という空のクラスを製作し、色々やってみました var test = new Class1(); var test = new Class2(); というプログラムおよび var test = new Class1(); var test = new Class1(); というプログラムおよび for (var i=1; i<=2; i++){ if (i % 2 == 1){ var test = new Class1(); }else{ var test = new Class2(); } } というプログラムは定義testにはコンフリクトが存在します、と出てコンパイルエラーになったのですが for (var i=1; i<=2; i++){ var test = new Class1(); } このプログラムは無事コンパイルされました。 これって何故でしょうか?
もう夏休みか。まぁいいけど コンフリクトは「衝突」だから、testって名前は衝突してるよ、って意味 なので変数名を変えて var test1 = new Class1(); var test2 = new Class1(); なら通るはず
レスありがとうございます 何故最後のプログラムは名前の衝突が起こらないんでしょうか? やってる事は同じような気がするんですが…
392 :
389 :2010/06/27(日) 00:39:52 ID:4BvaOhbb
>>389 コンパイルエラー?警告じゃなくて?
1番目から3番目の例については変数定義が重複しているので
エラー(警告?)
途中で書き込んじゃったよ申し訳ない
>>389 1番目と2番目は明らかに変数定義が重複してる
3番目は、AS3はブロックレベルのスコープを持たないので
var test = new Class1(); と var test = new Class2() という字面だけ見て
これは定義が重複してるぞとコンパイラはお怒りになる
4番目は字面だけ見てもコンパイラは定義が重複してるなって判断できないので
(頭のいい人間はforを頭の中で実行して定義が重複してるなって判断するけど)
コンパイラは何もいわずにコンパイルを通してくれる
まあ普通はそんな宣言しないので問題にはならない
てすと
396 :
389 :2010/06/27(日) 02:28:00 ID:4BvaOhbb
>>393-394 ありがとうございます。警告ではなくエラーでした
そして非常にお恥ずかしい
var test01 = new Class1();
test01 = new Class2();
で通りました。同じ名前でvarは複数回できないんですね
一番最後のも
var test
for (var i=1; i<=2; i++){
test = new Class1();
}
と書いた方がいいっぽいですね。ほんとすみません
一番最後は実行できたのかな
as詳しくないから分からないけど最後はtestのスコープがfor内だからコンパイル通ったって事じゃない?
一回目のfor内でtestが宣言される>一回目のfor終了とともにtest破棄>二回目のforでtest作り直し
だから衝突が起きてないってことに見えるけど、実行してエラーが出たなら
>>394 ってことなのかな
forの外側でtestが使えるかどうか試せば分かるけどあくまで予想なんで他の詳しい人の話を聞いたほうが良さそうか
399 :
389 :2010/06/27(日) 03:08:40 ID:4BvaOhbb
>>397 レスありがとうございます。
おお、あり得るかも?と思ったんですが多分そんな事はなさそうです
試しにこんなのを書いてみたんですが
for(var i=1;i<=10;i++){
}
trace(i);
結果11となりました…これ別の意味で注意が必要ですね
他はCとJavaしか知らんが、どっちもブロック見るのにね ループ用の変数を外に出したり違うのにしたり美しくないんだよなぁ 何でこんな仕様にしたんだろ
4番目はホイストでコンパイル時に変数定義が先頭に移動してるんじゃないの?
402 :
Now_loading...774KB :2010/06/27(日) 10:31:51 ID:mZu0/R29
ActionScript3.0です。 evt.currentTargetなどについて、質問させてください。 以下のように、配列に格納されたオブジェクトに対して 同じ内容のイベントリスナーを繰り返し実行したいのですが、 うまくいきません。 エラーメッセージは以下です。 「exception, information=TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」 //↓imgはLoaderを格納する配列。 img[0].contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete); private function loadComplete(evt:Event):void { var tmpImg:Loader = evt.currentTarget as Loader; //↓ここでエラーが出る。↑の書き方が間違い? tmpImg.x = -width / 2; } ネットで探ってみたのですが、どうも解決できません。 どなたかご存知の方、よろしくお願いします
evt.currentTargetはLoaderではないって事。 たぶんLoaderInfo型。
404 :
402 :2010/06/27(日) 11:47:04 ID:mZu0/R29
>>403 ありがとうございます!
しかし、
var tmpImg:LoaderInfo = evt.currentTarget as LoaderInfo;
と書き換えてみましたが、以下のようなエラーがでました。
「Error: Access of possibly undefined property x through a reference with static type flash.display:LoaderInfo.」
evt.currentTargetで得たオブジェクトの
x座標を変更したいのですが……。
405 :
402 :2010/06/27(日) 11:55:26 ID:mZu0/R29
連続ですみません Loader型を遡ってDisplayObject型に書き換えてやってみたのですが駄目でした。 var オブジェクト:DisplayObject型 = evt.currentTarget as DisplayObject型; オブジェクト.x = 何らかの値; という書き方で、オブジェクトの座標を書き換えることはできないのでしょうか?
それならenv.targetだな
407 :
402 :2010/06/27(日) 12:56:38 ID:mZu0/R29
>>406 どうも!
しかし、targetもだめでした……
どういう風に?
くわー違った evt.target.loaderだったわすまん
410 :
402 :2010/06/27(日) 14:31:37 ID:mZu0/R29
>>408 var tmpImg:Loader = evt.target as Loader;
でした。同じエラーが出ていました。
>>409 var tmpImg:Loader = evt.target.loader as Loader;
↑でできました!
きちんと実行できるようになりました!
ありがとうございます!!
重ねて質問をさせていただきたいのですが、
「target.loader」の「loader」は、名前や役割はどういうものでしょうか?
調べてみると、
「taeget.name」、「taeget.num」、「taeget.text」は存在しているみたいですが、
「target.sprite」、「target.array」は見つかりませんでしたが……。
411 :
389 :2010/06/27(日) 16:29:00 ID:4BvaOhbb
>>401 遅くなりましたが、間違いなくこれですね!
ホイストって知りませんでした。なんか今までAS3のサンプルとか見ていて
納得いかない事が結構あったのですが、こんな仕様があったんですね
ありがとうございました!
配列で大量に作成したMovieClipに、個別に Timerコンストラクタを持たせ、それぞれが違ったタイミングでTimerEventを実行させたいと考えています。 Time_ctrl[i][ii] = new MovieClip(); Time_ctrl[i][ii].time = new Timer( ii*100 , 0); Time_ctrl[i][ii].time.addEventListener(TimerEvent.TIMER, event01); Time_ctrl[i][ii].time.start(); function event01(e:TimerEvent):void { } こうした場合、event01の中でどのMovieClipのtimerコンストラクタがイベントを起こしたのか? を調べるにはどうすればいいのでしょうか? MouseEvent等と同じような感覚で 「e.target.parent」 と指定すると、 「parentは存在しません」 というようなエラーになってしまいました。
>410 evt.targetがLoaderInfo型で、loaderはそのプロパティ。 >412 MovieClipにTimerを参照するプロパティを作ってるだけなので for文を使ってe.targetとtimeを比較するしかないかな。 他の方法を考えた方が良い。
>>412 俺もそれやってみようと思って放置してたんだよな
なんで調べてみた
イベントリスナをこんな感じにして
Time_ctrl[i][ii].time.addEventListener(TimerEvent.TIMER, event01(i,ii));
メソッドをこんな感じにするらしい
function event01(zi:int,zii:int):Function {
return function (e:TimerEvent):void {
trace("zi "+zi+" zii "+zii);
}
}
こんな感じで一応できたよ
415 :
402 :2010/06/27(日) 21:51:17 ID:mZu0/R29
>410 ありがとうございます! 理解できました。
>>413 >>414 レスありがとう御座います。
ソースが家に無いのですぐには試せませんが、明日にも繁栄させてもらいます。
417 :
Now_loading...774KB :2010/06/27(日) 23:08:12 ID:0L8+qol7
【AS3】 参考書のサンプルソースをみてるんだが、 Point.normalize() ってのがイマイチよくわかんなくて、 参考書も詳しく書いてないし、ヘルプみてもわからないので 分かりやすい説明とか載ってる場所ないかな? そもそもベクトルってなんだよってレベルなんだけどね。
何やるか分かってもベクトルわからんと使いようないぞ
このサイト、簡単な事を難しく考えさせようとしてない?w
もっと分かりやすいサイトがあったら頼む
>422
座標だけ分かれば他は必要ないよ
そのサイトで言うと「ベクトルとは」だけでいい、で
var po:Point = new Point(3,4);
これは、横座標が3で、縦座標が4の点をあらわすpoって名前の変数を作る、って意味ね
ここまで分かれば
>>419 でわかるでしょ
>>423 Point解説サンクス
内積(その1)くらいまで読んじまった。
ということは、normalize=標準的にするって意味らしいから、
説明通りベクトルが、指定された数値に勝手に拡大縮小されるってことか。
あ、なるほど、サンプルの意味もなんとなく分かってきた!
ありがとう
AS3で質問です。 mx.rpc.events.ResultEventのイベントリスナの中で カスタムイベントクラスを生成して dispatchをしています。 カスタムイベントクラスのプロパティには mx.rpc.events.ResultEventを保持するプロパティも用意して dispatchをする直前にカスタムイベントクラスの プロパティに設定しているのですが、 Nullになってしまいます。 イベントクラスのプロパティには他のイベントのオブジェクトを 保持できないとかあったりしますか?
>>425 そのカスタムイベントクラスはどんな実装なの?
cloneメソッドのオーバライド忘れとかかも
427 :
425 :2010/06/29(火) 09:35:45 ID:l1ipti6Y
>>426 ありがとうございます。
仰るとおりcloneメソッドをオーバーライドしておりませんでした。
カスタムイベントクラスは、イベントクラスを継承しているのみになります。
お恥ずかしいのですが、私の知識と理解力では
cloneメソッドのオーバーライド以外にも気をつける点などがあったとしても、
見当がつかないので、他にも注意するポイントがありましたら
教えていただけないでしょうか。
AS2.0で質問があります。
http://hfm-kenchan.com/Lesson/log_qa/D0806051.htm この記事のスクリプトを参考に、ブログのxmlを読み込んで投稿時間に合わせてMovieClipの色を変化させています。
「12時間以内では赤色に」「1日以内は黄色」に変化するように設定。
しかし、午前0時を過ぎると前日までに経過した時間がリセットされてしまいます。
例えば、23時に投稿した場合、その日の23時59分までは赤く光るのですが、
残り11時間があるのに0時以降は黄色く光ってしまいます。時間の設定の箇所をどのようにすれば回避出来るのでしょうか?
宜しくお願い致します。
該当部分のソース
===================================
maru.onEnterFrame = function():Void {
if (Check && (dd<=(dNum)) && (hh<=hNum+12)) {
//trace(Check+"/"+dd+"/"+(dNum+1)+"/"+hh+"/"+hNum);
my_color = new Color(this); // Colorオブジェクトのインスタンス作成
my_color.setRGB(0xFF685C); // 'Color.setRGB'メソッドで黄色く(#FFFF00)着色
this._alpha += a;//_alpha値を増加させ、
//trace(this._alpha);
if (this._alpha>=100 || this._alpha<=0) {//リミッターを超えたら、
a = -a;//逆転させる
}
} else if (Check && (dd<=(dNum+1)) && (hh<=(hNum))) {
//trace(Check+"/"+dd+"/"+(dNum+1)+"/"+hh+"/"+hNum);
my_color = new Color(this); // Colorオブジェクトのインスタンス作成
my_color.setRGB(0xFCFF80); // 'Color.setRGB'メソッドで赤く(#FF0000)着色
this._alpha += a;//_alpha値を増加させ、
//trace(this._alpha);
if (this._alpha>=100 || this._alpha<=0) {//リミッターを超えたら、
a = -a;//逆転させる
}} else {//上の条件以外なら、_alpha値を0とする
this._alpha = 0;
}};};
>>428 次の日になると dd<=(dNum) が通らなくなるからじゃない?
dd<=(dNum+1) にすれば通るかも
てか、これだと1ヶ月前とかの12時間以内も色付いちゃわないかな?
それぞれの年と月と日を時間に変換して足したモノで比較した方が分かりやすいと思うが
430 :
402 :2010/06/30(水) 02:24:41 ID:WfJqdAAS
割り込みすみません actionscript3.0で、 ファイルが存在するか確認するためには、 どのメソッドを使ったらいいのでしょうか? LoaderとLoaderInfoを調べたのですが、 それらしいものが見当たらなかったので……。
読み込んでエラーでたらないじゃん?
public class Hoge extends MovieClip{ としているのに、 hogeを呼び出すクラスで、以下のようにするとエラーが出てしまいます。 なぜでしょうか?? var hoge:Hoge = new Hoge(); addChild(hoge); hoge.x = stage.stageWidth/2; hoge.y = stage.stageHeight/2; 出現するエラーは以下二つです。 addChildまでは動作しているんですが、 MovieClipまで継承しているのに、このx,yが認識されない上に、 なぜ、x, y プロパティがパッケージと表示されるんでしょう 1202: パッケージ x 内の未定義のプロパティ hoge へのアクセスです。 1202: パッケージ y 内の未定義のプロパティ hoge へのアクセスです。
AS3で質問です。 ポップアップウインドウを開いて、ポップアップウインドウ内にある ボタンにフォーカスを移そうとしています。 buttton.setFocus(); でフォーカスは移っているみたいなのですが、 タブでフォーカスを移動したときのように ボタンの輪郭が青く反転しません。 (この表現で伝わってますでしょうか) ポップアップウインドウを表示したときに ボタンの輪郭を青く反転させるには どの様にすればよろしいでしょうか。
てすと
436 :
433 :2010/07/01(木) 08:42:31 ID:v0CUtcr8
>>434 ありがごうとございます。
まさにそれです。
おかげさまで輪郭を青く反転することができました。
【AS3】 for文で 連番の変数を宣言したいんだけど for(var i : int =0; i<=5; i++){ var hoge + i : Hoge = new Hoge("test"+i ) ; } これは出来ないんみたいで、どう書けばいいんだろう。 var hoge1 : Hoge = new Hoge(test1); var hoge2 : Hoge = new Hoge(test2); と作って行きたいんだ
素直に配列使え
スマソ、普通にわからんのだけど、 仮に100個の変数をつくろうと思ったらどうしたらいいんだ?
var hoge:Vector.<Hoge>=new Vector.<Hoge>(100); for(var i:int=0;i<100;i++){ hoge[i]=new Hoge("test"+i); }
>>440 なるほど!トンクス!!
ちょっとトライしててそんなソースに辿り着きつつあったんだが、
また、ひとつ問題が。
new Hoge("test"+i) で
ここの引数の型がMovieClipなんだ。MovieClipはステージ上に存在してて
このままだと「StringをMovieClipに暗黙に変換してる」と言われてしまう・・・。
その MovieClip も配列に入とけば良いんじゃね? で、hoge[i]=new Hoge(test[i]);
>>442 >>440 で
var hoge:Vector.<Hoge>=new Vector.<Hoge>(100);
データ型をHogeに限定してるからMovieClipを入れるのはむりぽ(´・ω・`)
んー、もうちょっと考えてみる。みんなありがとう
444 :
437 :2010/07/02(金) 00:04:33 ID:ZXzi2+Oc
>>440 のヒントで
>>441 の理由だったんだが
>>442 の意見も参考にして解決した。
new Hoge()の引数がMCでないとカスタムクラスが動かなったので
埋め込みアセットクラスで生成したらできた。
------------------------------------------------------------
import flash.display.MovieClip;
//Hogeはカスタムクラス
var hoge:Vector.<Hoge> = new Vector.<Hoge> (101);
//TestはMCの埋め込みアセットクラス
var test:Vector.<Test> = new Vector.<Test> (101);
for (var i:*=1; i<=100; i++)
{
test[i] = new Test();//MC生成
test[i].x = 100*i;
test[i].y = 400;
addChild(test[i]);
hoge[i] = new Hoge(test[i]);
}
マジでありがとう
445 :
Now_loading...774KB :2010/07/02(金) 10:08:57 ID:/KWNCFrU
446 :
Now_loading...774KB :2010/07/02(金) 10:09:21 ID:kmAsk8uQ
ActionScriptを始めようかと思っているのですが、質問させてください
(すみません、技術交換スレに間違えて同じ質問をしてしまいました)
ActionScriptは動的にコンテンツを変えられるのでしょうか?
Bloomberg(
http://www.businessweek.com/ )の中段にあるようなスライドショー型のFlashで、新着ニュース毎に表示されるのかが知りたいです
例えば2chのような掲示板の新着スレッドが立つたびに上記のようなFlash内に勝手に組み込むような事は出来るのでしょうか?
それとも毎回自分や技術者が内容変更のたびにFLASHを作り直さなければいけないのでしょうか?
448 :
446 :2010/07/02(金) 10:36:21 ID:kmAsk8uQ
>>448 いやいや、作り直す必要こそないけど、やっぱり定期的に読みに行くしかないと思う
でないと、サーバーから個別の利用者に命令をぶち込んでることになる
定期的って言っても数秒ごとならラグもないから、普通はそうしてるハズ
450 :
Now_loading...774KB :2010/07/03(土) 12:31:40 ID:eT1hb/ri
最近アクションスクリプトでいろいろ作るようになりました よくNowLoading……○%って表示されるのがありますが そのスクリプトってどのように記述すればいいですか? Flash-MXです
flash NowLoading プリローダー 等で検索した方が絶対に早い
452 :
Now_loading...774KB :2010/07/03(土) 13:15:01 ID:8BXEYOYO
;
453 :
Now_loading...774KB :2010/07/03(土) 13:17:36 ID:8BXEYOYO
454 :
451 :2010/07/03(土) 13:38:17 ID:KG7dp+zZ
>450 検索した方が絶対に早いと思ったけど別に書いても時間かからないと思ったので 簡単なサンプル ダイナミックテキストを用意。その変数をcountとする アクションレイヤーに stop(); onEnterFrame = function () { count = Math.floor(getBytesLoaded()/getBytesTotal()*100); if (count>=100) { play(); } }; これだけ。 ちょっとうろ覚えだけど2フレ目に書いたほうがいいかも
>>453 良く分からんが、Math.atan() とか Math.acos() とかじゃダメなん?
456 :
Now_loading...774KB :2010/07/03(土) 13:45:38 ID:8BXEYOYO
>>455 mcの位置とマウスの位置から角度は出せるんですけどなんか違うような感じがするんです
ありがとうございました
458 :
454 :2010/07/03(土) 14:50:00 ID:KG7dp+zZ
ちょっと補足 ルートでやってる場合 if (count>=100) { }の中に delete onEnterFrame としとかないとだめだな いつもMCの中でやってるからうっかりしてた 結局検索させた方が早かったなw
お世話になっております。 AS3です。 サーバと通信するクラスを作成してその処理の中でサーバとの通信エラーや セッションタイムアウトが発生したらポップアップでユーザに通知したいと考えております。 クラスはユーティリティクラスのようなものなので、 画面から呼び出されたり、他のユーティリティクラスから 呼び出されたりといった具合で利用されます。 PopUpManagerクラスのcreatePopUpメソッドの第一引数には parent:DisplayObjectを指定しないといけないですが、 クラスからしてみればどこから呼び出されるか分からない状況なので どう実装すればよいか悩んでおります。 クラスで処理を行うときに引数でparentを渡す方法もあるかもしれませんが、 ウインドウから呼びされるのではなく、他のユーティリティクラスから 呼び出すときがめんどくさいよなぁ。と考えていたりもします。 やりたいことは、ユーザにエラーを通知することなので、 createPopUpメソッドを使わずに同様のことが出来る方法か createPopUpの第一引数に上手にパラメータを渡す方法を アドバイスいただけると幸いです。 皆さんは通信処理とか画面の裏っかわで行う処理を元に ユーザに何かを通知するときはどの様にされていますか?
460 :
459 :2010/07/05(月) 17:05:10 ID:im/ZDvU1
すみません。補足です。 Alertクラスは今のところ使用しない方向で考えております。
461 :
459 :2010/07/05(月) 17:46:53 ID:im/ZDvU1
すみません。 自己解決しそうです。 Alertクラスのshowメソッドの以下の記述を参考にして対応してみたいと思います。 var sm:ISystemManager = ISystemManager(Application.application.systemManager); if (sm.useSWFBridge()) parent = Sprite(sm.getSandboxRoot()); else parent = Sprite(Application.application);
462 :
Now_loading...774KB :2010/07/05(月) 22:48:38 ID:/dLNnC1z
AS3,FlashCS4,WinXP hitTestObject()の監視で質問です。 Stage上に2個のMC(mc0, mc1)があり、mc1をマウスドラッグしてmc0に 衝突させたとき1回のみ何から反応が出るようにしたいです。 mc0 mc1 ○ ← ← ● ※例えば trace("hit"); で hit と出力させる。 ところが、ENTER_FRAMEで監視するようにすると、hit は出ますが、衝突している 間はずぅーと hit が出ます(下記)。 addEventListener(Event.ENTER_FRAME,onFrame); function onFrame(frameEvt:Event) { if (mc1.hitTestObject(mc0)==true) { trace("hit"); } } つまり1回の衝突では1回の出力にしたいです。 フラグとif文で、 衝突 → フラグをtrue → trueならばtrace("hit");→ 直ぐにfalseにする → falseならばtraceしない も考えられますが、もっと簡潔な方法を探しています。 宜しくお願い致します。
1:多なら、多の方に全部enterFrameのイベント付けて、 あたったらremoveEvent・・・とか? いやフラグの方がいい気がする
464 :
Now_loading...774KB :2010/07/06(火) 12:12:41 ID:bjRZq9no
FlashCS5 AS3 ヘルプのサンプルとかみてファイル保存の勉強中です。 このエラーの原因がどこにあるかまったく想像がつかないです。 原因があると思われる所はどの辺なんでしょうか。 このスクリプトのsaveをbrowseに変えてみたら エラーもなく実行されました。 1061: 未定義である可能性のあるメソッド save を、 静的型 flash.net:FileReference の参照を使用して呼び出しました。 private function CLICK(e:MouseEvent):void { //保存 var str:String = "test"; var fileRef:FileReference = new FileReference(); fileRef.save(str, "test.txt"); }
465 :
464 :2010/07/06(火) 13:02:19 ID:bjRZq9no
すいません。今気がつきました。 パブリッシュの設定がプレイヤー9でした。 10に変更したら普通にいけました。 スレ汚しすみませんでした。
そうだと思った。
467 :
Now_loading...774KB :2010/07/06(火) 17:08:11 ID:NupPhx/J
【AS3.0】
スライドショーのサンプルコードを弄っていたんだけど、
このコードだと画像サイズが違う場合、下の画像が急に消えたようになってしまうんだ。
※removeしているので
上に画像が読み込まれる時に、下の画像をフェードアウトさせたいので
SlideShow.asの83行目あたりにTweenクラス書いてみたり、
dispatchEventでやりとりしようとしてみたり したんだがうまくいかず・・・
誰か助けてください。
ttp://www.rupan.net/uploader/download/1278403083.zip
>>467 targetContainer.removeChildAt
の部分をフェードアウトしてからtargetContainer.removeChildAtするように変更すればおk
あと、imageNoが1〜3に対応してるみたいだけど、0〜2で考えられるように慣れたほうがいいよ
469 :
462 :2010/07/07(水) 00:40:21 ID:M6enjIRB
>>463 そうですね。やっぱフラグの方ですね・・・
470 :
Now_loading...774KB :2010/07/07(水) 08:18:12 ID:fAhd24lO
>>468 >>0〜2で考えられるように慣れたほうがいいよ
トンクス
>>フェードアウトしてからtargetContainer.removeChildAtするように変更
そうなんだ、それはわかってるんだけど、どう書けばうまくいくのかわからないんだ。
イベント渡してみたりしたんだけど、挙動がおかしくなったり。
>>470 フェードインのサンプルが中にあるんだからフェードアウトくらい簡単だろー
Flashでアンケートを取るものを作りたいんですが どういった用語で検索して勉強するといいですか?
アンケート CGI URLLoader
474 :
Now_loading...774KB :2010/07/08(木) 17:54:40 ID:D57+etXO
flash上のボタンを押すとitunesにPoscastを登録するということがやりたいのですが方法はありますでしょうか?
475 :
Now_loading...774KB :2010/07/08(木) 20:04:06 ID:D57+etXO
プロトコルを"itpc://"にすれば登録できました。 flash上のボタンを押してitunesを起動することは可能でしょうか?
>>476 確かに_rootの定義が無いな。
var _root:MovieClip = new MovieClip();
_root = MovieClip(stage.getChildAt(0));
としたら?
478 :
477 :2010/07/09(金) 11:54:31 ID:ts9AP+Lo
(自己れす) これってAS2じゃね?
479 :
476 :2010/07/09(金) 14:47:58 ID:+dnZnJct
>>478 レスありがとうございます。
AS2で書かれたものをAS3で動かすことはできますか?
>>479 _alphaとか_xって書いてるあたり AS2.0だね。
_rootは一番上の階層(ステージ)って意味だと思う。そこの1フレーム目。
AS2と3は書き方が違うので、そのままぶっ込んでも動かない
ある程度変換は必要だと思う。
>>483 ありがとうございます。
HP見ました。うーん、意外と面倒だ。
大量のパーティクルを動かす際の注意点って何になりますでしょうか。 spriteを継承して作ったボール(点)それぞれに、物理法則を適用してるんですが、 2000個ぐらいで既に重たくなってしまいます。 3万個ぐらいはグローフィルターまでつけてるのに、 余裕でいけてるのを見たことがあるんですが、どうやって作ればいいんでしょうか。 自分の場合、forで、とりあえず2000個ぐらいのボールを生成、 それらに毎フレーム個別に動きの関数を実行し続けるという感じです。
>>485 spriteは重いから多分それで限界だと思う
俺のPCなんか100個くらいで動かなくなるから…
かなりやり方は変わるけど、
1つBitmapData作って、それにフレームごとにsetPixelするのがおそらく一番早いんじゃないかな
filterつけるならcopyPixelsかもしれんけど。適当すまん
名前欄w
気になってsetPixel作ってみたが 3万個だと若干チカチカするなぁ。すまん
>>486 ありがとうございます。485です
早速試してみますね
490 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 23:19:51 ID:RgWYSMDG
WinXP,AS3でFlashCS4を使用 ステージ上のmc0の内部に入れ子で20個のtmpMCを生成しようとしています。 各tmpMCは子としてvalT_mcを持ち、さらにテキストフィールドvalTを含んでいます。 つまり親子関係では 親] mc0 -- tmpMC -- valT_mc -- valT [子 です。 ここで各tmpMCに対し、tmpMC.valT_mc.valT.text = id0; として数値を入れて for文でaddChild(tmpMC) した際に id0(0〜19) が表示されるようにしたいのですが、 valTに数字が全く表示されません(エラーも出ません) 試しに trace("Data= "+id0+", "+tmpMC.valT_mc.valT.text); としたところ、これは 正常に0〜19が表示されました。 まとめると、『入れ子の入れ子のテキストフィールドに数値を表示』をしたく思っています。 どうすれば良いでしょうか? なお、getChildByName(「tmpMCの名前」) ではオブジェクトの存在が確認できましたが、 getChildByName(「tmpMCの名前」).valT_mc.valT.text では 「1119: 未定義である可能性が高いプロパティ valT_mc に静的型 flash.display:DisplayObject の参照を使用してアクセスしています。」 というエラーになりました。
491 :
490 :2010/07/10(土) 23:48:32 ID:RgWYSMDG
(自己レス) 解決しました。原因は、テキストフィールド自体を回転させるようにしていたためです。
〈環境/FlashCS4、AS3.0〉 1:マウスイベントでボタンをクリックすると別のフレームに飛ぶようにしたいのですが、 クリックした際にボタンをフェードアウト、更に別フレームの画像をフェードインするような仕様を考えています。 2:画像をクリックすると指定の枠いっぱいに拡大、その後拡大画像をクリックするともとの大きさに戻る という事をしたいのです。 1、2の両方で無くてもかまいませんのでお答え頂けたら嬉しいです。
>>492 1: ボタンをSimpleButtonとかで書くのではなくて、MCでやるとか。
「別のフレームに飛ぶようにしたい → 更に別フレームの画像をフェードイン」
この関連が分からん。フレームが別というより、ライブラリの画像を持ってくる
ということ?
2: 「画像 サイズ AS3」で検索した?
494 :
492 :2010/07/11(日) 21:32:47 ID:0Hj7zA18
>>493 回答ありがとうございます。
1の方は解決しました。
2に関してなのですが、サムネイルと元画像(拡大画像)を用意してあり、
並んだサムネイルをクリックすると元画像が枠いっぱいに表示されるようにしたいと思っているのです。
>>494 普通に、大きい画像をaddChildで表示すればいいんじゃないの?
大きい画像がクリックされたらremoveChildで消してさ
496 :
492 :2010/07/11(日) 23:41:42 ID:0Hj7zA18
>>495 何ぶん超が付く初心者で・・・そこにいたるまでのスクリプトが解りません。。。
何度もすみません。
ああごめんAdobeFlashはデザイン画面みたいなので作るんだっけ じゃぁ最初にVisibleをfalseにした大きい画像を置いておいて 小さい画像がクリックされたら大きい画像のVisibleをtrueすればいいんじゃないかな それはできる?
5年位前Swishでちょっと触ったくらいの初心者ですが、質問させてください 皆さんはFlash作成はやはりAdobeのCS5とか使って作られているのでしょうか? それともテキストエディタ等でプログラムを打ち込んで作られているのでしょうか? また、購入を検討している所なのですが、AdobeのCS系の利点というものはどういった所にあるのでしょうか?
お世話になります。 AS3で通貨計算を行う上で参考になるサイトなどないでしょうか? 浮動小数点の丸め誤差回避のクラスを作成しようと考えております。 標準のライブラリではそのようなものは無いようなので アドバイスをいただけると幸いです。
>>498 例えば、「ある場所にある球のグラデーション」をコードのみで表現
しようとしたら大変だけど、AdobeのCS系ならお絵かきツールとしても
使えるのでGUI画面が手早く出来る。
※実際、そのままGIFやPNGに出来る。
値段は高いけど、作業スピードを考えればお得。
>>499 「通貨計算で浮動小数点の丸め誤差回避」の意味がよく分からない。
割り算とかで延々と小数点以下が出るのを4桁位で止めたい(有効数字を3桁
とかにしたい)ってこと?
もしそうなら、数値をString()で文字列化してlengthプロパティで判別するのも
一案かと。
501 :
499 :2010/07/12(月) 15:17:27 ID:VXqQ4hAD
>>500 金額の計算など、誤差の許されない計算を行うとき
ということをお伝えしたかったのですが、
分かりにくい表現で申し訳ありませんでした。
たとえば
1-0.56をすると0.44という値がほしいのですが、
0.439999・・・と続いてしまいます。
1*100
0.56*100
100-56=44
44/100
としてあげると0.44となるのですが・・・。
JavaでいうところのBigDecimal的なクラスが
あればその情報を頂きたいなと思った次第です。
>>488 489です。すみません、あれからビットマップのsetPixelのほうで
試しているのですが、10000の壁を越えることが出来ないです。
(確かにspriteより速くなりました)
以下のやり方はまちがっていますでしょうか。
forループの中身で以下をひたすら繰り返します
表示位置はballというBitmapをずらして重ならないようにはしています
var ballBmp:BitmapData = new BitmapData(1, 1, false, 0xFFCCDD);
ballBmp.setPixel(1, 1, 0xFFFFFF);
var ball:Bitmap = new Bitmap(ballBmp);
addChild(ball);
>>498 俺はFlashdDevelop使ってるよ。タダだから
>>502 あんま詳しくないけど
BitmapDataとBitmapをいちいち作ってaddchildしてるのが遅いんじゃないかな
大きいBitmapDataを1つ作っておいて、そこにsetPixelしたほうが速そう
504 :
492 :2010/07/12(月) 22:38:03 ID:yZuSwzq3
>>497 わー!できました!
本当にありがとうございました!!
505 :
492 :2010/07/12(月) 23:22:04 ID:yZuSwzq3
>>497 すみませんはやとちり。。。別件と混同しました。
クリックすると見えるようにするというのは
smn1(サムネ).addEventListener(MouseEvent.CLICK,doClick);
function doClick(e:MouseEvent):void{
img1(元画像).visible = true;
}
でいいのでしょうか。(サムネが置いてあるフレームに直接書き込んであります)
それとVisbleをfalseで置いておくというのは単純に元画像を置いたフレームにvisible=falseでいいのでしょうか。
ほんと初心者すぎてすみません。
>>488 >>503 ありがとうございます!
デカイBitmapDataをつくって、その中でsetPixelでいけました
60000ぐらいは軽く表示できました。感動です。
そこで、setPixelしたものそれぞれのピクセルに対して、マウスに反応する等のインタラクティブな動きを
持たせようとしていますが場合、毎フレームsetPixelというのはわかるのですが、
座標情報は、Pointで管理するのが軽い処理なのでしょうか。
(ピクセル一つ一つに対してはマウスへの反応を仕込めないですよね・・・?)
それぞれのピクセルに対して、Tweener的な処理、
つまり、ある指定の座標まで、それぞれのピクセルが動かしたりしたいのですが、
setPixelでやる場合、どうしたらいいのか、悩んでます
>>507 うん。どっかに状態を保存しておかないと無理
Pointは余計なプロパティ持ってるから、若干遅いね
まぁそのぶん、便利な関数を使えるメリットはある(マウスとの距離を計算したりね)
自前でxとyだけを持ったclassを作ると無駄が無くて速いし、
加速度とか色みたいなプロパティも持てるから、柔軟性もある。ただ関数は使えない
一番便利なのは自前のclassにpointを持たせるやり方だけど一番遅い
と、ごちゃごちゃ描いたけど差は殆どないし、ボトルネックは画面初期化とsetPixelだから
あんまり気にしなくて良いと思う
ちなみに、配列を使うならArrayじゃなくてVectorの方が速い
>>505 そんな感じで出来ると思う
APIについて質問です(´・ω・)AS3使用です。 APIでyoutubeを埋め込んだ外部swfを親swfから停止させたいのですが 上手くいきません(´;ω\) unloadClipでyoutubeを埋めた外部swfを停止させることは出来るのですが youtube自体が停止されてないらしく、音声だけ流れている状態です。 どこかでdestroyを使うといいと言うのも読んだのですが、destroyだと 二度目の再生が出来ないとかなんとか・・ (´;ω;`)∩どなたかご存知の方がいらっしゃったら是非おしえて頂けると うれしいです
510 :
499 :2010/07/13(火) 11:53:54 ID:jt+gXllv
>>506 ありがとうございます。
参考にさせていただきます!
511 :
509 :2010/07/13(火) 12:13:58 ID:aLidT0FX
ごめんなさい、AS3じゃなくてAS2です(;´A⊂)
512 :
Now_loading...774KB :2010/07/13(火) 13:00:49 ID:kxeDfmkS
513 :
Now_loading...774KB :2010/07/13(火) 14:11:01 ID:1vwD3yE+
>>512 moveTo(x0,y0);
curveTo(x1,y1,Ax,Ay);
curveTo(x2,y2,Bx,By);
curveTo(x3,y3,x4,y4);
curveTo追加してあげればいいんじゃない?
本屋にいってActionScript3.0による数学・物理学表現入門のP235に書いてある
から立ち読みしてくればw
514 :
509 :2010/07/13(火) 18:06:11 ID:aLidT0FX
解決しました(`・ω・)/
515 :
509 :2010/07/13(火) 18:25:28 ID:aLidT0FX
何度もごめんなさい(´;A\)やっぱり解決してませんでした。 親swfからytPlayerLoader.unloadClip(ytplayer); で消えはするのですが youtube自体が止まっておらず音だけ流れている状態です。 どなたかご存知の方がいらっしゃったら是非ご教授頂けると 助かります。うう
>>508 507です
ありがとうございます!
完全に理想の動きが実現できました。
オリジナルクラスでxpos, yposみたいな数値保持クラスを用意して、
あとは、Vectorで毎フレーム座標位置を計算みたいなかんじでやることで、
とりあえず30000パーティクル達成しました
毎フレーム bitmapData.dispose()して、
new BitmapDataで大きいのを一つ用意して、new Bitmapして、
dispose()で描画クリアしてみました。
>>515 そういう専門的過ぎるのはこのスレじゃわからないかもなぁ…
518 :
509 :2010/07/13(火) 21:40:56 ID:aLidT0FX
>>517 ありがとうございます(´;ω\)なんだかんだで工夫してなんとかなりました!
頭を抱えてたので、書き込める場所があっただけでもよかったな〜なんて
思ってます(´∀`)お騒がせしました。
519 :
492 :2010/07/13(火) 23:17:12 ID:Hy5ETLug
フレームに写真を配置し、「visible = false」とだけ書いて再生したところ、 「
520 :
492 :2010/07/13(火) 23:20:11 ID:Hy5ETLug
バグったようです。連投しつれいします。 フレームに写真を配置し、「visible = false」とだけ書いて再生したところ、 「 型が見つからないか、コンパイル時定数ではありません」というエラーが出てしまいました。 写真はAS用に書き出し、クラスは「img1」基本クラスは「flash.display.MovieClip」としてあります。 なんども初歩的な質問をしてしまって申し訳ありません。
>>520 new Sprite() か new MovieClip() でインスタンス化した?
522 :
520 :2010/07/13(火) 23:29:26 ID:Hy5ETLug
>>521 わぁ!解決しました!!ありがとうございます!
これでなんとかなりそうです!!
質問に答えて下さった方々本当にありがとうございました!!
523 :
Now_loading...774KB :2010/07/14(水) 01:40:16 ID:reymtUwH
Player10(AS3),FlashCS4,WinXP-Proです。 Vector3DやMatrix3Dを使って円柱を表現する方法をご存知の方いますか? 本やWebで調べましたが、複数の平面や立方体の表現はありますが円柱が 見つかりません。 ※最終目標はPapervision3Dの基本形状(6種類?)をVector3DやMatrix3Dを 使って表現することです。 お願いします。
>>516 描画クリアは、fillRect()で全領域を背景色で塗りつぶした方が速そう。
背景が黒だったら、ColorTransformを使って前の画面の背景を少し暗くするようにすれば、
モーションブラーみたいにすることもできる。
Win7 Ultimate x64、eclipse(AXDT)のFlex3です korax Color Pickerを改造してPhotoshop用のカラーピッカープラグインを作っています 現在カラーピッカーで取得した色がPhotoshopに反映される状態にはこぎつけました しかしカラーピッカーの動きが引っ掛かるような動きになります AS初心者なりに考えたところマウスをドラッグして色を変更するたび Photoshopに逐一情報を送っているためではないかと思いました 本題です。 マウスボタンを押していない状態の時だけdispatchEventを使用するにはどうしたらいいのでしょう? if文やマウスイベントを試してみたのですが、理解が足りていなかったようです。 ソースコードは必要なら指定された場所に上げます 使えればいい程度に考えて作っていたのでとても汚いですが……
マウスを放した時に情報を送るようにすれば?
527 :
Now_loading...774KB :2010/07/15(木) 13:27:18 ID:+M9FfkVy
AS3で質問です。 ClassAで2の処理のイベントリスナーの登録 ClassBで3の処理のイベントリスナーの登録 をした後に以下の処理を行いました。 1.classAでサーバに通信を行う。 2.1の通信のresultイベントで受信したデータをArrayCollectionにするメソッドを呼んで その処理が終わったらカスタムイベントを送出する。 3.ClassBで2のイベントをキャッチして処理を行う としたときに、1→2→3と処理を進んでいってほしいのに 1→3→2となる場合が半分くらいあります。 2のArrayCollectionにするメソッドの処理が終わらないうちから イベントを送出することってあるのでしょうか? ソースは↓こんな感じです。 //ArrayCollectionにするメソッド 引数のeventはresultイベント toArrayCollection(event); dispatchEvent(myEvent); 回避策はありますでしょうか?
528 :
Now_loading...774KB :2010/07/15(木) 21:07:20 ID:FJZnESey
【AS3】カスタムクラスでさ、以下みたいに設定 ------------------------------------------------------------ package { import flash.display.DisplayObjectContainer; public class Getstage { var stW : uint; var stH : uint; public function Getstage(container:DisplayObjectContainer) { this.stW = container.stage.stageWidth; this.stH = container.stage.stageHeight; trace(stW,stH); } } } ------------------------------------------------------------ ※flaファイルのステージサイズは500x500 var aaa:Getstage = new Getstage(this); と実行すると、stHが400と表示されるんだ。 ENTER_FRAMEで実行し続けると2回目から500を出力するんだけど 一発目では読込みきれてないってことだよね。 なんかいい方法ないかな?
529 :
528 :2010/07/15(木) 23:29:38 ID:FJZnESey
as3と、phpを連携させてas3からphpに変数を投げて、結果をas3で受信というのをやってます。 ローカルのxampp環境では問題なく動いているのに、 サーバーにアップすると以下みたいなエラーが出ちゃいます Error: Error #2101: URLVariables.decode() に渡される文字列は、名前/値のペアを含む、URL エンコーディングされたクエリー文字列でなければなりません。 php側からは、 test=3&test=5&test=9 みたいな吐き出しをしてます なぜローカルサーバーだと動くのでしょうか??
AS2.0で質問です 激突要塞や格闘ゲームみたいな、2つのオブジェクトの距離で画面の拡大縮小 を再現したいんですが、どうればいいでしょうか 構造は実際に拡大縮小されるフィールドMCの中に自分と敵のMCが入ってる構造です
それとAS2.0でTwitterの最近の書き込みやツイート数やらアイコンを 取得する事ってできるんでしょうか?
>>531 MC内で格闘しているとして、距離の計算は三平方の定理→拡大縮小
とか。
>>532 ググれ。
534 :
Now_loading...774KB :2010/07/17(土) 20:09:46 ID:7ROFMIdJ
AS3で教えてください。 DataGridでカスタムアイテムレンダラーを使用しています。 ほんでそのカスタムアイテムレンダラーでは override public function set data(value:Object):void{ といった感じでレンダラーに渡されるデータを取得しているんですが、 valueの中に入ってくるデータって行のデータ全部がきますよね? なのでvalueの中のhogeの値を取得したいときは value.hogeと直接書いて取得しているんですが、 hogeの部分を動的にして、カスタムアイテムレンダラーを 使いまわせるようにしたいんですが、 どのようにすればよろしいでしょうか? 私の今の脳みそだとsetterを複数個用意することしか思いうかばないっす。 public function set hoge1(hoge1:Object):void //hoge1の値を設定 public function set hoge2(hoge2:Object):void//hoge2の値を設定 ・・・でも、これって要領がわるいですよね? DataGridColumnで設定したdataFieldプロパティの値を取得できるのが一番理想なのですが、 カスタムアイテムレンダラーからdataFieldの値を取得する方法ってあるのでしょうか?
急に質問が増えたな。
あ、すみません、クロスドメイン問題ですかね・・・ PHP経由でやるってやつでしょうか
ほしゅ
539 :
Now_loading...774KB :2010/07/20(火) 23:58:41 ID:L+S0vZwh
AS3で一定時間待つことってできますか? tiemrを使うとベツの関数に飛んじゃいますが、 一定時間まった後続きのコードを実行してほしいです。
>>539 適当にこんな感じ
var timerObj:Timer=new Timer(100,1);
timerObj.addEventListener (TimerEvent.TIMER, doLater);
function doLater (timerEvt:TimerEvent) {
//処理
}
timerObj.start ();
javaのsleepみたいなヤツだよね 俺も前に探したんだけど無かったな timerでやるしかないと思われ
542 :
Now_loading...774KB :2010/07/21(水) 16:55:48 ID:ycvrxeo5
質問です、お願いします メニューボタンで以下のスクリプトがあります stop(); _global.aboutbuttclicked = false; _global.localbuttclicked = false; _global.intlbuttclicked = false; _global.pvbuttclicked = false; _global.newsbuttclicked = false; _global.careerbuttclicked = false; _global.joinbuttclicked = false; _global.contactbuttclicked = false; about_mc.onEnterFrame = function(){ if(aboutover){ about_mc.nextFrame(); }else{ about_mc.prevFrame(); } }; local_mc.onEnterFrame = function(){ if(localover){ local_mc.nextFrame(); }else{ local_mc.prevFrame(); } }; これで、ボタンにリンクをはりたいときは、どうすればいいんでしょうか?
>>542 それ、仕組みわかってる?
onEnterFrameじゃなくてonRollOverとか使ったほうがよくね?
メニューボタンで、ってどれがメニューボタンなの?
メニューボタン内にそのASが書いてあるの?
とりあえず、MCをそのボタンだと仮定すると
MC.onRelease=function(){this.getURL()}なんかでできるよ
544 :
Now_loading...774KB :2010/07/21(水) 18:13:38 ID:ycvrxeo5
546 :
Now_loading...774KB :2010/07/22(木) 14:02:04 ID:/H2SA2DR
mask
助かります
549 :
Now_loading...774KB :2010/07/22(木) 23:28:45 ID:rbQblBAc
CS5で作ったflaをFlash8で読むにはどうすればよいでしょうか? こちらの環境がCS5で諸事情で先方にflaファイルを渡すことに なったのですが先方の環境がFlash8で開けないのです。 何らかの変換作業が必要になるとは思いますが……。 ちなみにFlash Lite 1.1のドキュメントですので8でも対応しているかと思います。
>>549 名前を付けて保存でファイルの種類をCS4にして保存
そしたら今度はCS4でそのFLAを開いて同じことやってCS3で保存
そs(ry
FLAは1バージョンごとしか落とせないからね
551 :
Now_loading...774KB :2010/07/23(金) 11:12:58 ID:zDBDcify
Flash lite 1.1でflaファイル間でシンボルを共有する方法はありますか? 1つのシンボルを2000近いflaファイルでコピペしているのですが、そのシンボルには 大量のスクリプトとキーフレームが入っていて、1つバグが見つかってスクリプトを 書き換えると残りは再パブリッシュするだけで反映されるようにしたいのです。 別板でリンケージ使えと言われましたがLite1.1では使えないようです……。 環境はFlash Professional 8とCS5を持っています。
>>551 キーフレームは無理だが、
ASは外部ファイル化すれば?
Aが6時の何分かになったら、10分間でX軸を1800px移動するようなものを 作っているんですが、 onClipEvent(enterFrame){ var d:Date=new Date (); var haba = 1800; var r= Math.floor(Math.random()*49)+1; while ((hour==6)&&(min>=r && min<=r+9)){ min =d.getMinutes(); sec =d.getSeconds(); x=(min-r)*(haba/10)+(sec/60)*(haba/10); this._x=haba-x; } } この記述だとrの値が変わりつづけてしまいます。 なのでwhileに入るまではrが変わらずwhileを抜けたら 同じように1度rを取得してwhileに入るまで変わらない というようにしたいのですが、どうすればいいのでしょうか。
>>553 AS1?
そもそも、whileループ抜けるまでは描画更新されないから
ループ内で少しずつ移動みたいな処理は無理
ifで条件指定してやればいい
>>554 if文にはできましたが、やはりrが取得されつづけてしまいます。
557 :
81 :2010/07/23(金) 20:08:12 ID:GZXuz7xk
558 :
Now_loading...774KB :2010/07/23(金) 21:00:20 ID:fCC3VmDl
【AS3】 親インスタンス:A 、子インスタンス:B 孫インスタンスC とあって、 Aの中にBがあり、 Bの中にCインスタンスが3つあったとするじゃん? ※こんな感じ A < B < C x3 これでAの子、Bを removeChild と null しても A . removeChild ( B ); Cを調べたら存在するってことは Bを消しても、Cはまだ、メモリ領域を食ってるってこと? ということは、Cから順番に null しないとだめってことかしら?
あ、Cが3個存在する意味がなかった。 そこはスルーしてくれ・・・('A`)
Cへの変数もnullにすべきだけど順番は関係ない。 どこからも参照されなくなったらGCで掃除してくれるよ。
>>560 マジスカ!
でもCを traceすると [ movie clip Object ]って出るのは気にしなくていいの?
562 :
553 :2010/07/23(金) 22:16:16 ID:BFf00Zys
>>557 すいません、このように修正しました。
onClipEvent(enterFrame){
var d:Date=new Date ();
var haba = 1800;
var r= Math.floor(Math.random()*49)+1;
trace("r=")
trace(r)
//while ((hour==6)&&(min>=r && min<=r+9)){
if ((hour==6)&&(min>=r && min<=r+9)){
min =d.getMinutes();
sec =d.getSeconds();
x=(min-r)*(haba/10)+(sec/60)*(haba/10);
this._x=haba-x;
}
}
564 :
523 :2010/07/23(金) 22:40:12 ID:Hk0dzllA
(円柱の表現) どなたか知りませんか?
ムービークリップA側で、ムービークリップBの移動速度や拡大率を決めて それをBに反映させたいんだけど、何か方法ある? AからB内の変数をいじったりとか、AからBに値を渡すみたいなことができればいいんだけど。
567 :
565 :2010/07/24(土) 00:16:23 ID:DdXEz+AF
AS2です。FlashはMX2004。
>>565 A) グローバル変数を使用
B) mcBのパスを使って、mcAより操作
好きな方でどうぞ。
>>562 rをグローバルにして、初期化時に一度代入。
あとはイベントハンドラの if が真から偽になった回だけ
rを更新すればいいんじゃない?
570 :
81 :2010/07/24(土) 06:27:38 ID:LSom3PcH
>>564 まず3角柱をつくってみよう。
で、それをn角柱にできるように汎用化。
n=12くらいで円柱っぽくなるんじゃないかな。
あと、Vector とか Matrix でっていうのはちょっと意味わかんない。
Vector3D の配列でとか?
571 :
562 :2010/07/24(土) 13:11:42 ID:0UKFVfBD
>>569 on/onClipEvent ハンドラ内でなくてはいけません。
_global.r
というエラーが出てしまいます。
572 :
565 :2010/07/24(土) 22:39:07 ID:DDRxgrcc
>>568 有り難うございます。
ちなみに、ASでグローバル関数ってどうやって宣言すればいいんでしょうか…。すいません。
573 :
565 :2010/07/24(土) 22:56:22 ID:DDRxgrcc
間違えた…、グローバル変数です。あとググったら解決しました。すいません。
574 :
Now_loading...774KB :2010/07/25(日) 11:48:58 ID:B/R174s4
Flash Lite 1.1でeval使って大量に変数宣言した場合、それがずっとメモリに残り続けると思うけど それを開放するにはどうやるんだろう。1.1ではnullもundefinedも使えないし……。 eval使う場合、なるべくMC上で行って、捨てるときはMCごと捨てるしかないのかな?
deleteステートメントないっけ?
576 :
Now_loading...774KB :2010/07/25(日) 22:53:44 ID:30rkVuh+
577 :
Now_loading...774KB :2010/07/26(月) 23:43:36 ID:UfcmS5YR
Flash Lite1.1って、数字キーの押しっぱなし判定できませんでしたっけ?
AS2.0で右クリックメニューを完全に消したいのですが、どうすれば出来ますか? 右クリックを拾う方法は知ってます。 javaでメニューを透明にする事は出来るみたいなんですが
>>578 やり方は色々あるけど、
ブラウザ側でハンドリングして、
JavascriptからAS側の関数叩くのが一番簡単かな。
>>580 AS以外の言語は触った事無いから詳しく
せめて検索用ワードでも
よく考えたら消してる訳じゃなくてあくまで透明なだけだから 偶然クリックしちゃう事もあるんですよね……
右クリックメニューってフラッシュの? javaとかjavascriptの話になってるのがよく分からないけど
>>582 1.配置したFlashの上に同じサイズの<div>を css の position を使って上に重ねる
2.Javascriptで addEventListener / attachEvent でその<div>のイベントをハンドル
3.Javascript から Flash を叩く( Flash / JavaScript Integration Kit とか利用)
色々と副作用とかクセもあるが、あとは自助努力でガンバレ。
AS3でVectorを使用した、要素数指定の2次元配列(10x20)の定義の仕方が分かりません。 どなたか教えていただけないでしょうか? var x:Vector.<Vector.<int>> = new Vector.<new Vector.<int>(20)>(10);
var x:Vector.<Vector.<int>> = new Vector.<Vector.<int>>(10); for(i = 0; i < 10; i++){ x[i] = new Vector.<int>(20); }
AS3なのですが ルート上のムービーリップAから ルートに戻って、他のムービーリップBを動かしたいのですが 参照の仕方がわかりません。 下記をムービーリップAに記載してみると this.gotoAndPlay(2); ムービーリップA自体が動く MovieClip(root).gotoAndPlay(2); ルート(シーン1)が動く とここまでは分かったのですが、 MovieClip(root)test.gotoAndPlay(2); エラーが出てしまいます (ムービーリップBのインスタンス名をtestとしてます) 宜しくお願い致します。
588 :
587 :2010/07/28(水) 19:27:46 ID:eePK+oHr
>>587 です
すいません。。。自己解決しました。
MovieClip(root)test.gotoAndPlay(2);
↓
MovieClip(root).test.gotoAndPlay(2);
ドットが抜けてました・・・
589 :
585 :2010/07/28(水) 19:59:35 ID:JwaII7s9
>586 有り難うございます。 簡潔に一行で定義することは出来ないのでしょうか?
590 :
Now_loading...774KB :2010/07/28(水) 20:02:56 ID:KpSgaHpb
AS3で質問です。 flvファイルの中から任意の箇所のスクリーンショット(?)を取得するにはどうすればよいでしょうか? flvファイルの1シーンの画像をサムネイルで表示したいのですが やり方がわかりません。 教えていただけないでしょうか。
591 :
Now_loading...774KB :2010/07/28(水) 22:40:10 ID:Oo+Xab5d
FlashLite1.1で質問です。 変数の型についてですが、整数と浮動小数点数の区別はとくにないのですか? 整数や少数をかけたりしているうちに、計算結果が0になったり、法則がよくわかりません。
592 :
591 :2010/07/29(木) 20:49:18 ID:QhEQjza8
自己解決しました。
593 :
Now_loading...774KB :2010/07/30(金) 19:36:42 ID:azoRLk9/
Flash、AS共に初心者です
画像が動くFlash時計を作ってるのですが、以下の画像のようにフレームアクションを伸ばすと
毎回ASを読み込んでしまい、毎秒毎秒、時計を再表示してしまい、時計の部分が点滅してしまいます。
gotoやstop,startなどもやってみましたがどうもうまくいきません。
こういう場合はASを別ファイルにして外部から読み込んだほうがいいのでしょうか?
ttp://loda.jp/uploader777/?id=1236.jpg 環境はAS3.0
ADOBE Flash CS5です
594 :
Now_loading...774KB :2010/07/30(金) 20:16:46 ID:azoRLk9/
自己解決いたした
相変わらず、書き込むと解決する不思議なスレw
次スレからは「書き込むともの凄い勢いで解決するスレ」にしようぜ
597 :
Now_loading...774KB :2010/08/01(日) 04:53:27 ID:0Gf9btnD
AS3で質問です。 インスタンスを生成する際にAS2と同じようにString型を配列に入れMovieClipを生成したいのですが可能でしょうか? 下記がうまくいかなかったソースですorz よろしくお願いします。 var arr:Array = ["mc"]; arr[0] as MovieClip var Mc:MovieClip =new arr[0](); addChild(Mc);
すいません、自己解決しました。
いいってことよ
AS3について質問です。 メインのswfに外部のswfを2個読み込んで、それぞれ違う座標に表示させたいのですが うまく表示できません・・・ スクリプトは //swf1個目 var test_obj : Loader = new Loader(); var url : URLRequest = new URLRequest("test1.swf"); MovieClip(root).test_obj.load(url); test_obj.y = 5 test_obj.x = 100 stage.addChild(test_obj); //swf2個目 var test2_obj : Loader = new Loader(); var url2 : URLRequest = new URLRequest("test2.swf"); MovieClip(root).test2_obj .load(url2); test2_obj.y = 130 test2_obj.x = 50 stage.addChild(test2_obj); 最終的には3個表示させたいです。
601 :
Now_loading...774KB :2010/08/02(月) 01:17:42 ID:GmylVeaB
FlashCS4(AS3,Player10),WinXPでaddEventListenerでのEvent.ADDED の使い方で質問です。 (同じ処理が意図せず2回繰り返されて困ってます) 自作クラスScript_03のコンストラクタで addEventListener(Event.ADDED, this_newed,false,0,true); として、これのリスナー関数を下記のようにしました。 private function this_newed(evt:Event):void { tmp(); removeEventListener(Event.ADDED, this_newed); } ここで tmp() は円を描く関数で、クラスScript_03がnewされたとき、tmp()内部の addChild(en)により円が設置されます。 プレビューで円は出てきたのですが、tmp() の中に入れておいた確認用の trace("円描画") が2回出てきてしまいます。 これは、addChild(en) とイベントフローによりどうやら子がADDEDされた時点でも 実行されるようで、実際、addChild(en)を無効化すると trace("円描画") は1回 しか実行されません。 (ただし、円が出ません(泣) Event.ADDEDを使うのは「表示リストにオブジェクトが表示された事を参照する」 ためですが、余計な動作(1回多い動作)が入って困っています。 ※evt.stopPropagation()でイベントフローを止めようとしましたがダメでした。 どうしたら良いでしょうか?
>>600 var swfLoader:Loader=new Loader();
としておいて、
swfLoader.x=X座標;
swfLoader.y=Y座標;
addChild (swfLoader);
としたら?
603 :
602 :2010/08/02(月) 01:27:54 ID:tDU9qGpB
あ〜〜 良く見たら一緒だった。
>>601 newされた時とaddedイベントの時の二回tmp()を呼びだしてるなら
二回出るのはあたりまえじゃないか?
605 :
590 :2010/08/02(月) 10:44:04 ID:mRocxjAR
再投稿申し訳ございません。 AS3で質問です。 flvファイルの中から任意の箇所のスクリーンショット(?)を取得するにはどうすればよいでしょうか? flvファイルの1シーンの画像をサムネイルで表示したいのですが やり方がわかりません。 教えていただけないでしょうか。
Videoに読んでseekしてbitmapにdrawしたらいけるんじゃね? 全くやったことなんてないけど
607 :
605 :2010/08/02(月) 16:24:50 ID:mRocxjAR
>>606 レスありがとうございます。
> seekしてbitmapにdrawしたらいけるんじゃね?
仰るとおりだと思います。
seekする処理とbitmapにdrawする処理って
どのようにすればよいのでしょうか?
608 :
601 :2010/08/02(月) 20:04:58 ID:EKLBjDhM
610 :
Now_loading...774KB :2010/08/03(火) 10:17:07 ID:5e+UD8TZ
>>609 AS2
Stage.showMenu=false;
AS3
stage.showDefaultContextMenu=false;
611 :
Now_loading...774KB :2010/08/03(火) 13:38:12 ID:4fDV4L3c
AS3のイベントハンドラで質問があります。 ActionScriptからのイベントハンドラを実装した場合、 hoge.addEventListener('hogehoge',hogeHandler); と言った形でイベントハンドラを実装して、 イベントハンドラが不要になったら hoge.removeEventListener('hogehoge',hogeHandler); としますよね? でも、mxmlタグで以下のように記述した場合って 特にremoveEventListenerを書かないですよね? <mx:Button id="button" click="clickHandler(event)"/> これってフレームワークのほうで 適宜removeEventListenerをしてくれていると解釈して良いですか? もしフレームワークのほうでremoveEventListenerしてくれているのであれば できるだけmxmlタグでイベントリスナを記述できるようにしておいたほうが 安全だし、使い勝手が良いなと思ったのですが、いかがでしょうか?
612 :
Now_loading...774KB :2010/08/03(火) 13:54:56 ID:NstSMR7s
勝手にリムーブされたら怖いわ
614 :
611 :2010/08/03(火) 19:41:10 ID:4fDV4L3c
>>613 では、mxmlタグで書いた場合もremoveEventListenerを書かないといけないということですか?
勝手にremoveされてるというよりかはオブジェクトが参照されなくなったら
"適宜"removeされるのかなと思っていたのですが違うのでしょうか?
>>614 そのイベントリスナーが参照してるじゃん!
617 :
611 :2010/08/04(水) 08:31:35 ID:TCviP51z
>>616 そのイベントリスナが画面のmxml内に定義されているprivateなもメソッドだったら、
画面を閉じれば参照がなくなるってわけではないのでしょうか?
つまりmxml内に定義してイベントリスナはactionscript内で
removeを都度記述する必要があるということでしょうか?
無知ですみません。
mxmlで定義したイベントは基本的には削除できない つまり気にするなってことだ
619 :
611 :2010/08/04(水) 11:35:19 ID:TCviP51z
>>618 ありがとうございます。
その一言が欲しかったので、とても感謝しております。
できるだけmxml上でイベントリスナの定義が出来るように
システムを開発していきたいと思います。
どうもありがとうございました。
>>618 えーじゃあゾンビオブジェクトだらけになるの?
それとも弱参照?
621 :
Now_loading...774KB :2010/08/05(木) 08:00:34 ID:fvGBHVrN
失礼します FlashDevelopでAS3を使った開発をしている者です。 ソフトのバージョンアップをしようとして、コピー&ペースト後、フォルダの名前を 変更したところ、「条件は未定義であり、プロパティがありません。」 と動作をしなくなりました。 エラーが出る箇所はSharedObjectに関する記述についてです。 var soData:SharedObject = SharedObject.getLocal("so" + String(inNum)); var backgroundCircle:Sprite = new Sprite(); backgroundCircle.graphics.beginFill(soData.data.badgeData[0]); //←ここでエラーが出る。フォルダ名をコピー元と同じにするとエラーは出ない backgroundCircle.graphics.drawCircle(0, 0, 200); backgroundCircle.graphics.endFill(); addChild(backgroundCircle); なぜでしょう?
>>621 フォルダの名前って何のフォルダですかw
どうせ画像のパスが合わなくなったとかじゃないの?
mMonth = 5; if(mMonth < 10){ mMonth += "0"; } これって結果は50になるんですが、本当は05にしたい場合どうすればいいですか?
>621 getLocalの第2引数を変えないと駄目。 >623 mMonth="0"+mMonth;
625 :
624 :2010/08/05(木) 22:40:46 ID:pnhTn89n
>621 引数変えても古いデータは同じアドレスからしか読めないから無理だわ
白で塗りつぶした円と、同じく白で塗りつぶした円が小さくなって消えるMCを作って、それを適当な角度に移動させる。
作って。
白い円が移動している間はずっと白い円のMCと同じ場所に一定間隔で小さくなる方のMCを、複製させ続ける。
そうして移動している白い円の後を追うように小さくなって消えるMCが表示される。
っていうのを作ろうとしているんだけど、仕組みが分からない。
これが探していた中で一番イメージに近い。
http://tail.s68.xrea.com/html/movie/lab/effect/effect01.html これってMCをちまちま張り付ければ可能なんだろうけど、そうしたらすっごい重くなっちゃうよね…
627 :
Now_loading...774KB :2010/08/06(金) 23:48:28 ID:UwEihzsa
AS1.0のswfとAS3.0のswfの間で2Mバイト程度のObject型のデータをやり取り しようとしています。 で、LocalConnectionを使う方法が候補に上がったのですが、受け渡しの データサイズが40KBまでというのがあり、データを細かく分割して送信しないと いけません。 ここで悩んでいるのが、データをどう分割して送るか、です。 AS3.0であれば、ByteArrayをうまく使うとObject型のデータを単純なバイナリ に変換し、40KBで区切って何度か送るという方法で出来そうなんですが、 このByteArrayがAS1.0には無いためちょっと無理っぽいです。 お知恵を貸してください...。
628 :
Now_loading...774KB :2010/08/07(土) 19:03:14 ID:R/4YoWxS
自分で作ったクラスを継承して新たなクラスを 作ろうとしているのですが、以下のエラーが出て上手くいきません。 No default constructor found in base class PutImage 「PutImage」というのはスーパークラスの名前です。 どなたか、お答えいただけないでしょうか?
629 :
Now_loading...774KB :2010/08/07(土) 19:04:58 ID:R/4YoWxS
テスト
>>628 PutImageのコンストラクタには引数が必須なのに
派生クラスでは何も渡してない時のエラー
派生クラスのコンストラクタ内で super(arg); とかすればよい
631 :
Now_loading...774KB :2010/08/08(日) 12:47:05 ID:eS6MFvdd
>>630 ありがとうございます!
きちんと動作させることができました。
どうもです!
このActionScriptを使用しても、やっぱりジョイスティックは使えませんか?
>>627 Stringで送ればいいと思ったけど、
両方でのインタプリタの実装がめんどくさそうだし、Objectの構造によってはAVM1の速度がネックになりそうであんまり考えたくない状態だね。
AVM2にAVM1を読ませてオブジェクトを操作できるとか聞いたけど、そっち方面での研究もしてみたらどう?
634 :
Now_loading...774KB :2010/08/10(火) 02:44:10 ID:Wp3xTnvd
質問です。 例えば、 インスタンス名 Aaa1 Aaa2 Aaa3 Aaa4 と、_global.Bbb[0]には1〜4の数字・・・とある場合に、 for (i=1; i<5; i++) { if (_global.Bbb[0] == i) { this._parent.Aaa._alpha = 100; }else{ this._parent.Aaa._alpha = 0; }} このようにループで処理したいのですが、 this._parent.Aaa._alpha の部分を、Aaa+i(forのi)のようにうまく記述できるのでしょうか? 説明が下手で申し訳ないです
637 :
Now_loading...774KB :2010/08/10(火) 16:47:01 ID:5t9pqscP
月によって、表示される画像の振り分けをしたいと思ってます。 例えば、8月だったらこの画像を表示、9月だったらこの画像を表示という感じです。 ↓って、ぜんぜん違ってますでしょうか? // ローカル時間を取得 var date = new Date(); year_t.text = date.fullYear; // 年 month_t.text = date.month + 1; // 月 date_t.text = date.date; // 日 day_t.text = ary[date.day]; // 曜日 hours_t.text = date.hours; // 時間 minutes_t.text = date.minutes; // 分 seconds_t.text = date.seconds; // 秒 milliseconds_t.text = date.milliseconds; // ミリ秒 }); if(date.month + 1 == 8) { _root.mc.gotoAndStop(2); }
638 :
634 :2010/08/10(火) 17:59:59 ID:Wp3xTnvd
配列アクセス演算子でggったら出てきました! 無事に出来ました。ありがとうございます。
639 :
637 :2010/08/10(火) 18:16:13 ID:5t9pqscP
すみません、解決しました。 if文ではなくフレームに振り分けでできました。
640 :
Now_loading...774KB :2010/08/11(水) 18:17:35 ID:7Pp5oWKZ
FlashDevelopでAS3を使って画像描画の基本的な事を試してみています。 サンプルソースを元にmain.asというファイルに組み込んだら、サクっと描画ができたので、 じゃあ描画用の関数を作成してみるか、とdraw.asというソース作り、処理を分けたら描画しなくなりました…。 draw.asの方でbitmap情報を設定し、main.asの方でその戻り値を取得してaddChild()を呼ぶと表示されるのですが、 draw.asの方でaddChildを呼んでも描画されないみたいです。 mainの方にaddChildを呼ぶと描画されるけど、その他のasファイルだと描画されない状態です。 そういう仕様のものなのか、この原因がわからないのですが、どなたかお教え頂けないでしょうか? よろしくお願いします。
>>640 drawでaddChildするとdrawに描かれるからだと思う
draw自体をmainにaddChildするか、main.addChildってすれば行けるかも
642 :
Now_loading...774KB :2010/08/11(水) 22:59:22 ID:jy6iOUzc
>>641 mainクラスをdrawの方にimportして
main.addChildで読んだら描画できました。
こういうやり方が出来るのですね。
drawに描画しても反映されないって事は、main自体が描画元になってるのかな…。
ここら辺の仕様がまだ分からない。
とりあえず目的の処理ができました。 ご教授ありがとうございます。
>>640 ,642
解決したみたいだからいいけど、
なんか仕様について根本的な誤解があるように感じる。
どこに違和感があるのかがわからない。
AS2.0でXPathAPIでつまづいてます。 _rootのタイムライン上でimport mx.xpath.XPathAPI; を定義した後でasファイル内でXPathAPIを使用するにはどうしたらいいんでしょうか? ■_rootタイムライン上 import mx.xpath.XPathAPI; var LoadXMLObj:LoadXML = new LoadXML(); LoadXMLObj.ふぁんくしょん(this); ■.asファイル内 class LoadXML { function ふぁんくしょん(callObj:Object) { trace(callObj.XPathAPI.selectSingleNode(aNode.firstChild, "/hoge/hogege/")); } みたいに書いてもXPathAPIが動作してないみたいです
Test
646 :
Now_loading...774KB :2010/08/13(金) 19:31:32 ID:DD6IGy6E
AS3なんですが、 DataGridににTextInputとButtonを並べた 自作のアイテムエディタを設定しました。 TextInputのfocusOutイベントをキャッチしたら 特定の処理を施しているのですが、 イベントがDataGridのitemEditEndの後に発生してしまいます。 focusOutイベントを先に発生させるにはどのようにすればよろしいでしょうか。
647 :
Now_loading...774KB :2010/08/14(土) 22:46:11 ID:gRRW6R2Z
AS2で 最後まで来たら指定した秒数一時停止して (フレームを増やす方法もあるかもしれませんが増やさないでできる方法) また最初からスタート という風にできませんでしょうか?
>>647 getTimer()かsetInterval
649 :
Now_loading...774KB :2010/08/15(日) 16:22:20 ID:QEUCkTYD
>>648 ありがとうございます
_root.stop();
var hensuu = 30000;
stopID = setInterval(function () {
_root.play();
clearInterval(stopID);
}, hensuu);
でできました
テキストを動的にして、変数を使って数を表示させることに関しての質問です。 例えば テキストボックスの変数をtext1と言う名前をつけて、text1 = 10 と言うふうにレイヤーに書くと、テキストに10が表示されます。 しかし、このテキストが、ムービークリップの中にある場合、_root.ムービークリップ名.text1と、ムービークリップ名の後につけ足しても表示されません。 解決方法はありますか?
651 :
Now_loading...774KB :2010/08/17(火) 20:16:35 ID:qoWpySq4
外部クラスの関数を呼びたいのですが、 その関数を呼ぶ為に var func:[外部クラス] = new [外部クラス] func.関数() みたいに記述してるのですが、 これだと、使いたい時に毎回コンストラクタが呼ばれてしまいます。 一度だけ、インスタンスを生成して、それ以降はそのインスタンスを参照して使い続けるような処理は可能でしょうか? C++だと、グローバル変数にインスタンスを用意して、そのインスタンスをゲットする関数を作り外部でも参照できるようにしてたのですが…。
653 :
Now_loading...774KB :2010/08/17(火) 21:11:37 ID:qoWpySq4
>>652 ありがとうございます、シングルトンでぐぐったら参考になりそうなサイトが見つかりました!
>>650 どっかスペルミスかインスタンス名抜けてるとかそんなとこじやね?
655 :
Now_loading...774KB :2010/08/18(水) 02:29:52 ID:6OQMQlKB
FlashCS4(WinXP),AS3(Player9)です。 ブザー音MP3の連続再生が上手く行きません。 このMP3は約993[ms]の長さがあり、目標は「ブーーーーー」と 途切れずに連続させて鳴らすことですが、単純に繰り返すと 「ブー、ブー、ブー、ブー」と断続状態になります。 対策として(間の無音部分を消す意味で)次の音を993[ms]より終了 1フレーム分の時間約30[ms]だけ前にずらして鳴らしましたが同じ でした。 何か良い方法はありますでしょうか?
656 :
Now_loading...774KB :2010/08/19(木) 01:50:39 ID:hjK4zeMP
このような文字列を Wed, 18 Aug 2010 15:41:04 +0000 このような数値にするに葉どのようなコードを書いたらよいでしょうか? 154104
>>656 数値? Asciiコードじゃなくて?
ぱっと考え得るのは、getCharCodeAt() → 10進変換
659 :
607 :2010/08/19(木) 10:31:16 ID:GUG/X6Li
> seekしてbitmapにdrawしたらいけるんじゃね? 上記件についてどなたかお知恵を貸していただけないでしょうか
>>656 文字列Wed, 18 Aug 2010 15:41:04 +0000から任意の文字取り出して
数値154104にすればいいだけなら
my_str = "Wed, 18 Aug 2010 15:41:04 +0000";
a_str = my_str.substr(17, 2)+my_str.substr(20, 2)+my_str.substr(23, 2);
a_num = parseFloat(a_str);
みたいなかんじでいいんじゃね
Asciiコードやら正規表現やら考える必要ないだろ?
>>654 ありがとうございました。タイピングミスでした。
AS2.0or3.0でマウス位置を指定座標に移動するにはどうしたら良いのでしょうか
できません
664 :
Now_loading...774KB :2010/08/20(金) 17:04:22 ID:GRtGveQC
AS3.0でjpgを一枚、埋め込み画像に登録して、 UVアニメーションを行いたいのですが、どのようにすれば可能でしょうか?
665 :
Now_loading...774KB :2010/08/20(金) 18:10:45 ID:jZQUtqwI
質問です。 解説書に「1フレームだけのスクリプトは一回しか実行されない」と書いてあるのに on enterFrameが何度も来るのはなぜですか?バグでしょうか?
さらにフレーム2以降にMCのモーションをつけたのですが、 MCは回転したままで指定のモーションが実行されません。なぜでしょうか? MC.onMouseDown = function() { MC._rotation+=5; }
間違えました↓です。上のonMouseDown ではモーションが実行されました MC.onEnterFrame = function() { MC._rotation+=5; }
>>666 onEnterFrameはその解説書とやらで和訳すればわかるんちゃうの?
バグではないなw何度も来なけりゃ意味ないだろ?
>667-668はなんでだろね?俺もわからんわw
これに限らず頭で考えたことと実際にやってみて差異があることがたまにあるけど
こういう仕様だと思うのがソフトの正しい使い方なんじゃないの?
それで思い通りの効果を得るにはどうすればよいか考えるのが面白いみたいな…
方法はあるよ
AS3で copyPixelsでやっても重いのですが var enemy8Data:BitmapData = new enemy8png(37,31); var enemy8:BitmapData = new BitmapData(37,31); enemy8.copyPixels (enemy8Data, enemy8.rect,new Point(0,0)); for(i=0;i<100;i++){ var enemy8Bitmap:Bitmap = new Bitmap(enemy8); enemy8Bitmap.x = -18.5 enemy8Bitmap.y = -15.5 enemy8Bitmap.rotation = Math.random() * 90 - 45; obj.addChild (enemy8Bitmap); } ひとまず、この書き方でも軽くなるのでしょうか?あってるのでしょうか?
>>670 addChild()が遅いからcopyPixels()にしないといけないのに
addChild()100回したら意味ないじゃん
とりあえず最後のaddChildをcopyPixelsに変える事を考えよう
ヒントというか殆ど答えかも
・描画用のBitmapDataとそれを内包するBitmapをつくって描画対象のMovieClipにaddChild()する
・ループ内で描画用のBitmapDataに対してcopyPixels()で描画
>>671 ありがとうございます
これだとあってるのということでしょうか?
var enemy8Data:BitmapData = new enemy8png(37,31);
var enemy8:BitmapData = new BitmapData(37,31);
enemy8.copyPixels (enemy8Data, enemy8.rect,new Point(0,0));
for(i=0;i<100;i++){
obj.addChild (new Bitmap(enemy8));
}
この場合だと、回転と中心点を変更することができないのですが・・・
673 :
655 :2010/08/22(日) 01:38:24 ID:wIy5yGFy
すいません、どなたか良いアイディアありますか? ちなみにこれはブブゼラを作っているのでは無いです。
674 :
Now_loading...774KB :2010/08/22(日) 17:42:49 ID:pbB0eoi8
先ほど、flex4、jdkをインストールしました。 適当なサイトのソースコードをいくつかコピーして mxmlc -static-link-runtime-shared-libraries=true Main.asでコンパイル?し、 swfファイルをクリックすると表示はされるのですが真っ白で何も描写されません。 なぜでしょうか。
きっとコードに問題があるのでしょうね
676 :
Now_loading...774KB :2010/08/22(日) 22:25:53 ID:pbB0eoi8
>>673 アタマとケツに無音部分があるんだろ
そこ避けてシークしろ
678 :
Now_loading...774KB :2010/08/24(火) 01:01:47 ID:0wELcMyq
678 宣伝にしてはかっけーな
開発環境 FlashDevelop+Flex Actionscript3 他ソフトで作成したswfファイル(中身は連番のbitmap)を読み込んで表示し、 再生をコントロールしたいのですが、 private var embedSwf1:MovieClip; [Embed(source = "splash.swf")] embedSwf1= new EmbedSwf(); addChild(embedSwf1); embedSwf1.gotoAndStop(2); 画面上に表示させ、embedSwf1.scaleX = 0,5;などと表示の大きさを変更することは成功したのですが、 gotoAndStop、gotoAndPlayなどは動作しません、 外部swfの再生をコントロールする方法はないでしょうか。
ソースコード一部訂正 private var embedSwf1:MovieClip; [Embed(source = "splash.swf")] private var EmbedSwf:Class; embedSwf1= new EmbedSwf(); addChild(embedSwf1); embedSwf1.gotoAndStop(2); でした
>>678 「1ランク上の技を身につけるFlashの強化書」(毎日コミュニケーションズ)の
p108に似たようなものがある(こっちは雪)
それにしても、在籍、少なくねーか?
683 :
Now_loading...774KB :2010/08/24(火) 13:50:30 ID:OJBSnDSM
今、ブラウザ上でリアルタイム通信するFlash作ってるんだけどphpとの連動がいまいち掴めない ネット対戦可能なFlashのソースってありませんか? もしかして板違い?
684 :
Now_loading...774KB :2010/08/24(火) 15:01:31 ID:Km7zqmor
flash.ui.ContextMenuクラスのオブジェクト"cMenu"を生成し、 contextMenuクラスに存在するはずの、clipboardItemsやclipboardMenuといったプロパティを使いたいのですが、 cMenu.clipboardItems cMenu.clipboardMenu といった書き方をすると、 「未定義である可能性の高いプロパティclipboardItemsに、静的型flash.ui:contextMenuの参照を・・・」というメッセージが出ます。」 cMenu.clipboardMenuでも、同じく「未定義である可能性の高い・・・」というメッセージが出ます。 一旦Object型のインスタンス”obj”を作って、 obj = cMenu; としたあとで obj.clipboardItems だとコンパイルエラーは出ませんが、結局動作中に、clipboardItemというプロパティ名が見つからない、といわれて動作しません。 eclipse3.3で開発をしており、Flexのバージョンは3.0です。 eclipseの設定から、Tomcatのソース・パスにも以上がないことを確認しましたが、やはり同じです。 どうしたら、これらのプロパティを使えるようになるでしょうか? Flexやeclipseのバージョンを落とすと上手くいきますか?
clipboardItemsなんかはFlash Player 10, AIR 1.5じゃないと無いみたい。
>>683 現時点で通信はどうやってんの?
AMFで通信しようとしてるの?
688 :
Now_loading...774KB :2010/08/24(火) 19:45:46 ID:P3jmLB/2
>>684 現時点で通信出来てないんです
今までActionScript以外の言語触った事がなかったので、
phpとjavascriptが、簡単なものならなんとか読めるようになった程度です
類似事例を探しても、サンプルばかりでコードを見る事が出来ず困ってたんです
689 :
Now_loading...774KB :2010/08/24(火) 21:42:14 ID:N0VTh2ra
AS3です。 uintの範囲の乱数がほしくて、 trace(uint(Math.random() * uint.MAX_VALUE)); って書いたら、奇数しか返さないんですが、なにか間違ってる?
690 :
689 :2010/08/25(水) 03:25:19 ID:m2zaxmk1
691 :
Now_loading...774KB :2010/08/25(水) 09:52:43 ID:4YSuWQSr
illustratorで作ったswfファイルの図形の 色を変更したいのですが、 どのような方法があるでしょうか? ちなみに「図形」は文字のアウトライン化を 行ったもので、単色(黒)です。
692 :
Now_loading...774KB :2010/08/25(水) 11:00:07 ID:7Mum5Jkm
>>691 illustratorでswfを書き出す必要があるのでしょうか?
そうでなければFlashにコピペした後に右クリック→分解でシェイプにする事が出来ます
動的に色を変えたいのであれば、シンボル化したあとにインスタンス名をつけてスクリプトで制御できます
var ctf:ColorTransform=new ColorTransform(1,1,1,1,0,0,0,0)
//0~255までの値
ctf.redOffset=50
ctf.blueOffset=50
ctf.greenOffset=50
//mcはシンボル化したインスタンス名
mc.transform.colorTransform=ctf
693 :
691 :2010/08/25(水) 11:08:16 ID:4YSuWQSr
>>692 すみません、書き忘れました。
FlashDevelopを使って作業をしているので、
CUIの環境しかないのです……。
ColorTransformですか。
それを使ってやってみます。ありがとうございました!
>>688 アンカーが違うっぽいが、
サーバプッシュを第一に考えるならPHPは使いたくないなぁ。
おれならJavaでBlazeDSを第一に考える。
ActionScript3が書けるならJavaの習得にそれほど時間はかからんとおもうが。
695 :
Now_loading...774KB :2010/08/25(水) 14:28:27 ID:Rs256L7Y
>>694 >>688 ,
>>683 です
本当にFlash以外知らなかったので手当たり次第という感じです
Javaは一段落したら勉強を始めるつもりです
今はUnion Platformというものを見つけたので、それで試行錯誤しております
具体的に作りたい対戦ゲームってリアルタイムな物なの?
となると、サーバプッシュが欲しいところだけど、PHPではわからん。
リアルタイム&PHPが前提ならソケット通信するのが一番近道だとおもう。
http://blog.asial.co.jp/275 Flashのソケットは簡単でいいよね。
そこまでのリアルタイム性がなくてもいいのであれば(例えばチャット程度のレスポンス)、
SabreAMFとかAMFPHPとかのライブラリを使って
AMF通信&ポーリングでやるのがActionScript3側が楽で良いと思う。
MMOとかを視野に入れてるんだったら、PHPはあきらめた方が
結果的に早いと思うが、サーバの調達上の問題もあるし
むずかしいところだね。
物によるけど今ならRTMFPとかどうなの 具体的にどういうもの作りたいか分からないから知らないけど
>>697 UDP使うからポート開けろとかやると面倒。
回避するのにSTUNサーバとか準備してらんない。
699 :
Now_loading...774KB :2010/08/25(水) 20:13:04 ID:TXLmekXZ
>>696 リアルタイムものですね
Union Platform使って簡単な接続は出来たんですが、今度は話題になってるようにレスポンス速度で頭を抱えております
とりあえずPHPを使わずともほぼFlash単体で通信が行えているので、このまま突っ走ろうかなと思っております
今は用意されているお試し用サーバーを使っており、そこを自前で用意出来ればいくらかマシになるんじゃないかと期待して...
700 :
Now_loading...774KB :2010/08/25(水) 21:47:04 ID:0UOyDnBR
始めまして。FlashDevelopでAS3.0を使っています。 BitmapData.mergeを使って、ある絵から別の絵に滑らかに切り替えたいのです。 BetweenAS3を使って、お手軽にやろうと思っているのですが、 引数の値を少しずつ変化させて関数を実行するようなことはできるのでしょうか? ↓xxxの値を少しずつ変化させながら実行したい。 bmpData1.merge(bmpData2, bmpData1.rect, new Point(0,0), xxx, xxx, xxx, xxx);
VBのように、名前に番号をつけて、変数化して認識はできないのですか? 以下のように、temp1 から temp20 まで、あります。 一つ一つ_visible=0;とするのは面倒なので、 名前の一部に変数を割り当てて、以下のように して、for next 文で一括に処理したいと思います。 です。 for(var i = 0; i<20;i++) { a="temp"+i trace(a); a._visible=0; } trace で確かめても、 aは temp1 temp2 temp3 … temp20 となりません。 いい方法はありませんか。 ご教授ください。
すみません 上の文の間違いです。traceではきちんとtemp1と表示されるのに、 a._visible=0;; 文はうまくいきません。
aだけだと、ただのStringだからね。 this[a]._visible=false;
>>704 感激しました。ありがとうございました。
706 :
Now_loading...774KB :2010/08/26(木) 19:00:04 ID:394GWYGd
AS3で作成しています。 MP4を再生するFLASHを作ったのですが、 スペックの低い方のPCでは正常に動作し、 別のスペックの高いPCでは初回再生時のみ音声が消えたり 途中で動画が止まる現象が起きています。 動作しないPCではFlashPlayerのバージョンが9.0.115にしてあるので、 もしかしたらそこが原因かもしれませんが… 原因だけでも特定したいので、どなたかアドバイス頂けないでしょうか。 動画は以下の用にエンコードしました。 ・映像ビットレート:2048kbps ・音声サンプリングレート:11,025HZ ・30fps ・1024×768 ・容量は10M〜20M程度 うまく動作しない方のPCスペック ・Quad Core2.3G ・メモリ4G ・ATI Radeon HD5450 1GB
707 :
Now_loading...774KB :2010/08/26(木) 21:34:07 ID:w6bY1Prc
>>701 そういう感じです!
それをBetweenAS3(Tweenerでもいいです)でやりたいのですが、
何か方法はあるのでしょうか?
VBはかじったことがあるのですが、これに関しては初心者ですみません。 教えてください 100enというムービークリップを5〜500までの間を横方向にゆっくり移動させるには、以下のように 考えますが、エラーになります。 なぜなんでしょう? i=50; while ( i < 500 ) { this.100en._x=i; this.100en._y=50; ++i;
MC名の最初の文字はアルファベットでなければならないとかそんな事があったような
>>708-709 変数やMC名の先頭は数字以外($やアンダーバーも可)。
++i; → i++;
>>708 そもそもwhileやforのループ処理が終わるまでは、描画更新されないから
ちょっとずつアクションを起こすという目的に、これらのループは使えないはず
ASのバージョンがわからないが、Event.ENTER_FRAMEとかMC.onEnterFrameとかを
使えばいいと思う
712 :
Now_loading...774KB :2010/08/29(日) 14:32:41 ID:VIY/7k/1
713 :
Now_loading...774KB :2010/08/29(日) 14:45:15 ID:HuzUYZFE
>>712 ポイントは、ハートの動きと写真のイフェクト
で、言葉でどう説明すればいいのかわかんないけど^^;
決して難しいモーションじゃないですよ
ASでもモーションでもできる動きです
でも問題ありw
Firefox系でFlashが見られない
>>713 Firefox3.6.8で見れるぞ。
というか、ビビアンスー ・・・ 老けたなあ・・・
たとえば、my_symbol._alpha=50; というように、透明度はかえることができますが、 「alpha」にあたるところで、colorのを使って色を変えることはできないのですか? みなさんどうしていますか。 もともと青のmy_symbolを赤にしたい場合どう書けばよいのでしょう。
PHPでは、 $c = 'stdClass'; $o = new $c; というように、文字列で任意のクラス名を指定して、 オブジェクトを生成することができます。 ActionScript3でもこれと同じようなことはできますか?
>>715 var my_color = new Color(インタンス名);
my_color.setRGB(0xFF0000);
>716 getDefinitionByName
初心者なので教えてください a1からa9までのインスタンスを10ずつ平行移動させて、xの価が300のところで停止させ並べて表示させようとしています。 function setXPosition() { if (this._x >= 300) { this._x = this._x ; delete this.onEnterFrame; } this._x = this._x +10; } var i=1; while (i<=9) { a="I"+i; this[a].onEnterFrame=setXPosition; ++i; } ここで、 this._x = this._x ; delete this.onEnterFrame; } this._x = this._x +10; } が問題で、このままだと並べて表示せずに重なってしまいます。いくらか試してみましたが、うまくいきません。 a1〜a10まで、重ならずに10ずつ間を開けて、並べて表示する方法を教えてください。
720==708だな? なんかやりわすれてることあるだろ?
704です。
何したいのか画像なり用意しないと分かりにくそうなのと 文法的に色々おかしそうなところがある気がする
ProgressBarについて質問させてください。 例えばdataModelというクラスに、progressというバインダブルな変数があったとして、 それをプログレスバーにバインドさせて、目盛りを動かす方法を探してます。 たとえばprogressの値が(100%中)、50なら目盛りが真ん中まで来て、 30なら目盛りが3分の1弱くらいまで来るようなイメージです。 プログレスバーの存在する画面に切り替わるたびに、 setProgress(dataModel.progress,100)などとやってもいいのですが、 それでは重くなってしまうため、バインドさせて、 dataModelの値が変わるたびにすぐ変わるような仕様にしたいです。 方法をご存知の方いますか?
>>724 setProgress(dataModel.progress,100)ってやると重くなるってどういう意味?
>>725 724です。変身が遅くなり申し訳ありません。
今、プログレスバーをタスクの進捗状況とかを表すためではなく、
単にメーターとして使っています。
そのメーターは、画面生成処理の実行のたびに再度dataModelの値を見に行き、
それを元にメーターの表示が行われるので、
画面生成の度にいちいち引数を使ったメソッドを走らせていると、
値が変わっていなくてもメソッドが走るので重い、ということです。
なので、画面生成の際は、datamodelの値を見ることはせず、
dataModelの値が変わるたびにそれを見に行き、メーターの値を変えたいです。
なので、それが達成できれば、setProgressというメソッドを使うこと自体は問題ないかと思います。
どなたかご教授お願いします。
>>726 バインドしたいって分かっているんだから
その単語で検索すればいいじゃないか
ActionScript バインド
でググばすぐ見つかると思うけど
>>726 datamodelの値を見ることはせず、
dataModelの値が変わるたびにそれを見に行き
って全く意味が分からないんだが?
setProgressくらいで重くなるとは思えないんだけど、1秒に何回くらい処理してんの?
setProgressが特に重いのであれば、現在のバーの値をdataModelの値を比較してから実行するとか
dataModelにchangeイベントを実装するとか
質問です。AS2.0で配列の中に代入された関数を実行してその関数が入ってる一つ親の配列を削除することはできますか? 例えば、_rootにあるEnemyData[0][0][1]の中にRemoveという関数があって、そのRemoveを実行してEnemyData[0][0][1]を削除するといった具合です。 Remove( ){ delete _root.EnemyData[0][0][1]; } このように、RemoveでEnemyDataの1次元目からの番地の数字(この場合なら0 , 0 , 1)を指定する方法ならできるのですが、 その方法は使わずに、ムービークリップで_parentを使って親のムービークリップを参照するのと同じようにRemoveから相対パスで指定して削除したいのですが不可能でしょうか。
遅くなりました。726です。 アドバイスいただき、ありがとうございます。 一応、検索したりAPIを見て調べたのですが、 今の自分がまだ基本的なことを分かっていないのか、バインドという形で実現する方法がよく分からず、そもそもバインドという言葉の意味を自分の中で分かってなかったみたいで、 方法が見つかりませんでした(>_<) ただ、新しいカスタムコンポーネントを作って使うことにしました。 値が変わるたびにメーターが変わるっていう機能は、そちらで実現できました。 なので、今回は無事解決です。 どうもすみませんでした。もっと勉強します・・・。
731 :
Now_loading...774KB :2010/09/02(木) 16:43:43 ID:i4oJQB9v
AS3の flash.utils.getTimer():int 関数って、 24日後(?)にはオーバーフローしそうですけど、 実際はどうなるんですか?
732 :
Now_loading...774KB :2010/09/02(木) 22:06:43 ID:KMogjNhn
Flex用wonderflスクリプトをCS4用に変更できなくて困っています。
色相環カラーピッカー(HSV色空間)の記述が
ttp://wonderfl.net/c/cukM/にあったので 左のpackage以降をコピーして「class Base extends Sprite」よりメインの記述部分「Base.as」
としてASファイル化(ドキュメントファイル化)しました。
そしてCS4のFlaファイルに適当な名前を付けてプレビューしたところ、
5008: 定義 'CircleColorPiker' の名前にこのファイルの場所が反映されていません。
このファイル内の定義の名前を変更するか、ファイルを移動してください。
というエラーが出ました。ところがCircleColorPikerの名前でドキュメントファイル化
すると、70個近いエラーが表示されます。
元の記述をどう細工すれば良いのでしょうか?
733 :
Now_loading...774KB :2010/09/03(金) 04:14:47 ID:0/0uaoJz
AS2で質問です。 フルフラッシュのサイトを作りたいのですが、今まで resizefunc(); Stage.align = "TL"; //リサイズリスナー resizeListener = new Object(); resizeListener.onResize = function(){ resizefunc(); } Stage.addListener(resizeListener); resizeListener.onResize; //リサイズ用の関数 function resizefunc(){ logo_mc._y = Stage.height - 189; logo_mc._x = Stage.width - 494; menu_mc._y = Stage.height - 92; menu_mc._x = 0; このASを使っていたのですが、小さいモニターで見た場合に背景が半分以上見えなくなってしまいます。 背景だけアスペクト比を変えずに拡大・縮小したい場合どんなASを使ったらよいのでしょうか? 解りづらい質問ですみません。
734 :
733 :2010/09/03(金) 06:33:19 ID:0/0uaoJz
>>733 Stage.scaleMode = "noScale";
ムービークリップについて質問です。 .attachMovieでどんどんインスタンスを変数を用いて複写して、 作業が終わった後、また、1から始めるのに すべてを消して 初期状態に戻す方法を教えてください。 this.attachMovie(myINS, this.getNextHighestDepth() でつくったものを removeMovieClip(); で一部しか消すことができません。
737 :
Now_loading...774KB :2010/09/05(日) 15:56:39 ID:mspovP2l
ボタンを押すと音が出て、尚且つキーボードを押しても音が出る(if文使用)ようにしていたのですが、if文がボタンとキーボードでそれぞれ出てきてしまい上手くいきません。 いろいろ試してはみたのですが、キーボードクリックで音(押すごとに頭出しされる)を出すやり方はあるのでしょうか? お手数ですが、ご教授いただけると大変助かります。 《現在ボタン》 var mySound = new SoundData(); var mySoundChannel = new SoundChannel(); function playSound(e:MouseEvent):void{ if(mySoundChannel){ mySoundChannel.stop(); mySoundChannel = null; } mySoundChannel = mySound.play(); } BTN.addEventListener(MouseEvent.CLICK,playSound,false,0,true); 《現在キーボード》 stage.addEventListener(KeyboardEvent.KEY_DOWN,dok); function dok(e:KeyboardEvent):void { if (e.keyCode == 49) { mySound.play(); ※ボタン計16個
FlashLite1.1でURLデコードするサンプル encoded_string = "Hello%2C%20how%20are%20you%3F"; status = fscommand2("unescape", encoded_string, "normal_string"); trace (normal_string); // 出力 : Hello, how are you? を実行しても、undefined (normal_stringが定義されてない)と表示されてしまうのですが、 原因がわかるかたいますでしょうか。 使用flashはcs5で、FlashLite1.1でパブリッシュしてます。
>>737 問題を分割して、それぞれ最小限のコードで試し、最終的に課題となる点が見つかってから再質問汁
741 :
Now_loading...774KB :2010/09/06(月) 05:43:53 ID:vGWMW84m
ProgressionのLoadSWFを使って外部ファイルのswfとpng画像を読み込んだんですが、複数addChildすると1つ目が消えてしまいます。 bitmapDataにすれば良いことはわかっているのですが、その方法がわからず困っています。 どなたか教えていただけないでしょうか。 IndexScnene.as //画像読み込み for (var i:int = 0; i < 9; i++) { new LoadSWF(new URLRequest("img1/" + i + ".png"),new CastLoader(), { resGroup:"item1Group" } ), new LoadSWF(new URLRequest("swf1/" + i + ".swf"), new CastLoader(), { resGroup:"item2Group" } ), } 〜省略〜 //リソースから画像を配列として取得 var loaders1:Array = getResourcesByGroup("item1Group", true); var loaders2:Array = getResourcesByGroup("item2Group", true); //画像を縦に並べて表示 for(var i:int=0;i<9;i++){ new AddChild(hoge,loaders1[i].data as CastLoader;).execute(); hoge.x = 0; hoge.y = i*50; new AddChild(hoge,loaders2[i].data as CastLoader;).execute(); } //1つめの横にタイル上に表示 //ここで表示させようとすると1回目の表示したほうが消えてしまいます。 for(i:int=0;i<9;i++){ new AddChild(hoge,loaders1[i].data as CastLoader;).execute(); hoge.x = 50; hoge.y = i*50; new AddChild(hoge,loaders2[i].data as CastLoader;).execute(); }
742 :
732 :2010/09/06(月) 09:45:30 ID:ZZ4BW1dJ
すいません。目的はwonderflスクリプト→CS4用に変換です。 どなたか分かりますか? 元文中の 左のpackage以降をコピーして「class Base extends Sprite」よりメインの記述部分「Base.as」 としてASファイル化 というのは、単にドキュメントファイル名を「Base.as」にしたという意味です。
test
質問させてください。 BitmapDataのsetPixel32またはgetPixel32の動作が思った通りに動いてくれません。 具体的に申しますと、 setPixelした直後にgetPixelしてちゃんとその値が入ったかどうかを確認したのですが、 なんと値が微妙に違っている場合があるのです。 下のプログラムでそれを確認できます。 var bd:BitmapData; bd = new BitmapData(32, 32, true, 0x0); changeColor(0xb74a90bd);//NG changeColor(0x64FF0000);//ok changeColor(0xFF4a90bd);//ok changeColor(0x234a90bd);//NG function changeColor(toColor32:uint):void{ trace("今から(0,0)をtoColor32にtoColor32の値をセットしますよー") trace("changeColor()", toColor32, toColor32.toString(16));//【1】 bd.setPixel32(0, 0, toColor32); trace("[0][0]:"+bd.getPixel32(0, 0), bd.getPixel32(0, 0).toString(16));//【2】 } 【1】と【2】の値は同じものでなければならないのに、微妙に違う場合があります。 これはadobeちゃんのバグなんでしょうか? それとも私のボンミスなのでしょうか? ちなみにFlashBuilder4とFlashCS5で確認しました。 もしadobeのバグだった場合、BitmapDataクラスを直でいじって直すことはできるでしょうか? お助けください。おねがいします。
745 :
744 :2010/09/06(月) 17:58:45 ID:OF15qRMU
残り半分の疑問点は?
>>741 BitmapDataのdraw第1引数に画像を入れて
そのBitmapDataを参照するBitmapを量産すれば良いのかな。
質問です。 flashCS3でデバッグ中に、変数パネルに変数の値と@xxxxxxxという 7桁の数値が表示されますが、この7桁の数値をスクリプト側で取得したり、 traceで出力できますか? あと、この値はなんと呼ばれるのでしょうか? 環境はwinXP,FlashCS3です。
749 :
733 :2010/09/07(火) 04:37:07 ID:Km6oVV4Y
>>735 Stage.scaleMode = "noScale"; も試したのですが
そうすると
menu_mc._y = Stage.height - 92;
menu_mc._x = 0;
この部分が利かなくなってしまいます・・・
どうしたらよいのでしょう?
何度も質問すみません
画像(静止画)のムービークリップをタイル状に並べていれたスプライトがあります。 このスプライトの一部分だけ表示している場合、画面に表示されていない部分の画像 は描写処理されてCPUに負担をかけますか?
751 :
Now_loading...774KB :2010/09/09(木) 21:00:40 ID:WidPf3cj
AS3のフォーカスマネージャーの仕組みや イベントの仕組みや挙動について、 深く学べる書籍やサイトを教えていただけないでしょうか? DataGridのカスタムコンポーネントでイベントを発生させたときや、 カスタムコンポーネント間でのフォーカスの制御でいつもつまづくので 基礎からみっちり学びたいと思っています。 どうかよろしくお願いいたします。
>>751 コンポーネントのソースコードをもってきてビルドし、それをデバッグする
とかどうでしょう。
コンポーネント関連の情報が少なくて自分もよくつまづきます。
753 :
751 :2010/09/10(金) 08:25:46 ID:rVNwSbD0
>>752 ありがとうございます。
やっぱりそうなりますかねぇ。。。
自分もソースコードを追っかけながら
やっているところがあるのですが時間が掛かるのが
ちょっと辛いところです。。。
754 :
Now_loading...774KB :2010/09/12(日) 15:52:24 ID:KiPHBJ84
配置している複数のMouseEevnt.CLICK・ROLL_OVER・ROLL_OUTのイベントをaddEventListenerしているSpriteボタン (Spriteには、サムネイル画像のビットマップをaddChildしている) を押すと、サムネイルに対応した原寸画像を表示するという事をしていて 原寸画像を表示する際、一時的にこの複数のSpriteボタンのマウスイベントを利かなくしたいのですが イベントリスナーを外す以外の方法として 原寸画像をaddChildしている大きいSpriteで、複数のサムネイルボタンをすべて覆うという方法でも問題は無いのでしょうか? 一応これでも、原寸画像のSpriteの下になっているSpriteボタンのイベントは利かなくなってはいるようですが・・・
わからん フラグ立てて、イベント来てもreturnさせれば確実なんじゃないの?
756 :
Now_loading...774KB :2010/09/13(月) 02:15:49 ID:ANMcr0V7
座標でガッチガチにやる位しか想像つかないなぁ マウスダウン座標と現在マウス座標の内にあるものを選択状態にして、マウスアップで選択確定 マウスダウンがMC内なら選択MCをドラッグ開始、MC外なら選択解除。。みたいな
758 :
Now_loading...774KB :2010/09/13(月) 12:13:35 ID:oiszRDTx
AS3で質問です。 TabNavigatorの下にVBoxを3つほど置いて 各VBoxのLabelプロパティに タブに表示する文字列を設定しているのですが、 画面を表示したときにタブに表示されている文字が切れてしまいます。 マウスカーソルを合わせると、全部の文字が表示されるのですが、 タブの幅や高さ、文字サイズなど色々変えてみても、 どうしても一番最初は文字が切れてしまいます。 そして、文字が切れるのは一番左のタブ(一番最初に選択されているタブ)だけになります。 最初から文字全体を表示させるにはどのようにすればよろしいでしょうか?
>>756 範囲指定開始時のマウスダウン時の座標を保存しておいて、範囲指定後のマウスアップで、
MC内の子オブジェクトのリストが範囲内かチェックすれば良いだけだとおもうが。
>>758 状況がいまいち分からんけど、文字列の最初に空白を入れるとか
761 :
758 :2010/09/13(月) 13:35:10 ID:oiszRDTx
>>760 たとえば、
左から
あいうえお
かきくけこ
さしすせそ
とタブに表示するように設定したとします。
あいうえおのタブは
あいう..
となり、それ以外のタブは
かきくけこ
さしすせそ
と正しく表示されます。
そして、あいうえおのタブに
マウスカーソルを持ってくると
あいうえお
と表示されるのです。
空白も最初や最後に入れてみたりしたのですが、
解決にはいたりませんでした。
タブ幅、高さ、フォントサイズなどいじったのですが、
解決できませんでした。
>>761 タブってテキストフィールド(TF)のこと?
>>757 ,759
なるほど座標でこまめにチェックですね。
試してみます。
>>763 こまめって、範囲選択時しかやらなくて良いでしょ。
範囲指定するときに、範囲指定の線とか描くんだから、
マウスダウンで描き始めて、マウスアップで範囲判定だとおもうんだが。
765 :
761 :2010/09/13(月) 16:13:49 ID:oiszRDTx
>>762 TabNavigatorに各タブのラベルになります。
伝わりにくい内容ですみません。
>>764 アクティブに判定しないと、どれが選択状態になってるか分からないじゃない
>>761 VBoxを置く意味が全く分からん
TabNavigatorのタブ幅って指定できなかったっけ?
>>764 マウスアップの判定時に選択状態のものは
リストにつっこんどくのが普通だとおもうんだが。
そうすると、Ctrl+クリックとかで選択除外or追加もできるし。
選択対象オブジェクトのドラッグスタートとかで
選択範囲の物すべて移動するとかが簡単になるし。
_等幅 _ゴシック のように、"_"で始まるフォント名は他に何があるか教えてください。
770 :
761 :2010/09/14(火) 09:51:38 ID:x5hxJTJt
>>767 Vboxを置く意味は各タブにLabelとかTextInputとかを配置するためなんです。
いろんなサイトのサンプルを見ていくと
そのような形で実装されてるのを多く見かけたので私もそのようにしております。
タブ幅や高さを変えてもダメででした。
ただし、フォントサイズを6とか極端に小さくすると最初から正常に表示されるのですが、
それだと根本的な解決にはなっていないので悩ましいところです。。。
現在のフォントサイズは12を指定しています。
>>770 TabNavigatorの下というか、TabNavigatorの中にってこと?
下に置いたら隠れるだけだと思うんだが。
ButtonStyleNameとかで、Buttonのpaddingを多く指定するとかは?
ドラクエ風の戦闘シーンを作っています 攻撃をしたときや、攻撃を受けた際に「〜に○○ダメージ」という表記をしたいのですが 計算で出したダメージの値を、テキストの○○の部分に入れたいのですがどうすればいいですか?
773 :
770 :2010/09/14(火) 14:17:47 ID:x5hxJTJt
>>771 もうしわけありません。
仰るとおり、TabNavigatorの中という意味です。
ButtonStyleNameについては
スタイルが指定できなさそうなのですが・・・。
他に似たような項目も見当たらず・・・。
>772 Text = MonsterName + "に" + Damage + "ダメージ";
CS4スレにも書いたんだけど、こちらでも聞きたいので。 Flash Builder 4のプロファイラやデバッガーが動かなくなる現象をちらほら聞くんだけど、おまえらの所はどうですか? うちはOS X10.6.4でスタンドアロン版使ってるんだけど、 どうも4.0.1にアップデートしたあたりからtrace()が効かなくなった。 本体、playerともに再インスコしたり関係しそうなコンパイラオプション試したりしたけど効果なし。 もし解決策があればお聞きしたいのですが。
いまのところもんだいなし。
あ
他のソフトにすれば解決するよ
780 :
Now_loading...774KB :2010/09/17(金) 11:24:03 ID:J3Ak8CjG
AS3で質問です。 editableがfalseのDataGridの初期処理で 任意の行位置を表示するようにスクロールさせるにはどの様にすればよいのでしょうか? editableがtrueなら editedItemPositionに行と列の位置を指定してあげればよいと思うのですが・・・。 どうかよろしくお願いいたします。
782 :
780 :2010/09/17(金) 13:28:33 ID:J3Ak8CjG
事故解決しました。 selectedIndexと scrollToIndexを利用すれば解消できました。
783 :
Now_loading...774KB :2010/09/17(金) 14:14:48 ID:xVT6VhSc
AS3です。 Sprite型のオブジェクトで「graphics」を使って図形を描画しました。 この図形の色情報を取得する方法を、 ご存知の方いらっしゃらないでしょうか? 色のついた四角をたくさん用意して、 四角をクリックしたときに、 別の図形の色が変化するようなものを作りたいのですが……。
四角のみを描いたSpriteをたくさん置いて、 Spriteのクリックでいろいろしてやればいい。
graphicsから色情報は取得できないと思ふ
acの経験は浅いけど元プログラマです。自分ならこうする 選択開始時、始点を記憶 選択終了時 終点を記憶 始点と終点の矩形からできる透明のmcを作成 透明mcと各mcをhitTest 配列変数にhitTestで該当するmcをすべて入れる ドラッグで移動などの処理は配列内のmcすべてに対して行う
同フレーム内にMCが4つあり、どれかのMCの上にマウスカーソルが乗っかったら それぞれ別のフレームへ移動したい」 if(_root..mc1.onRollOver) { ○○;}else if(_root.mc2.... とか考えてみたんですけどうまくいきません フレームアクションだけでなんとかしたいんですが、都合いいアクションスクリプトはありますか? もしくは「現在マウスカーソルが乗っているMCの名前を返す」とか…
789 :
788 :2010/09/17(金) 21:38:44 ID:FILoV1wS
すみません、AS2でお願いします
>>788 イベントハンドラメソッドの使い方を復習すること
それで普通に解決する
通常マウスはひとつしかない
if文にする意味があるのかどうか?
791 :
783 :2010/09/18(土) 13:56:40 ID:NNnHU7PE
>>784 >>785 ありがとうございました!
graphicsからは色の情報は取得できないのですね……。
別の方法(新規にクラスを作って、「色」のプロパティを設ける)
でできました。
792 :
783 :2010/09/18(土) 14:08:37 ID:NNnHU7PE
>>783 の者ですが、もう一つ質問させてください。
AS3、開発環境はFlashDevelop、マウス操作についてです。
自作クラスで、オブジェクト外(ステージ上)でのマウスアップを実装しようとしています。
ですが、
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
以上のような書き方しか知らないので、
「stage」を引数にしてコンストラクタに渡していかなければなりません。
それがひどく冗長に感じるので、簡単な書き方がないか模索しています。
1.「stage」を引数にして渡さずに済む方法
2.「stage.addEventListener……」というようにstageを使わずに
オブジェクト外でのマウスアップを実装する方法
3.その他の方法
のいずれかのスマートなやり方はないでしょうか?
793 :
792 :2010/09/18(土) 14:37:38 ID:NNnHU7PE
0.自作クラス(Spriteを継承したもの)から「stage」を参照する方法 を追加させてください。 普通に 「stage.addEventListener……」と書くと、 当然ですがエラーが出ます。
stageってDisplayObjectを継承してるクラスならプロパティにあるから わざわざ渡す必要なくね?
795 :
788 :2010/09/18(土) 18:10:43 ID:hcHURHqv
>>790 ありがとうございます
でも説明が足りずすみません
フレーム内にMCとさらにMCが無いステージ?の部分があり、
そこにマウスが移動したときも違う処理をさせたかったんです
それでいちいちRollout使って1個1個指定も面倒だなぁと思って、
マウスがMCに乗っかっていないときはelseでひとくくりにできないか、と使った次第です
ものぐさ太郎すぎましたすみません。
ありがとうございました
>>792 最終的に何をやりたいのかがわからんのだが、
自作クラス上で発生しないイベントだから、stageで拾おうとしてるんだろうけど、
そのイベントでなぜ、stageを渡して新しくクラスを作成する必要があるんだ?
さらに、
>>793 で言ってることもよくわからん。
自作クラス内で、親(みたいなもの)にイベント追加しようってしてるわけだよな?
その自作クラスが、stageのmouseUpの度に作られるとしたら、
さらにイベントが上書きされることになるが、意図してる?
何か具体的に、こうしたいのだけどという質問の方が、
より適切なやり方を教えてもらえそうだと思うんだが。
FLEXについての質問です。初歩的な質問で、もし既出の場合はお許しください。 Groupコンポーネントから子を、idによって取得したいのですが、getChildByName()のようなメソッドが見つかりません。 どのような方法で実装すれば良いのでしょうか?
nameプロパティにidと同じ物指定するわけにはいかんの?
799 :
Now_loading...774KB :2010/09/18(土) 22:48:54 ID:ltBSuvQw
>>798 たしかにその方法でできますね。
ということは、idから取得することはしないでnameを設定して取得するのが普通なのですか?
javascript等idから直接取得することができる言語に比べて二度手間な感があるのですが・・・。
MCってIDを必ず定義しないと作れないことないでしょ? だったら、二度手間じゃないと思わない? javascriptだって、jQueryとかのライブラリ使わなかったら、 name属性にidと同じ奴入れてないとまずいブラウザもあるんだから、 同じ事だと思うけどねぇ。 MXMLでエレメント書いてるとそう思えるかもしれないけど、 ActionScript3のみでやれば、id属性は必要な物にしか付けないし、 階層構造無視してアクセスしたいなら、自前でListにつっこんでおけばいいし、 やり方は一つじゃないってことなんだけど、それじゃ納得できないかなぁ?
>>800 さんのおっしゃるとおりですね。
idで管理することに固執していたようです。
まだ勉強不足でlistを使用することまで考えつきませんでした。
大変参考になりました。回答ありがとうございました。
802 :
Now_loading...774KB :2010/09/19(日) 00:11:34 ID:8ISC22qq
ごめん。正確にはListって無いね。ArrayとかVectorとかになるか。もしくはObjectを使ったMap。 プロトタイプベースに慣れてると、クラスベースの面倒なところが煩わしく感じるし、 あっても良いじゃんとおもうメソッドとかないけど、それ以上のものがある AS3はいいとこ取りでできるから、俺は好き。 Dynamicクラスとか動的にプロパティ増やせるし、自由度高い。 あと少し高速に動けばなぁとはおもうけど。
なんか、読み返してえらそうだった。ごめん。 さらにArrayListがあるね。すんません。
お知恵をお借りします。 AS3で組んでます。 ドキュメントクラス内に以下のようにキーボードイベントのリスナーを使ってるのですが this.stage.addEventListener(KeyboardEvent.KEY_DOWN,keydown); 〜〜〜〜 private function keydown(event:KeyboardEvent):void { if(event.keyCode==Keyboard.RIGHT){ this.nextFrame(); } } キーボード操作ではシーンを変更するためにつかい。 メインタイムラインの各フレームに、子ムービークリップを入れ各シーンの詳細アニメを流すようにしてます。 そのムービークリップ内の詳細アニメを見進めるには、ムービークリップ内のボタンを操作するようにしています。 子ムービークリップ内のボタンを操作したのち、 そのムービークリップが再生されると、その操作してたボタンが消える内容になっています。 そのムービークリップのボタンが消えてしまったあとでは、マウスによってFLASH画面内の どこかをクリックしないとキーボードのイベントが働きません。 event.targetをtraceで出してみると、マウスクリックしたボタンに対して 都度targetを変更するらしく、 選択していたtargetのボタンが再生中消えてしまうと、そのままではキーボード操作しても イベントを発してくれないようです。 このような現象に対応するにはどうすればよいでしょうか。 よろしくお願いします
ボタンを消えないようにしてステージ外に移動させるとか?
806 :
804 :2010/09/19(日) 00:48:29 ID:BwCQjQ1P
>>805 お世話になります。
event.targetが変更されたらば、強制的にまたstageに戻すようなことはできませんでしょうか。
そうしたtargetを変更するメソッドはあるのでしょうか。
私の探し方が下手なのかもしれませんが。そうしたメソッドが見つけられずにいます。
stage.forcusでいけるんじゃないかな。 あとは、そもそものkeyEventをすべてstageで処理するとか。
808 :
804 :2010/09/19(日) 02:45:25 ID:BwCQjQ1P
stage.focus = stage; で解決できましたありがとうございます。
画像の上にポインタ合わせると指定したフレーム、 もしくはラベルへ飛ぶようにするには on (rollOver) {gotoAndPlay(フレーム番号);} でおkなんでしょうか?
>>803 そんなことないですよ。
ArrayListを今リファレンス読みましたが、かなり便利そうです。
また質問あるときはよろしくお願いします。
811 :
Now_loading...774KB :2010/09/19(日) 19:15:31 ID:9VovLHe2
AS3、Flash10です ゲームを作っています。 そのなかで使う数値を変更し、難易度を変えたりできるようにするためのMCが作ってあります。 その中に各値に対応したスライダ及びテキストインプットが作ってあり、ゲーム本体は使う度にその値を呼び出しています。 対応するスライダとテキストインプットの値は常に同じになるようになっています。 IEやFireFoxなどでの設定の画面と同じように、フレームごとに整理してタブ(クリックでフレームが移るリスナー付き)で切り替えたいのですが、 タブ(フレーム)を切り替えるとスライダ、テキストインプットの値が初期値に戻り、設定がすべてリセットされてしまいます。 そのため、スライダ、テキストインプットの値が変更されるたびに別の変数に代入し、 再びタブが表示されるときにその変数の値をスライダ、テキストインプットの値に代入し、 ゲームからの呼び出し先もその変数に変更する方法を考えたのですが、 フレームが変わってもスライダ、テキストインプットの値の変更が保存されるような方法はないでしょうか? 質問の意味わかってもらたでしょうか?
>>811 普通はそういう設定を保持するためのクラスを用意し、
タブが開いたときにその設定保持クラスから情報を引っ張ってくるように設計すると思うよ。
もしフレームが変わっても情報を保持するには、
画面外にでもいればいいから、それでうまくやり過ごすしかない。
813 :
Now_loading...774KB :2010/09/19(日) 21:08:28 ID:9VovLHe2
as3.0、flash10、flex4+flashdevelopでswfを作ってます。 Bitmapクラスで透明なBitmapを作成して、背景画像の上にaddchildすると、当然Bitmapは透過されるのですが、 Bitmapのscalexやscaleyを2.0などに変えると、体感アルファ値0.1くらいの不透明な四角形が表示されてしまいます。 でも右クリックメニューで「拡大」すると、不透明な四角形は見えなくなります。 何が原因なのでしょうか?
てすと
816 :
Now_loading...774KB :2010/09/21(火) 18:33:45 ID:93xuI6IV
質問です 複数のLoaderで、大きい画像をそれぞれのLoaderで同時に読み込み表示し 複数のLoader全てで読み込み表示が完了したら、そのまま数秒待機 その後複数のLoaderの読み込んだデータを破棄して またその複数のLoaderで、新たに大きい画像を読み込み表示。。。を繰り返すというswfを作ってみて思ったのですが 今は画像ファイルをハードディスクに置き、それをLoaderで読み込む形でflashdevelop上のテストで動いてますが このswfと読み込む画像をFFFTP等で上げてインターネット上で動かした場合 サーバーの負担がとんでもない事になったりする危険性というのは無いのでしょうか? こういった大きい画像をやたらと読み込む処理を行うような事は止めたほうがいいのでしょうか
「http 同時接続数」とかでググるといいと思うよ
>>816 他人のサーバを使ってそれをやるのはどうかと思う。
自前サーバならやればいい。
大画像をタイル状に分割して、複数のセッションで読み込むというのは
結構よくやる手ではあるが。
819 :
Now_loading...774KB :2010/09/22(水) 17:31:54 ID:av9tcooG
複数のインターフェイスを多重実装して名前の衝突が発生した場合、 片方のインターフェイスをいじって名前を変えるしかないのでしょうか? AS3 / Flex SDK3.3です。
820 :
Now_loading...774KB :2010/09/22(水) 17:41:43 ID:sVTnpnkU
web上ではなくhtmlやswfがローカル上(HDD等) にあるとして、同じフォルダ内に 01.swf 01.html 02.swf 02.htmlがあるとします ブラウザで01.htmlが開かれている状態で、同じ言ウインドウで02.htmlに切り替えたい場合 getURL("02.html","_self "); で正しいでしょうか?
821 :
Now_loading...774KB :2010/09/22(水) 17:57:26 ID:W/RHt6BN
Flex3なんですが、 画面内にActiveXコンポーネントを呼び出すような VBScriptを記述して、実行させるにはどの様にすればよいでしょうか?
>>819 完全修飾で書けば行けるはず。
com.hoge.IInterface
com.foo.IInterface
というインターフェースがあった場合
public class Test implements com.hoge.IInterface, com.foo.IInterface {
こんな感じ。
名前が変えられるというのであれば、自作物ってことだよね。
なのになぜ、インターフェースがかぶるのかがわからん。
同じ機能を無駄に実装しているように思える。
>>820 やってみたらどう?
>>821 Flash上で動かすことは出来ないと思う。
ただ、ExternalInterfaceを使ってやれば、
HTMLにはアクセスできるから、それに近いことができるかもしれん。
824 :
819 :2010/09/22(水) 18:04:44 ID:av9tcooG
>>822 ごめん、説明不足でした。
public interface IEntity
{
function update():void;
(以下略)
}
public interface IState
{
function update(entity:IEntity):void;
(以下略)
}
public class HOGE implements IEntity, IState
{
アッー!
}
こんな状態なんです。
う、これはわからん…。 あり得る状況だな。 C#だったら回避できるか。あとDelphiだと。
namespaceの問題かな IState::updateみたいに「::」使えば行けないかな?
827 :
816 :2010/09/22(水) 21:50:58 ID:T0va5ymr
>>817-818 ありがとうございました、やっぱり危ないんですかね
自分で調べてみた所では、Loaderで読み込んだ画像はブラウザのキャッシュに入り、そこから読み込まれるといった話や
破棄の際にuinload()をしても、リファレンスにはプレイヤー内のインスタンスを削除するという解説もあって
ブラウザキャッシュは残るようだし大丈夫?と勝手に考えていましたが・・・
ブラウザキャッシュがあっても、結局サーバーの通信負担はキャッシュからの場合でも同様に起こってしまうのでしょうか?
因みにやっている処理の詳細は、サイトのギャラリーページで表示する用の数十枚の大きな画像のURLを
ランダムで無造作に選び、複数のLoaderで読み込み表示・破棄を繰り返すという
ローテーションを繰り返すという流れです
サーバから読み込んだ画像とかは確かにキャッシュされるね 一度キャッシュされれば同一のURLでアクセスする限り通信は発生しないと思う、多分
829 :
814 :2010/09/22(水) 23:59:07 ID:IxsXi48k
>>814 のコードです。32ビット値で0なのに、64x64の明るい灰色の矩形が表示されてしまいます
var canvasBmpdata:BitmapData = new BitmapData(128, 128, false, 0xC0C0C0);
var canvasBmp:Bitmap = new Bitmap(canvasBmpdata);
addChild(canvasBmp);
var transBmp:BitmapData = new BitmapData(32, 32, true, 0);
transBmp.setPixel32(16, 16, 0xFFFF0000);
var transLayer:Bitmap = new Bitmap(transBmp);
transLayer.scaleX = 2.0;
transLayer.scaleY = 2.0;
addChild(transLayer);
830 :
781 :2010/09/23(木) 20:54:12 ID:AxIG6Vml
831 :
816 :2010/09/23(木) 23:54:12 ID:1mDEwvbl
>>827 ありがとうございます
使用するサーバーというのもレンタルサーバーで
流石に、最初のプリロード時に全部の画像を読み込む→ロード時間増大・動作が激重になるでしょうし
一応ブラウザキャッシュに頼るという方法もアリ?という感じなんでしょうかね
832 :
819 :2010/09/24(金) 06:03:03 ID:1onaPKJb
>>826 AS3に::あるのかなって思いつつも試してみましたが、だめぽいですね。
シンタックスエラーが飛んできます。
>>830 ここで聞くよりflash-jpとかで聞いた方がいいとおもう。
質問です。右側からM1 M2 M3とならんだインスタンスを横に平行移動あせてM1の_xが400で止めようと思います。 しかし、以下ではM1 M2 M3 の_xがすべて400になり重なってしまいます。 重ならないように平行移動して止めるにはどのように書き加えればいいですか? 教えてください。 var i=1; while (i <= 3) { a = "M" add i; this[a].onEnterFrame = setXPosition; ++i; } function setXPosition() { if (this._x >= 400) { delete this.onEnterFrame; } // end if this._x = this._x + 1; }
>834 また来たのかwよそ行ってくれ >708>720 こいつ答えても反応ないからスルー推奨
AS2.0でとか、前提条件を何も書かずにいきなりだし、 反応無い奴に返事するのは確かにむかつくな。スルーしとくか。
以前自分が書いたレスも全然参考にされてないし… もうずっとwhileのなかにいればいいよ
838 :
Now_loading...774KB :2010/09/26(日) 01:37:29 ID:vP3QwXSq
マジで? じゃおれもスルーで。 でもみんなそういうのよくわかるな
do{ お礼=回答(); } while(お礼);
お札って読んて吹いちまったじゃねえかw do{ お札=怪盗(お札); } while(お札);
動画の中にユーザーの名前を埋め込んだり、 ユーザーの画像を埋め込んで動画を生成するコンテンツがありますが、 あれって、一本のFLVを書き出してるんではなく、 FLVとFLVの間に、 MovieClipを挟み込んで実現したりしてるんでしょうか? FLV動画A→MC→FLV動画B みたいなのがオーソドックスなやり方ですか? たとえば、大分前のものになりますが、ドミノピザの配達ムービーで、 配達ムービーの途中で、注文主の名前が表示されたりするFlashです。
>>84 先ず、開発環境を書きましょう。
ニコ動で言うなら、コメントが流れる動画ってこと?
レイヤーでやれば一発解決だと思うが。
逆に何か試作してここで改善点を聞いたら良いと思う。
844 :
Now_loading...774KB :2010/09/28(火) 06:31:48 ID:bW1e382u
wixxp AS3 CS3 での制作環境になります。 main_mcの中にa_btnとb_btnがありクリックすると フレーム移動をさせたいのですが再生すると TypeError: Error #1009: null と出てしまいす。 初歩的な質問になりますがよろしければ ご指導、ご意見よろしくお願いします。 main_mc.a_btn.addEventListener(MouseEvent.CLICK, onClick01); function onClick01(event:MouseEvent):void { main_mc.gotoAndStop("2"); } main_mc.b_btn.addEventListener(MouseEvent.CLICK, onClick02); function onClick02(event:MouseEvent):void { main_mc.gotoAndStop("3"); }
main_mc、a_btn、b_btnのどれかにnullがあるんだろうね。 インスタンス名の設定をしてないとかじゃない?
846 :
Now_loading...774KB :2010/09/28(火) 08:41:18 ID:bW1e382u
>>845 さん
ありがとうございます。
インスタンス名はプロパティから設定はしているのですが
これだけでは足りないのでしょうか?
よろしければ引き続きよろしくお願いします。
847 :
Now_loading...774KB :2010/09/28(火) 17:21:13 ID:HSkB+gsn
AS3でサーバから受信するデータをXML形式で扱おうと思っています。 取り扱うファイルのサイズが20MBを超えてしまいそうなんですが、 クライアントの環境によっては重くなりそうでちょっと怖いです。 皆さんは大量のデータにアクセスするときはどの様にされてますか? 今回はあるマスターのデータを一度 DataGridに読み込む処理なんですが・・・。 20MBくらいならまだまだ余裕でしょうか?
XMLを使わずAMF一拓。 他でも使うWebServiceとして公開してるなら仕方ないが。 LAN経由でも20Mだと躊躇するなぁ。 1ページ100件表示とかにして、ページングするとか。
849 :
Now_loading...774KB :2010/09/29(水) 00:41:58 ID:DFzPXB6o
http://isvalid.jp/actionscriptLab/ASlesson/actionsctipt_keyisDown.html ↑のページを元にキー入力に関するメソッドの扱い方を勉強していたのですが、
↓のスクリプトをフレームに記述して問題なく動作するか試してみたところ、全く反応しませんでした。
因みに同じサイトにあるスクリプト入門の所を最初から最後まで全部動作を確認してみましたが、
全く反応しないのはこの項目だけです。
ifのカッコ内を(Key.isDown(Key.UP) == true)とか試してみてもダメでした、エラーすら出ません。
if(Key.isDown(Key.UP)){
trace("上矢印キーが押された");
}
OS:WindowsVista
ソフト:Adobe Flash CS4
原因って何なんでしょう…(´・ω・`)
AS3.0の設定になってるとか。
851 :
Now_loading...774KB :2010/09/29(水) 02:12:54 ID:2SDg3bHI
AS3はキー入力関係全然違うからなー
852 :
847 :2010/09/29(水) 08:34:23 ID:s2YsVhT9
>>848 今回のサービスは他でも使う想定でいるので
AMFにすることが難しいのです。
AMFにラッピングするライブラリを作るしかないのでしょうか。。。
困りものなのは、たんに読み込むだけであればいいのですが、
入力時に一覧表表示してレコードを選択させることもあります。
困りもんです。
853 :
Now_loading...774KB :2010/09/29(水) 11:29:03 ID:tScpabrl
>>849 ですが、スクリプトは2.0の奴を使っています。
他の講座も全部2.0で統一してやっていました。
>>852 サーバサイドがJavaだと言う前提であれば、
そのサービスのラッパーつくるのはそれほど難しい物じゃないと思うよ。
BlazeDSとか使って楽できるし。
>849のif文をどこに書いているの? キーを押していてもif文が実行されなければ何も起きないよ。
856 :
847 :2010/09/29(水) 14:23:28 ID:s2YsVhT9
>>854 残念ながら、今回はPHPなのです。
PHPでもAMFで通信が出来るようなのですが、
まだスキル的にハードルが高いので
いっきに飛びつくことが出来ない状況なんです。
Flexの開発サポートをしているところって
クラスメソッドさん以外にもあるもんなんですかねぇ〜
AMFPHPにしてもSabreAMFにしても、それほど難しくないぞ。 FxUGで質問しながらで行けると思うんだが。 あとは、少しでも軽くするために、JSONで行くとか。半分にはなると思う。
858 :
Now_loading...774KB :2010/09/29(水) 18:36:06 ID:9P2w1lga
849ですが、自己解決しました。
>>855 その文以外何も書いていません。
返答どうもありがとうございました。
ミスの内容を書いてよ。参考になる人もいるかもしれんし。
860 :
847 :2010/09/29(水) 21:12:16 ID:s2YsVhT9
>>857 ありがとうございます。
AMFを少し勉強したいと思います。
なるほどJSONという選択肢もありますね。
半分近くになるのは魅力的ですね。
場合によっては急ぎの部分だけJSONで実装して
おいおい他の部分にも広げていきたいと思います。
861 :
Now_loading...774KB :2010/09/30(木) 03:00:52 ID:Ee5OykZD
FlashCS4(AS3.0,Player10)WinXP FileReferenceのsaveで保存先を一旦指定してSWFを終了し、再度SWFを起動して ファイルを保存する時に前回指定したファイル保存先が(ブラウジングせずに)最初に 出てくることは可能でしょうか? つまり、SWFの有るディレクトリ→(移動)→保存先という作業無しに、「localhostで ダウンロード先を選択します」のウインドウで直接前回の保存先が出る形式です。 セキュリティ上、最初から保存先は指定できませんが、ユーザーが一旦指定したディレクトリ ならOKかなあと思って質問しました。
862 :
Now_loading...774KB :2010/09/30(木) 14:46:07 ID:2fFSoM1z
Flex3で開発してますが、 カスタムコンポーネント間のフォーカスの移動をスムーズに実装するコツを 教えていただけないでしょうか。 たとえば A,B,Cというカスタムコンポーネントがあって、 α画面ではA,Bだけ配置して Aの次にはBにフォーカスを移動するようにする。 β画面ではA,Cだけ配置して Aの次にはCにフォーカスを移動するようにする。 となった場合、各画面で Aがフォーカスを失うときには 次のコンポーネントにフォーカスを設定するって 都度都度ASで記述してますか?
>>862 フォーカスを自分で設定とかあまりやらんなぁ。
キーボードのみで素早く操作させるためなんだろうけど。
ユーザーのストーリーがあれば、それ通りにフォーカスをASで記述すればいいんじゃないの?
864 :
sage :2010/09/30(木) 15:24:56 ID:ly1sf6A9
AS2.0です。 attachMovieで作ったムービークリップの絵を 別のシンボルに変えたいのですが、 そのまま attachMovie →2つできちゃう removeMovieClip後attachMovie →座標情報がなくなっちゃう シンボルだけ変える方法を教えてください。
>>864 すまん、正確な意味がわからん
絵をかえるってのは、要するに最初にattachしたMCを廃棄して
別のMCをattachしたいってこと?
ならremoveMCする前に、座標情報どっかにもっとけばいいように思えるが
そういうことじゃないの?
866 :
Now_loading...774KB :2010/09/30(木) 16:00:24 ID:Vy03zOKW
透明の何もないムービークリップを間にかまして root-空mc-attachMovieしたmcA 座標を動かすときはAでなく空mcを動かす 空mcからremoveMc,AttachMovieしてmcBに とやればどうか
867 :
864 :2010/09/30(木) 16:02:47 ID:ly1sf6A9
はい。ムービークリップAを ムービークリップBにしたいのです。 確かに座標を変数に保持して remove→attach でできるのですが 他に方法はないのでしょうか? ・オセロで 白→黒 ・ボタンを押したら 別のボタン(押された絵)にする ・カーソルキーの右を押したら 主人公を右向きにする こういった場合も remove→attach で実現するのがAS2.0では一般的でしょうか?
868 :
864 :2010/09/30(木) 16:04:33 ID:ly1sf6A9
>>866 なるほど!
2段階にするのですね。ありがとうございます、やってみます。
869 :
Now_loading...774KB :2010/09/30(木) 16:14:44 ID:Vy03zOKW
FlexとかでなくFLASHでやっているなら、 ムービークリップのタイムラインの一フレーム目に絵柄A、 二フレーム目に絵柄Bを置いて アクションスクリプトで一コマ目にstop();を入れておく で外からmc.gotoAndStop(1)、mc.gotoAndStop(2)で絵柄が切り変わる。 オセロのコマや左向き右向きの切り替えくらいならこれでもできるのでは
>867 一応書くけど >こういった場合も remove→attach で実現するのがAS2.0では一般的でしょうか? そこに書いてる例だけだとAttachMovie使う必要があるのかどうか疑問 オセロの白黒なんかはMC内のフレーム1、2の移動でやるのが自然だと思う 2番目も同様 向きをかえるだけなら_xscale*=-1とかでいい
場合によって使い分けがよさそうですね。 フレームを使うのと 2階層にするので 両方試してみます。 ありがとうございました。
872 :
862 :2010/09/30(木) 17:51:10 ID:2fFSoM1z
>>863 そうなんです。
キーボードですばやく入力したいという要件があるからなんです。
ひとまずASで各画面に記述していく方向で考えていきます。
>>872 あるよねそういう要件。
キーボードイベントをベースで受け取ってステートにあわせて処理する
ディスパッチャー作った方が楽かもね。
874 :
862 :2010/09/30(木) 21:38:02 ID:2fFSoM1z
>>873 なるほどです。
今考えていたのが
A、B、Cのそれぞれのカスタムコンポーネントのプロパティ
next○○
というプロパティを持たせて、各々、次のフォーカスのコンポーネントを
保持させようかと考えてました。
ご意見参考にさせていただきます。
875 :
初心者 :2010/10/02(土) 11:24:43 ID:BFEJHZ7M
AS3.0です。初心者です。 photoフォルダにある画像を10枚ステージに読み込みたいのですが、 うまくいきません。 「thum」というmc作って、識別子「thum」でリンケージしています。 配列の処理の仕方が悪いのでしょうか・・・ よろしくお願いします。 var sks:Array = new Array(); for (i=1; i<10; i++) { str = "sks" + String(i); _root.attachMovie("thum",str,i); eval(sks[i]); loadMovie("photo/"+i+"/1.jpg",sks[i]); sks[i]._x = 520-125*(10-i); sks[i]._y = 100; }
AS3.0で書かれていないんだけど、どゆこと?
877 :
Now_loading...774KB :2010/10/02(土) 13:37:05 ID:5Nf5UE3S
atatchMovieはAS3にはないはずだが…
878 :
875 :2010/10/02(土) 15:02:33 ID:BFEJHZ7M
すみません、AS2.0でした。
>>875 これ何処(何)を参考にしたの?
>配列の処理の仕方が悪いのでしょうか・
って配列空っぽだよ
てか配列使うとこかな??
配列アクセス演算子を先に勉強したほうがいいんじゃないかな?
CS5の環境です。 Flashのエディターで複数行をまとめて閉じても、 自動フォーマットすると開いてしまうのですが これを回避する方法はあるのでしょうか? 設定で「閉じたもの」には適用しないとか・・・
>>834 Actionsdriptの機能からいって、一つのフレームないで収めることは不可能です
882 :
Now_loading...774KB :2010/10/04(月) 09:39:40 ID:QU8OUbjk
AS1.0です。 AS1.0で一枚絵を奥行きのあるようにする関数や方法は存在するでしょうか? 地面の絵を用意して低空飛行しているような感じにしたいのですが……。擬似3D? 分かる方がいたらお願いします。
884 :
Now_loading...774KB :2010/10/05(火) 19:36:28 ID:M0bt5C5m
(AIR環境の)AS3です。 Loaderクラスのload()を使って外部swfを読み込み表示する場合には LoaderのLoaderInfoのurlプロパティに読み込んだswfのURLがセット されるわけですが、loadbytes()を使ってバイナリデータを格納した配列から 読み込んだらurlプロパティはセットされません。これは当たり前といえば 当たり前なんですが、その外部swfがmp3などをアセットとして参照している 場合には、アセットを読み込めなくなってしまうわけです。 さる理由でload()がつかいたくないんですが、loadbytes()を使うシチュエーションで urlプロパティを自由に制御するようなテクニックって存在するもんでしょうか?
AS3.0を始めたいのですが、flexの3と4はどちらをダウンロードすれば良いですか? flex3でもAS3.0をサポートしてるようですが4のほうがいいのでしょうか?
Flex4でいいよ。
ありがとう。4をインストールしました
>>888 レス厳しいな。
俺はAS2.0でZ軸を対数関数でとって奥行きを表現した(擬似3D)。
AS1.0で出来るかは不明。
要はSFCのマリオカートみたいなことしたかったんでしょう。
AS2です。 ボタンにしたテキストの、背景色と文字色のつけ方が知りたいです。 ボタンにしていないテキストだと、以下のコードで色が変わりましたが、 ins_memobtn.textColor = 0xff0000; ins_memobtn.backgroundColor = 0x00ffff; この「memobtn」というテキストをボタンにすると、色が変わらなくなります;
892 :
Now_loading...774KB :2010/10/06(水) 14:33:08 ID:Eg28wsYG
Flash CS5、ActionScript3.0です。 DataGridコンポーネントで、 セルに入っているテキストの高さに応じて 各行の高さをそれぞれ変更させることは可能でしょうか? CellRendererで定義してみてもなかなかうまくいきません・・・。
>>891 textColor、backgroundColorプロパティは
TextFieldに対するプロパティなので
「ins_memobtn」がボタンシンボルになってしまうとそのスクリプトは機能しませんね
またスクリプトはボタンシンボルに対して投げかけても作動しないので、
どうしてもボタン内のテキストをスクリプトで制御したいのであれば、
ボタンはムービークリップシンボル「ins_memobtn」で構築して、
その中に配置したテキストのテキストボックスにインスタンス名「_textfiled」などを割り振って
ins_memobtn._textfield.textColor = 0xff0000;
ins_memobtn._textfield.backgroundColor = 0x00ffff;
と記述すれば、メインタイムラインから
ボタンクリップ内のテキストを操作できると思いますよ
AS3.0で質問させてください。 初心者でVista、CS4使用しています。 ボタンのムービークリップにROLL_OVERとROLL_OUTの設定をして書き出しました。 マウスポインタを普通の速さでボタンの上を通過させると 正しく動作するのですが、 ものすごい速さで通過させると、ROLL_OUTが反応しない時があります。 記述は下記のような感じです。 btn01.addEventListener(MouseEvent.ROLL_OVER, btnOver); function btnOver(evt:MouseEvent):void { trace("hoge"); } btn01.addEventListener(MouseEvent.ROLL_OUT, btnOut); function btnOut(evt:MouseEvent):void { trace("moge"); } 解決策ご存知でしたらよろしくお願いします。
FlashCS5で作成したswfに画像ファイルを埋め込みたいと考えています。 画像をライブラリに登録する事によってswfファイルに画像ファイルを埋め込む事は出来ました しかし、スクリプトでEmBedによって埋め込む事は出来ませんでした コードでパスを指定して埋め込める方が自分のやろうとしている事に近いのですが CS5上のアクションスクリプトでEmBedやそれ以外でもいいので コード上でファイルを指定してファイルを埋め込む事は出来ませんか
>>894 少なくともその記述とボタンの配置のみの環境では
反応漏れは確認できませんでした。
何か他のオブジェクトの挙動が
リスナー通知を上書きしちゃったりしてる可能性はないでしょうか?
>>895 EmbedコードはFlex用のコンパイラの仕様なので
デフォのFlashでは使えません。
Flashでの画像埋め込みはライブラリへの埋め込みが基本になっているようです。
>>896 回答ありがとうございます。
実際はもう少しごちゃごちゃした記述をしているので
おっしゃるとおり何かが干渉しているのかもしれません。
一度シンプルにして構築しなおしてみます。
>>896 ありがとうございます
とりあえずライブラリを使ってやりたいと思います
900 :
Now_loading...774KB :2010/10/07(木) 01:26:34 ID:b36cAP3O
自分にはスレッドとか難しくて、まだ理解出来そうにないってのがわかりました。 教えてくださって、ありがとうございました
AS2.0で質問です 短形のMCが複数個あってMCが移動する際に、それらが絶対に重ならないようにしたいのですが どうすればいいのでしょうか
座標で衝突判定したらいいんじゃないの?
>>903 座標で判定くらいはなんとか取れるんですけど…
絶対に重ならないってのは短形が移動した時の話で
たとえばBは静止しててAが勢いよくBに激突した場合、Aは摩擦で止まってBが吹っ飛ぶ
みたいな物理演算をしたいのです。
onEnterFrame
//移動量
dx = 10
this._x += dx;
if(_root.B.hitTest(this._x+10,this._y,true)){
_root.B.dx = 5;
dx = 0;
}
こんな感じでやってます。実際には"B"が30個くらいあります
>>904 の移動量dxはload内で行ったって事で
物理演算したいって、
>>902 と話がだいぶ変わってるけど・・・
Box2Dとかの物理演算ライブラリ使えば?
たいていはAS3用だけど、AS2用のもあるみたいだし
>>904 その衝突でAが止まるのは摩擦じゃなくて反作用があるからだぞ
素直に物理エンジン使っといた方がいいんじゃね
Fladeっての見つけましたけど英語ですか・・・ パンピーでも理解できそうなエンジンがあったら教えて下さいまし
エンジンとかマジ無理wwwwwwwwww ジサクジエンでふっとばせ!みたいな対向衝突を拾って、 MC同士が重ならないように移動させたいだけなんですけど
物理演算をするわけだから、物理的にどうなって欲しいとわからないと難しいのはしょうがないのだが。 あなたが書いてるA,Bの例だと足りない要素がある。 Aは何に対する摩擦なの? A B ↓ ↓ □ ○ ~~~~~~~~~←C これの摩擦係数とかが必要になったりする パンピーでもやりたいんだったら、最低限の事は覚えないと無理。
多分地面(C)です。摩擦の計算はお手本ページがあったので一応出来そうです A B →□ ○← ~~~~~~~~~C こんな風にAとBがぶつかって、仮にAの方が強い(速さ×重さ)としたらBを ふっ飛ばし、Aも多少なり反動を受けて後退・・・な感じです
お手本があって、それがわかるんだったら、 衝突時の跳ね返り係数とかも理解できると思うんだが。 物理演算って基本的には初期値を与えたらあとは勝手にやってくれるモンだし。
と思ってFladeを開いてみたら知らない単語ばかり踊っていて断念しました。 てっきりfunctionに数値を入れるだけだと思ってたので
「5005:バイトコード最適化中に不明なエラーが発生しました。」 てのが出て困ってる。 とあるサイトに このエラーはパブリッシュ時にFlashのコンパイラがメモリ不足になったときにでるエラーだそうです。 このエラーを回避するには、Flashのコンパイラへのメモリ割り当てを増やす必要があります。 〜(8)[変数名]ボックスに「JAVA_TOOL_OPTIONS」、[変数値]ボックスに「-Xmx256M」と入力します。 あって、試してみたけど、やっぱりだめみたい。 アドビには、5005エラーにつての記述が無いし そもそもこのエラーがメモリ不足が原因かどうかの確証も無さそうなんだけど 誰かこのエラーについて詳しいかたいませんか?
申し訳ない、そのサイトもみて asoファイル回りも試してみたんだ。 cs4だと、最適化の削除ができなったりしたんだけど 他の事は一通りためしてみたよ
もう物理演算は諦めました 今度は矩形をドラッグして動かせるようにして、他の矩形(静止状態)に 重なりそうになったら重ならないように退いてもらうってのを再現したいのですが 静止状態の矩形にどうASを書けばいいか分かりません。助けて下さい _________ ■ ■ | ■ | □ ■ | ■ | ------------------ 白がドラッグ可能な矩形です。流石に隅っこまで追いやった場合は動かせない仕様
AAずれ過ぎワロタ
919 :
Now_loading...774KB :2010/10/09(土) 00:19:33 ID:pHIUNCRE
ライブラリーを使えよ。
1.ドラッグしてる矩形の中心と、重なった矩形の中心を結ぶベクトルを計算 2.重なる矩形を1.のベクトルと180度反対の方向に移動させる こんな感じ?
>>920 そんな感じです
反対の方向だと逆にめり込んでくるんじゃ……変な事言ってたらすいません
922 :
Now_loading...774KB :2010/10/09(土) 07:57:44 ID:FYwzy2qO
>922 おっと、途中で送信すいませんw flex_sdk_4.1.0.16076でswfを作成してます。 $ mxmlc -target-player=10.1 hoge.mxml ピアアシストネットワーク機能を利用したサンプルアプリなんかをコンパイルしても、 ピアアシストネットワークダイアログが表示されません。 このへんの謎をどなたかお願いします><
AS2.0です。ドラッグされたmcのインスタンス名を取得する方法を教えてください。 var ff = new drag(); _root.attachMovie("mc_pic","mc_1", _root.getNextHighestDepth(), ff); _root.attachMovie("mc_pic","mc_2", _root.getNextHighestDepth(), ff); function drag() { this.onPress = function() { this.startDrag(false); //ここで ドラッグされたのが mc_1 か mc_2 か //わかるように thisから インスタンス名を取得したい }; }
>924 this._name でいけました。お騒がせ。
>922 謎が解けました。 playerglobalというのが10.1用ではなく、10.0用だったみたいです。 失礼しました。。。
初心者質問ですみません。 FLASH CSで用意されているボタンやカラーピッカー等のUI部品をActionScript(とエディタ)のみで用意することはできるんでしょうか?
928 :
Now_loading...774KB :2010/10/10(日) 07:19:19 ID:zyprj24I
自分で作るしかない
お絵かきツールを作ろうと思っています。 MinimalCompsのColorChooserで色を選択することで private function onMouseMove(event:MouseEvent):void { graphics.lineStyle(4.0, 0x0); graphics.moveTo(prev.x, prev.y); graphics.lineTo(mouseX, mouseY); prev.x = mouseX; prev.y = mouseY; } ここの線の色を変えたいのですが、 private function onChange(event:Event):void { trace(event.currentTarget) // [object ColorChooser] var color:ColorChooser = event.currentTarget as ColorChooser; trace(color.value.toString(16).toUpperCase()); // 色(16進数で表示される) } ここの部分にどう書けば変えられるのでしょうか?
930 :
Now_loading...774KB :2010/10/10(日) 10:37:30 ID:zyprj24I
931 :
Now_loading...774KB :2010/10/10(日) 10:43:27 ID:zyprj24I
932 :
Now_loading...774KB :2010/10/10(日) 17:37:50 ID:fe6GDn+R
// -------------------------------------------------- // // Test ...............: One snapshot per second // Media ..............: any // Content ............: any // // This test script exemplifies the code structure // of an automated test. // It takes one snapshot of the complete device // screen every second. One way to do so is the // use of setInterval(). // // --------------------------------------------------
933 :
929 :2010/10/11(月) 01:45:35 ID:o4uLrLnF
できました…。 はー長かった。 どうもでした。後は画像の保存だー。
すみません。RemoteObjectについて質問させて下さい。
Flex Builder3にて
_service = new RemoteObject("test");
_service.endpoint = '
http://******/ ';
_service.source= "HelloWorld";
_service.showBusyCursor = true;
_service.echoHelloWorld.addEventListener(FaultEvent.FAULT, faultHandler);
_service.echoHelloWorld.addEventListener(ResultEvent.RESULT, resultHandler);
_service.echoHelloWorld();
という処理を実装し、サーバ上に実装したHelloWorldクラスの
echoHelloWorldメソッドを呼び出しているのですが、良く分からない点が2点あります。
1. 上記スクリプトを実行すると、処理自体は実行されるものの
ブラウザのステータスバー欄に「応答を待っています」の文字が表示され、ずっと消えない。
2. 1番に関連しているのかも分かりませんがBUSYカーソルがBUSYのままです。
resultHandler内で明示的に falseに設定しないとダメでしょうか?
ご教示頂けますと幸いですm(_ _)m
>1. 上記スクリプトを実行すると、処理自体は実行されるものの > ブラウザのステータスバー欄に「応答を待っています」の文字が表示され、ずっと消えない。 2のせい >2. 1番に関連しているのかも分かりませんがBUSYカーソルがBUSYのままです。 > resultHandler内で明示的に falseに設定しないとダメでしょうか? ダメ。
教えてください。AS2.0です。 ダイナミックテキストの文字を選択した状態にしたいのですが 方法がわかりません。 ダイナミックテキストのインスタンス名を text_1 として、 setForcus(text_1); としても text_1.setForcus(); としても 特に画面に変化はないです。 そもそも setForcus()では 選択状態にならない気もします。 よろしくお願いします。
>>935 の補足
> resultHandler内で明示的に falseに設定しないとダメでしょうか?
resultHandlerだけじゃなく、faultHandlerでもやらないとだめ。
ものすごーく基本的な部分だと思うのですが、質問させてください! Flexにて、メインのmxmlの初期化関数の中で下記ソースを書いたのですが 画面に表示されません。こちら、どのような原因なのでしょうか。。 初歩的すぎて大変恐縮ですがよろしくお願い申し上げます。 var mc:MovieClip = new MovieClip(); mc.graphics.beginFill(0xFF0000); mc.graphics.drawRect(0, 0, 100, 80); mc.graphics.endFill(); mc.x = 80; mc.y = 60; addChild(mc);
>>938 mc.width=100;
mc.height=100
を入れるとか?
>>938 UIComponentのサブクラスじゃないクラスをFlexコンテナに入れる場合、
UIComponentでラップしてやらなくちゃ駄目。
var uc:UIComponent = new UIComponent();
uc.addChild(mc);
addChild(uc); //Flex3
addElement(uc); //Flex4
AS3で読み込んだXMLファイルの「内部実体」は使えませんか? <!ENTITY PATH "image/a/">で&PATH;を文字列に置換するやつです。 traceすると「& PATH;」となるのですが
942 :
941 :2010/10/14(木) 21:19:58 ID:kV+okh4L
って、3行目のPATHの前のampが消えてる
943 :
Now_loading...774KB :2010/10/16(土) 17:00:31 ID:hVmuZ35O
質問です。失礼します。 removeChildをしたときに、Event.REMOVE_FROM_STAGEで指定した 関数が実行されるというのを聞きました。 そこで、 removeChildメソッド ↓ Event.REMOVE_FROM_STAGEで指定したメソッド ↓ TimerEvent.TIMERで指定したメソッドで、ステージから消えるエフェクト ↓ 全てのイベントリスナー、オブジェクトの消去 ↓ ステージから全消去 というようなことをしたいのですが、TimerEventが思うように 実行されないようです。 removeChild(オブジェクト名); の表記だけで、 TimerEventを実行するのは可能でしょうか?
function Check():Boolean{ var unitok:Boolean = true; for(i = 0; i < 10; i++;){ for(k = 0; k < 10; k++){ if(myArray[i][j] && myArray2[i][j]){ unitok = false;}; }; }; }; var listCheck:Boolean = false; listCheck = Check(); みたいな感じに書いたんですが、「条件は未定義であり、プロパティがありません」と出ます。 指摘されているのは"Check()"なのですが、いくら見直してもミスらしいミスが見つかりません。 で、何より恐ろしいのが上書き保存をした後だと一回だけ正常に動作する事。 これって関連する変数のどれかが正常に初期化されてないって事ですかね?
945 :
944 :2010/10/16(土) 20:11:34 ID:CKHWJW7p
あ、すみません。実際のCheck関数の最後には return unitok; がついてます。入れ忘れてました。
for(var i:int = 0; i < 10; i++) {...} じゃね? あと i++; とか }; のセミコロンがすっごい余計
947 :
944 :2010/10/16(土) 20:48:45 ID:CKHWJW7p
たびたびすみません。自己解決しました。
どうも配列の外側を参照していたらしくて、それで未定義とか出てたみたいです。
>>946 i++;は誤記です。
};はC言語のクセで、ついてないと落ち着かないので・・・
>>943 removeChildした時点でステージから消えるので、Timerでエフェクト掛けたいなら、
エフェクトスタート→エフェクト終了時にremoveChild、という流れにしないとだめだと思う
moveToで移動した場所は取得できるんでしょうか 自分で保存しないとダメ?
AS3/FlashCS5 Mainのクラスに public var kekka:String; public function Main() { var keisanki:MovieClip = new Keisanki(); stage.addChild(keisanki); } と書いてFlashのライブラリにあるリンケージした計算機MCをaddChildしました。 計算機MCのクラスには計算機の機能を一通り作ってあります。 計算機として問題なく動いているのですが、 計算機MCのイコールボタンを押したときに 計算機MCの計算結果を表示してあるテキストフィールドの文字列を stage.kekka = display.text; と書いてMainクラスのkekkaに入れようとしたのですが、 コンパイルエラーがでてしまいます。 1119: 未定義である可能性が高いプロパティ kekka に静的型 flash.display:DisplayObject の参照を使用してアクセスしています。 リンケージしたMCのクラスから、Mainクラスの変数を使うにはどうすればいいのでしょうか。
951 :
950 :2010/10/19(火) 11:58:03 ID:5x4ErHf2
すいません今気づきました。 計算機MCクラスに引数で渡せばいいだけだったんですね。
>>951 その解釈はおかしい。
動けばOKであればそれでいいけど。
>var keisanki:MovieClip = new Keisanki();
keisankiはMovieClipとして、宣言してあって、
MovieClipには、kekkaと言うプロパティは無いから
>1119: 未定義である可能性が高いプロパティ kekka に静的型 flash.display:DisplayObject の参照を使用してアクセスしています。
このようなエラーが出ている。
>stage.kekka = display.text; stageにkekkaというプロパティがないって言われてるんじゃないのか kakkaそのままとかthis.kekkaでアクセスすればいいと思うけど
>>950 Mainクラスにある
public var kekka:String; を
public static var kekka:String; にすれば
Main.kekkaでアクセスできると思うけど。
そもそもMainクラスにあるプロパティにどうしてstage.kekkaでアクセス
できると思ったのかが意味不明。
>>953 外部クラスからのアクセスなんだからthisじゃ参照できないよ。
955 :
943 :2010/10/19(火) 16:12:31 ID:p/nbz0wI
>>948 ありがとうございます!
ああ、やっぱりそうなりますか……。
removeChildだけでいけたら
ソースが綺麗になるなと思っていたのですが……。
ものすごく初歩的なことだと思うのですが CS5体験版を入れてActionScript3.0 クラスというのを選んで起動したのですが これを実行するにはどうすれば良いのでしょうか メニューのデバッグには「ムービーをデバッグ」とかいうのしかないし デバッグコンソールの▼みたいなボタンは無効だし もしかして、.flaのプロジェクトじゃないと実行は無理ですか? コード package { public class Main { public function Main() {trace("hello world"); } } }
956ですが自己解決。flaとセットじゃないとダメってことですね
FlashCS4(AS3,Player10)WinXP-ProでXMLの扱いを勉強していますが、名前空間(Namespace)を
使った要素の値参照で困っています。 ※下は使用したXMLです(すいません全部記載します)
var klmObj:XML = <topNS:kml xmlns:topNS="
http://com/kml/2.2 ">
<?xml version="1.0" encoding="UTF-8"?>
<topNS:Document xmlns:docNS="
http://com/kml/docNS ">
<docNS:Placemark placeNS:idx="0" xmlns:placeNS="
http://com/kml/placeNS0 ">
<placeNS:name>名前0</placeNS:name>
<placeNS:description>詳細1</placeNS:description>
<placeNS:Point sub="0123">
<coordinates>118.169172,30.0547,436.3</coordinates>
</placeNS:Point>
</docNS:Placemark>
<docNS:Placemark placeNS:idx="1" xmlns:placeNS="
http://com/kml/placeNS1 ">
<placeNS:name>名前1</placeNS:name>
<placeNS:description>詳細1</placeNS:description>
<placeNS:Point sub="1234">
<coordinates>118.169172,30.054,436.3</coordinates>
</placeNS:Point>
</docNS:Placemark>
</topNS:Document>
</topNS:kml>;
ここで、var placeNS:Namespace = klmObj..docNS::Placemark[0].namespace("placeNS");
とすれば(上から辿る形にすれば)、下の2つはOKです。
trace("idx= "+klmObj..@placeNS::idx);// 0 が出る
trace("name= "+klmObj..placeNS::name);// 名前0 が出る
しかし、要素の値を名前空間を直接指定して参照しようとしましたが何も出ません。つまり、
var placeNS_:Namespace = new Namespace("placeNS", "
http://com/kml/placeNS0 ");
trace("name_= "+klmObj..placeNS_::name);// 何も出ない
このように、上から辿る形でなく直接参照することは不可なのでしょうか?
959 :
Now_loading...774KB :2010/10/20(水) 15:24:30 ID:FmGF/v3R
mc.constructorを使ってmcを動的生成した時に、 mc2.txt=""みたいな感じで動的生成したmcの中身にアクセスすると "未定義"のエラーがでます。 フレームを変えてアクセスするとうまくいくのですが、同じフレームで対処する方法はありますか?
AS2のやりかただっけ?
961 :
Now_loading...774KB :2010/10/20(水) 15:43:59 ID:FmGF/v3R
すいません、AC3です
AC3 アーマークラス 3ということは、まだ装備がそろってないって事か。 AS3では、constructorの返値ってClassじゃないっけ。 フレーム変わるとアクセスできるのが不思議な感じがするが、 ダイナミックプロパティなんだろうか?
963 :
light :2010/10/20(水) 17:15:53 ID:iQJlb5m5
いまFlash CS4 ゲーム制作教科書という本で神経衰弱のゲームを作成しているのですがエラーが出てしまい進まなくなっています。解決策を教えてください。 エラーが出る文章は↓ addEventListener(MouseEvent.CLICK,Change_Card); function Change_Card(event:MouseEvent):void{ var click_Name:String = parent.name; //trase ( "click_Name= " +click_Name); Object(root).click_Card( click_Name); Object(root).gotoAndPlay("omote"); //Object(parent) } でムービーに変換して実行すると TypeError: Error #1006: click_Card は関数ではありません。 at _fla::Back_Card0_2/Change_Card() と出てしまいます。 どこがエラーになってる原因なのでしょうか…?
test
>>958 XMLに特に詳しくもないんで的外れだったらゴメンだけど、
>var placeNS_:Namespace = new Namespace("placeNS", "
http://com/kml/placeNS0 ");
これって新たに別のNamespaceオブジェクト作ってるだけであって、klmObjとは全く関係ないオブジェクトじゃないの?
ここからklmObjの情報が取れるとはちょっと思えないんだが
966 :
Now_loading...774KB :2010/10/21(木) 08:02:57 ID:U/xnH6ZN
AS3、FlashDevelopで開発中の者です。 マスクについて質問をさせてください。 一方がマスクとなってもう一方を切り取りとるような、2つのオブジェクトがある場合、 その2つのオブジェクトに対して、更にマスクをかける方法はあるでしょうか? 具体的な話をすると、 文字の形の図形の色をFlash上で変更できるようなシステムを作っていて、 colorChar → Sprite型から継承したクラスのオブジェクト。 charMask → colorChar内、Loader型のオブジェクト。文字の形の画像をcolorFieldのマスクにする。 colorField → colorChar内、Sprite型のオブジェクト。色のついた面。この図形の色を変えることで、文字の色が変わる というような形で実装しています。 その色のついた文字をいくつか使って、枠の中に配置していこうとしています。 枠というのはSprite型で作った長方形で、そこと重なっている部分だけ、 文字を表示したいのです。 そこでマスクをかけようとしたのですが、上手くいきませんでした。 マスクとして使用されているcharMaskや、 すでにマスクをかけられているcolorFieldにマスクをかけられないのは 想定通りでしたが、 その2つを内包するcolorCharにもマスクがかけられませんでした。 そういうものなのでしょうか? 何らかの解決方法をご存知の方、よろしくお願いします。
AS2.0で ドラッグできるMCの上に 何もできないMCを重ねて隠してるのですが 下に隠してあるMCをドラッグできてしまいます。 ドラッグできなくするにはどうしたらよいでしょうか。
>>296 やり方違うけど、BitmapAssetでPNG画像読み込んで、
PNGの透過部分で画像をマスクしたときは、4枚ぐらい重ねたけど問題なく出来た。
970 :
967 :2010/10/21(木) 17:48:37 ID:ZGN/4HED
ありがとうやってみます。 対象がいっぱいあるので 一段階別のMCに入れた方がよさそうですね。
972 :
967 :2010/10/21(木) 18:50:03 ID:ZGN/4HED
enabledでできましたが 空MC ├ ドラッグできるMC1 ├ ドラッグできるMC2 ├ ドラッグできるMC3 にして 空MC.enabled=false; で 1〜3も使えなくなるようにできれば、と思ったのですができないようです。 1個づつenabledを変更するしか手はないのでしょうか。
>>972 空MCにonPressとかのイベント(アクションは未定義でオッケ)を定義しておけば、
下のイベントは拾わなくなる
forループなどを使えば、一斉に変更するのはそれほど手間じゃないと思う
974 :
Now_loading...774KB :2010/10/21(木) 20:32:55 ID:0FXOXJ5V
AS2.0でアクションゲームを作成しようとしています。 壁を作るにあたって、ムービークリップ同士の衝突判定をしようとhitTestで判定を行おうとしているのですが、 プレビューをしてみたところ判定が行われず、壁のムービークリップをすり抜けてしまう状態です。 判定部分は以下になります。 if (this.hitTest(_root.hero.getBounds(_root).xMax, _root.hero._y, true)) { this._x -= 5; } if (this.hitTest(_root.hero.getBounds(_root).xMin, _root.hero_y, true)) { this._x += 5; } if (this.hitTest(_root.hero._x, _root.hero.getBounds(_root).yMax, true)) { this._y -= 5; } if (this.hitTest(_root.hero._x, _root.hero.getBounds(_root).yMin, true)) { this._y += 5; } ※hero=キャラクターのムービークリップ名 問題点等ありましたらご指摘よろしくお願いいたします。
ということは 上に重ねるMCに onPressイベントを定義しておけばいけそうですね。 やってみます。ありがとうございました。
>>974 なんかよくわからんのだけど
thisは何なの?
heroがthisならこれ壁が出てきてないじゃないか
if(hero.hitTest(壁MC)){
方向転換処理
}
見たいな感じにするんじゃないかな?
977 :
958 :2010/10/22(金) 02:06:17 ID:i3N+ngFS
>>965 レスさんきゅう!
確かに、対象全体のXMLオブジェクトのklmObjと関連付ける記述が無いですよね。
とりあえず、楽しようとせずに klmObj..placeNS::[要素とか] の形式で書きます。
978 :
Now_loading...774KB :2010/10/22(金) 04:48:51 ID:5b0lO25L
環境:CS4,WinXP,AS3(またはAS2),Player10 随時変化するグラデーション背景を持つ親SWFに子SWFを読み込ませようとしていますが、 親子間で背景が一致せず悩んでいます。 ※常に子のステージの色があるため 理想的には、子SWFが透過GIFのように絵柄(MC)だけだったり、AIRの透明ウィンドウアプリケーション のようにして親に読み込ませることです。 特にAS3には拘りません(AS2は「ある意味」自由度が大きいですしw) よろしく願います。
979 :
978 :2010/10/22(金) 05:13:02 ID:5b0lO25L
(上の補足) 開発環境もFlashCS4に拘りません(Flexとか)。Player10.1でも実現可能なら導入します。
>>978 子swfのオブジェクトが何もない部分は普通に透過するとおもうけど。AS2だけど
AS3だと透過しないのか??
俺何か読み間違いしてる?
981 :
974 :2010/10/22(金) 10:29:22 ID:o5tZ+nmQ
>>981 heroはどういう風に動いてんの
>>974 の部分だけ和訳すると
壁とheroの右端の一点が重なったとき壁を横にー5動かす
壁とheroの左端の一点が重なったとき壁を横に+5動かす
壁とheroの下端の一点が重なったとき壁を縦に+5動かす
壁とheroの上端の一点が重なったとき壁を縦にー5動かす
になる
一切heroに指示出してないんだけど
heroの向きを変えたいんじゃないの?
983 :
978 :2010/10/22(金) 20:12:51 ID:I5++075G
>>980 すいません。検証不足でした。
確かに子SWFの背景は透明になります。
AS2.0で質問です root上に400*300の親MCを設置(手動)して、rootのフレームからさっきのMC内に 20*196くらいの子MCをattachMovieで縦に40個くらい呼び出した後、 親MC内でtrace(this._height)とやると400と出てしまいます。 縦幅20の子MCが縦に40個の場合ですので800という値が欲しいのですが、 どうすればよいのでしょうか。ちなみに無理やり_height=800と 記述すると親MCが正規の縦幅で表示されなくなります。(縦に伸びた感じ?)
親のmcでthis.heightやってるんだから、親=thisで親のheightが表示されている=400で正しいわけだが。
えぇ?そうかぁ?
ちょっと今、親よりでかい子1個で実験したら
子MCの_heightが返ってきたんだけど?
>>984 traceするタイミングか場所間違えてない?
てか俺がなにかまちがえてるのかなぁ?w
とりあえずもう寝ます。また明日
>>984 _root.親MC._heightで、求める高さが出るよ
988 :
Now_loading...774KB :2010/10/23(土) 06:44:57 ID:1eoNlHd8
AS3のWinXP(FlashCS4)です。 SWFが再生されたとき、それが「ブラウザか何かに埋め込まれている」か 「単独(スタンドアローン)か」をASで判別する術はありますか?
>>988 flash.system.Capabilites.playerType
あとはjavascriptオン前提で環境が限られるけどExternalInterface使ってブラウザかそれ以外かを判別かな
>>988 ああ…タイプミスすみません↓が正しいです
flash.system.Capabilities.playerType
>>985-987 1フレームしか使ってないのでタイミングとかは平気だと思います。
もしかしてMC内からのtrace(_height)とルート上からtrace(親mc._height)って
値が違うなんてあります?
trace(this._height)だとthisを間違えてる場合正しい答えにならんから trace(親mc._height)で確認できるってことでしょ とりあえずやってみそ 値が違う場合はthisが親mcでなかったってことで
>>991 ルートに400×300ピクセルのインスタンスpMCを配置
高さ20ピクセルのcMC(識別子cMC)をシンボルで作成
for(i=0; i<40; i++){
MC = pMC.attachMovie('cMC', 'cMC'+i, i);
MC._y = i*20;
}
trace(pMC._height)
これでちゃんと800がトレースされるはず
パスか、座標か何か間違えてると思います
追記 1フレームしか使ってないということですが ちゃんとattachMovieが終わった後にトレースするようになってますか? ルートのタイムラインやムービー内のタイムラインに分散してスクリプトを書くような場合は、 レイヤーの読み込み順や処理順をきちんと考慮しないと期待する値が返ってこない場合があります
javaスクリプトで応答信号を作っておくとか?
996 :
988 :2010/10/23(土) 19:49:54 ID:8Wazg/Wz
>>990 なるほど。Playerのタイプで判別でつね。
あと、どなたか次スレ準備願います。
ume
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。