ActionScript 3.0 とか絶対ムリwww
1 :
Now_loading...774KB :
2006/07/02(日) 20:40:24 ID:8PWGvCYq 俺は「多少のプログラム知識があるデザイナー」だ。 以後AS3も使えるようにしといて、ってお前・・・ 俺はプログラマーじゃねぇよヽ(`Д´)ノウワーン PGの専門学校とか出てねぇよヽ(`Д´)ノウワーン デスマーチなんて嫌だヽ(`Д´)ノウワーン
やった!初の2ゲットだ!!
FLA板初とかそんなんじゃない。すごい。何がすごいってこの奇跡。
/upの公募FLA作ってたら絶対2をゲットすることなんかなかったんだぜ?
すごくね?もしいまだに諦めずにFLASH作ってたらどうなってたと思う?
まったくヒヤヒヤしたぜ!何がヒヤヒヤってこんなくだらないことを長々と書いている間に誰かに2ゲットされたらどうしようってことなんだ!
でも大丈夫!だってFLA板だぜ?一日に5000アクセスもない過疎板で同じ時間に2を狙っている人がいると思うかい?
それでも僕はヒヤヒヤしながら書いているわけだけれども、
>>1 の書き込み時間は20:40分だ。つまりもう二時間以上たっている。
二時間以上たっているのに2をゲットしないなんてなんて過疎なんだって思うだろ?だがそれはいい。なぜならここはFLA板だからだ。
つまり何が言いたいかって言うと、この2ゲットを手始めにFLA板の有名2ゲッターとして活躍していこうと思うんだ。そう、あの偉大なる肛門様のように!!!
3 :
肛門の臭い ◆QkMYMo90VQ :2006/07/02(日) 23:14:54 ID:iaWuCySr
夏だねぇ
5 :
Now_loading...774KB :2006/07/03(月) 00:05:20 ID:X13EHLvU
JavaとかMFCみたいに 1つのクラスから派生するメソッド集 みたいなのになってるんだろう。 Fla8の時からflash.geom.* みたいな燐辺が見えてたしな〜。
AS3どころかAS2も触ったことない俺 だってずっとflash5だぜ?
チンチコーレ
参考書待ちとしか言えない
誰かFLASH+AS3で組み込みマイコン制御(ARMあたりで) できるようなミドルウェアつくってくんないかな〜〜
as1.0でいいじゃねーか もうオブジェクト指向とかやめようぜ
>>11 Flash5のころからオブジェクト指向で書いてるけど・・・
13 :
Now_loading...774KB :2006/07/23(日) 10:29:02 ID:pyiVtOOv BE:185006276-#
別にAS1.0でも書けるしデザイナが 無理して使う必要は無いんじゃないかな?
14 :
Now_loading...774KB :2006/07/28(金) 12:09:31 ID:bWoIU+0U
違うものだと思えばいいよ。 っていうかそう考えないとムリ っていうか俺にはムリ
AS3になればCやJAVAのプログラマがとっつきやすくなるから分業化が 進むだろうな。
よし!おれの時代だ!
18 :
Now_loading...774KB :2006/11/15(水) 20:01:30 ID:+DRwFImS
>>14 最近ActionScriptを勉強し始めた者だけど、記述方法どっちにすればいいのって感じ。
これからはタイムラインの最初のフレームに書きましょうっていうのはわかるけど、
売れてる参考書とかほとんど古い記述方法なんだもんな。。。
>>19 _rootの1フレーム目に書くだけならそれほど問題ない。
だけど、クラスやらオブジェクト指向がわからないのでAS3にはついていけそうもない
クラスやオブジェクト指向な技法使わなければいいだけじゃん
Flexやってるけど、別に継承とかクラス分け意識した設計しなくても書けるじゃん。 まあイベント記述なんかはちょい面倒だけど・・・ なんに絶望したんだ??
フレームアクションしか使ってなかった人達の中には、 コンストラクタやスコープ程度の概念で躓く人もいるからな
>>24 Flexでアプリアプリするもん作るなら、いいんだよ。
従来のフルFlashサイト(例えば車系やAU電話端末系)、みたいのをAS3で組むとなると
死ねる。
車載や携帯端末でAS3?? モグリカエレ AS2でも使えたら感涙だわ
28 :
Now_loading...774KB :2007/04/20(金) 23:41:46 ID:CZmxwFbq
>>27 とりあえず落ち着け
車や携帯端末なんかのプロモーション系のフルFlashサイトのことだと思われ
>>27 誤解を与えるような表現でスマン、
>>28 のいうような
バリバリ動く広告系のサイトって意味だ。
>>31 実際組んでないから分からないけど
XMLリファレンス眺めた感じだと、XMLで変数渡しとか出来るっぽいから、
その変数を使って条件分岐させれば、nikonも余裕でいけるんじゃないのかな
Tweenerっていうか、CS3のタイムラインXMLと連動できたら最強だよねこれ
ちょっと本格的に触ってみるわ
休日なんで、ちょっと試してみた なんかバージョンアップしてるっぽかったから、そっちで試したんだけど、これやばいわ AS3使ったサイト作る場合の標準的なワークフレームになりえるキガス スクリプト使った作り方はまだ分からないけど、プリセットの機能が充実しすぎで、 フレームアニメで表現できることなら、マジでXMLのみで完結できる だれかスクリプト使った使い方教えてほすぃ
>>33 ちゃんとドキュメント読んでみた。
自分独自のアニメーションのセットとかを、
プリセット拡張して増やしてけば作ってけば
結構いけそうだね。
ちょっと俺もまじめに使ってみようかな。
35 :
33 :2007/04/24(火) 16:05:07 ID:oW0hespo
>>34 プリセットのコードを調べて、だいたい分かったんだけど、
スクリプトベースのアニメーションさせたいときは、
init()にアニメを開始するコード書いて、完了したときにinitComplete()を実行すればその間は何やってもOKぽ
ただ、ちゃんと作ろうと思うと、ちとXMLがめんどいね
助長になりやすい気がするから、おおまかなパーツだけXMLで配置して、
そのパーツの中に最初から配置しておくのがいいっぽ
Javaプログラマだけど、ActionScript3.0ってJavaにすげー似てる 簡単に覚えられそうだ
似てるってのが結構罠で、逆にちょっとした違いでハマったり
大きな違いの方が情報量多くて記憶の索引になりやすいからな
いいんじゃねーの。過疎ってるしスレ違いでもないし。 と一見さんの俺が言ってみる
そういう講座みたいなのやるなら 自分のブログでやったほうがいいんじゃない
少なくとも2chでそういうスレ見ないからここで良いと思う。 このスレに住民なんて居ないだろうし。
■AS3ってなによ!? AS2をベースに、文法を厳密にすることで処理速度を大幅にアップしたもの。 プログラム的にはJavaScriptとJavaの中間っぽくなった。 ■AS3で何ができるの? 今までだったら重すぎる処理(AI、画像解析、3D等) バイトコードが直接読める(コードさえ書けばPSDでも、NESでも、DOCでもなんでも読み込める) 音のスペクトラムが取れるので、itunesのサウンドビジュアライザーみたいのも作れる ■AS3のいいところ 処理が速い(俺体感で計算処理は100倍、描画はあまり変わらない) コードが厳密なのでバグをみつけやすい。 Javaに近いので本職のコーダーが多く、よいフリーのライブラリとかが豊富。 バリバリ動くアプリケーションやゲームを作りやすい ■AS3の悪いところ 初心者に敷居が高い 厳密な分コードが長くなりがち 設計なしにアドリブで作るには、ちょっと慣れが必要 厳密なAS3を書くと、小さいもの作るには逆に小回りがききにくい場合がある
■型ってなによ!? その1 まずはAS3の最低限の前提知識として、型の説明 AS2-AS3では、変数に「型(データ型)」というものを指定します。 型はAS2だと任意だけど、AS3だとほぼ必須。 型ってのはこの変数には文字が入りますよー、この変数には数字が入りますよー、 って、変数に入る値のタイプを定義してやること。 ■なんで型なんて定義するの? 型を定義すると、 その変数にはそのタイプの値しか入れられなくなる。 その代わり分処理速度が跳ね上がる。 また数字型の変数に文字を入れたりするとエラーが起きるので、バグを見つけやすい。 とりあえず、体験版起動してAS3ドキュメント開いて、 1フレにダイレクトにスクリプトを書いてみる。 AS3でもフレにスクリプトは書けるので。
■型ってなによ!? その2 AS2でやってた人には退屈かもしれんけど、もうちょっと型の説明。 以下、1フレーム目に書いてみる。 var num : Number = 5 var str : String = "test" var ar : Array = new Array() 型の指定方法は宣言時に、 var 変数名 : 型 という形で宣言する。 AS2からある一般的な型は 数字 Number 文字 String 配列 Array オブジェクト Object 日付け Date ムービークリップ MovieClip テキストフィールド TextField ボタン Button 他にも色々あるけど基本、「クラス名=型」という認識でOK(あとで補足するけど)
■型ってなによ!? その3 まぁ、型は色々あるけど、最重要なのは ・変数には型を宣言する必要がある ・間違った型のデータを渡すとエラーがおきる この2点。 var btn : Button = 5 とかやるとエラる。 逆を言えば、変数宣言のところで型を調べれば、 どの変数にどんな値が入ってるとか忘れにくくなる。 とりあえず、ちょっと休憩。 質問がなければ、型の高度な説明は後回しにして、 AS3でのMCの操作方法とかに進むよ。
272 名前:Now_loading...774KB[] 投稿日:2007/05/12(土) 09:30:51 ID:ij2Rps0x お疲れ様です。とってもわかりやすいと思います。 でも、正直たいがいの人はas1・2で書いたほうが、わかりやすいし、 効率的だと思います。敷居が高すぎるような気がします。 自分は大学の専攻も情報系でjavaやc++なれてるからモジュール性や エラー発見、なにより速度の面で嬉しすぎるから転向するけど・・・ 一般的なflash使いの中では迷惑にしかならないと思う。 なんてゆうか、簡単なことするのにも(as1のonとか)面倒ですよね。 as1もずっと使えるならいいんですが。もしこれからas3強要路線ならflash は衰退していくような気がします。どうなるんでしょうか。
273 名前:Now_loading...774KB[sage] 投稿日:2007/05/12(土) 09:42:20 ID:9Iphtgzs 質問ー 一度変数に型を宣言してやったら、以降その変数に型を宣言してやる必要はないの? それともいちいち全てstr:Stringとかって記述するの?
>>49 (273)
かく必要ないです。型は一度コンピューターに「この変数はこの型ですよ」って
伝えればいいだけなので。そう最初に伝えることで変数の処理が高速化します。
で、質問があったのに忘れてました。cs3だとユーザー定義クラスの自動補完とか、
メソッドの宣言へのジャンプとかなさげですね。flexにはあるみたいなのですが。
eclipse使った後だとかなりストレスになります・・・何かいい方法があれば教えてい
ただきたいです。
>>50 代わりに答えてくれてアリガトン
cs3の補完機能はぶっちゃけ微妙だよね。
現状バリバリ書くならFlex2をつかうか、
SEPYみたいな外部エディターのAS3対応待ちなのが現実と思われ。
なんで、ここでもバリバリOOPだぜー!みたいなのは避けて、
もっとカジュアルにAS3書く部分に絞っていこうかなと。
AS1, AS2は、FlashPlayer内に
AVM1(アクションスクリプト・バーチャル・マシーン1)として、存在してるので
AS3とは別に後方互換で存在し続けると思う。
ただ、今後新機能が付いたときに、AS2でその恩威にあずかれるか?
っていうと微妙なんじゃないかと思う。
とりあえずCS3のコーディングを理解してみて、 アニメーションやMADのちょっとした演出にコード使うだけならAS2 バリバリゲーム作って、FGFとかに作品おくるぜー!ってひとはAS3かも って感じでいいんじゃないかなと。
278 名前:Now_loading...774KB[sage] 投稿日:2007/05/12(土) 10:09:56 ID:ij2Rps0x
>>51 (275)
確かにそうですね。
今までのon、attachmovieはどうすれば??ぐらいわかれば、
OOPじゃなくても、as3の恩恵を受けて今までどおりにかけるよう
になれそうですもんね。as2に慣れてるが、javaはやったことない人
向けぐらいがいいと思います。がんばってください。
まあ難点はあるけどas3の超高速化はとても嬉しい。
今まで遅延のせいでどれだけ苦労したことか。。
■ムービークリップを張ってみる 1 AS2使いにとって最大のビックリは、attachMovieがなくなったことだと思う。 じゃあ、どうアタッチするか?なんで変わったのか!?というお話。 まぁ、とりあえずMC作って、スクリプトから張ってみよう。 ・新規シンボルでMovieClipを作って、●を描く。 ・ライブラリから作ったMCのリンケージを開く。 ・export as actions scriptを選ぶ。 なんかいままでリンケージIDだった部分が、 クラス名と、基底クラスみたいな2つになってると思う。 基底クラスの方は勝手にMovieClipが指定されてると思うので無視。 クラス名のところに "Maru" とか描いておこう。 で、メインのタイムラインの1行目に var mc : MovieClip = new Maru(); this.addChild( mc ); で、表示されるはず。
■ムービークリップを張ってみる 2 new Maru() で、ライブラリのMaruクラスを設計図に、 実際のアイテムを作り出して、 addChild で、ムービーをアタッチしたわけです。 ------------------------------------------------------- 今までリンケージだったものが、クラスになったけど概念的にはあまり変わらん感じ。 クラスってのは 変数や関数等を1つにパッケージングしたモノを 作るための「設計図」のことなんだよね。 マックのバリューパックのレシピや、熱海旅行ツアー企画書みたいなもん。 クラス(バリューパックって定義とレシピ)があれば、 あとはそれを元に、何個でもバリューパックを生産できるわけですよ。 で、new Maru()が作るパートで、addChild() で ステージに貼り付けてるわけです。
■ムービークリップを張ってみる 2 AS2とAS3の最大の違いは、 ムービークリップの作成と、アタッチを 2段階にわけたことだけど、 これによって何がかわるのか。 ・作ったからといって、貼る必用はない 作るだけで、画面に張らないということもできる。 計算用、画像処理用にダミーに作って、表示しないとかも可能。 ・他のMCの子供に移動できる attachMovieで一度はったものは削除しかできないが、 addChildでは、親の変更が可能 var mc : MovieClip = new Maru(); myMovieClipA.addChild( mc ) myMovieClipB.addChild( mc ) とかやるとmyMovieClipAに張ってから、やっぱりmyMovieCLipBに張りなおすことが可能。 3Dやウィンドウみたいに、前後関係が複雑な場合は便利。 ・画面から消すけど、削除しないということもできる。 今までの removeMovieClipで消すとMCは消滅したけど、 今回の removeChild は、表示から外すだけなので mc自体は存在してる。 あとで再利用とかできる。 var mc : MovieClip = new Maru(); addChild( mc ) removeChild ( mc ) trace( mc ) //表示からはずれたけど、MCは存在してる。
いったん休憩。 質疑応答あったら、ヨロ。
284 名前:Now_loading...774KB[sage] 投稿日:2007/05/12(土) 12:33:33 ID:2WX8Pht3 質問だす! attachMovieで言うところの深度は、どうやって設定するんでしょうか? あと、Click、EnterFrameなどのイベントの種類はAS2的に簡単に設定できますか? Java的解説でお願いしますだおかだワー
>>58 (284)
addChildをすると、MovieClipは自動的に最善面に配置される。
あるいは addChildAt というものを使って、深度指定してaddChildできる。
深度変換は、親になってるムービークリップで
setChildIndex( childMC, depth )
swapChildren( child1, child2 )
swapChildrenAt( depth1, depth2 )
とかを使って行う。
as2のdepthとの違いは、
as3のdepthは必ず0から始まって、
途中でdepthの値が抜けることはないこと。
子供が3ついたら、それぞれのインデックスはかならず 0, 1, 2 になる。
この状態で、1番をremoveChildしたら、2番が1つづれて1番になる。
逆に1番の位置に、新しくaddChildAt をした場合、
現在の1, 2番が、2,3番の位置にずれる。
イベント系をAS2的に楽にする方法は、ディフォルトではない。
なので、これからイベントを簡単に登録するクラスを作ろう、みたいな話になる。
286 名前:15[sage] 投稿日:2007/05/12(土) 13:06:32 ID:HBOvDaOh 質問なんですが 思い切ってJavaからやったほうが AS3を理解する近道なんですかね? OOPがいまだにどでかい怪物にしか見えな
287 名前:Now_loading...774KB[sage] 投稿日:2007/05/12(土) 13:12:08 ID:qgqq2sGS だからオブジェクト指向だなんだと難しく考えたらだめなんだよ。 AS2もAS3もたいして変わらないよ。
>>60 (286)
どれくらいできるのか、何をしたいのかによって違ってくると思われ。
個人的にはデザイン肌の人間にとって、
DOS窓で抽象的なスクリプトかくのは地獄だと思われ。
せめてJavaよりも、processingというアート用Java? に触るほうがよいと思う。
http://processing.org/ クラスの作成、extend, implementを理解しているレベルならば、
前述の結城さんのデザインパターン入門を読むのがオススメ、
Javaがわからなくても、ソースみれば何をやってるかは理解できるはず。
それ読んだあとに、FlashOOPでもよめば大丈夫。
完全にわかんねーよ!!って話なら
AS2でOOP先にやったほうが、実務でも役に立つし楽かもしれない。
OOPっていうのは、特定の問題に対処する特定の先方で
将棋の穴熊とか、四間飛車みたいなモン。
単なる戦法、定石だから、どのシチュエーションで必要か暗記して、
そのシチュエーションで使えばとりあえずOK.
あー、ゴメン。 ↑で書いたのはデザパタだった。 寝てないからボケてた・・・ OOPってのはようやくすると、 変数とかダラダラかかないで ようは整理整頓して、定型処理でやりましょー、みたいな取り決めに過ぎないので、 むずかしく考える必要はなっしんぐ。 実生活でいうと、レシピで料理作ったり、履歴書を同じフォーマットで作ったり、 そういう生き方。アドリブ・一発ネタいくない、みたいな。
291 名前:15[sage] 投稿日:2007/05/12(土) 13:20:12 ID:HBOvDaOh
>>61 (287)
むしろ僕の場合はオブジェクト指向がんがん使えるようになりたいです
今はonClipEventの乱立で何とかやってますが
これを1フレーム目にズラーっと書いたら
もう見る気もしませんw
ちょうどいい機会なのでこの辺で
得体の知れないかいぶつOOPをやっつけちゃうかなって考えてます
やはりそうすると一度JAVAに遠回りしたほうがいいんでしょうか?
292 名前:15[sage] 投稿日:2007/05/12(土) 13:30:16 ID:HBOvDaOh
>>62 (288)
解説ありがとうございます
まだどっちつかずのぺーぺーです
3ヶ月前に初めてHTMLに触れてそっから
JAVAscript→PHP→FLASHとわたり歩いてきました
正直『完全にわかんねーよ!』より下のレベルかと・・・
この前アドビで「AS2によるオブジェクト指向プログラム」っての読んだんですが
全然わかりませんでした
>>65 3言語やってりゃ変数とかfor文とか、基本的なことわわかってそうやね。
このままでもいいんじゃないかな、それじゃあ。
順番的に
・型ってなによ
・ムービークリップを張ってみる ← 今ココ
・とりあえずマウスイベントとかとってみる
・クラスとか作ってみる
・イベントハンドリングの仕組みについて
・簡単にマウスやエンターフレームを使えるクラスを作ろう
みたいな流れでいこうかと思ってる。
そこら辺までくれば、自力で簡単なクラスは作れるようになるかと。
299 名前:Now_loading...774KB[sage] 投稿日:2007/05/12(土) 15:31:04 ID:7PBp95zp 回答どうもです。 メインのタイムラインにしかスクリプト書けないって聞いたんですが MCのスクリプトはそのままでOKなんですかね? 使えなくなるのはボタンのon()ぐらいですか?
>>67 (299
メインじゃなくても、タイムラインに書くのは依然としてOK
on(press) みたいに、MCによくわからん貼り付け方する奴はNG
ASはどのバージョンから使ってる人? 2.0から?
331 名前:Now_loading...774KB[sage] 投稿日:2007/05/16(水) 08:47:57 ID:t4sc8v3k attachMovieをaddChildで書くってのは分かったけど 複数呼び出した時ってどう見分け付けりゃいいの? for(i=0;i<10;i++){ var mc_hoge:MovieClip = new hoge(); addChild(mc_hoge); } 1個1個別々の動きさせたいんだけど。
>>70 (331)の見て個別に円回転するmcを10個作ろうと思ったがもうだめだ。
どうしていいのかわからなくなってきた。
function moveBall(rot,radius) {
trace(this);
rot = rot + 10;
if (rot > 360) {
rot -= 360;
}
rad = rot * Math.PI / 180;
this.x = Math.cos(rad) * radius;
this.y = Math.sin(rad) * radius;
}
for (var i:Number = 0; i<10; i++) {
this["ballMc"+i] = new ball();
rotInit = 0;
radiusInit = 100;
this["ballMc"+i].x = Math.random()*300;
this["ballMc"+i].y = Math.random()*300;
this["ballMc"+i] = addEventListener(Event.ENTER_FRAME, moveBall(rotInit,radiusInit));
this.addChild(this["ballMc"+i]);
}
333 名前:Now_loading...774KB[sage] 投稿日:2007/05/16(水) 11:55:34 ID:17JT52mp
>>70 (331)
作ったmc を配列とか、Dictionaryとかに入れて管理するんだ。
var dict : Dictionary = new Dictionary();
dict[ "mc1" ] = mc1
dict[ "mc2" ] = mc2
MovieClip( dict["mc1"] ).x = 100
みたいに管理できる。
>>71 (332)のやり方は、オーソドックスなAS2スタイルの書き方だよね。
AS3だと、MovieClipを拡張して「回転するムービークリップ」クラスを作って、
それをaddChildして放置、ってのが楽かな。
よくOOPは分かりにくいっていうけど、
あれは技法っていうか考え方なんだと思う。
外部の関数を使って、対象のパラメーターを弄る(手続き指向)か、
対象(この場合はMC)自体が回転の関数とか変数持っている(オブジェクト指向)
って違いじゃないかと。大雑把に。
OOP(オブジェクト・オリエンテッド・プログラミング)ってのは、
1つのオブジェクトに関係する関数やプロパティをまとめることで、
この場合は、MCという(オブジェクト)に
回転する機能や、回転速度等とかを関連付けて(オリエンテッド)
プログラミングしてやることなんだと思う。
package{ import flash.display.MovieClip import flash.events.Event public class KaitenMovieClip extends MovieClip{ public var speed : Number = 5 //new されたらここが呼ばれる public function KaitenMovieClip() { addEventListener(Event.ENTER_FRAME, onEnterFrame); //エンターフレームイベントと、onEnterFrame関数を結びつける } // エンターフレームイベントが起きたら、ここ呼ばれる。 public function onEnterFrame( e:Event ) { //この例では本当に、rotationで回転するだけ。 this.rotation = this.rotation + speed } } } 直接ここに書いてテストしてないけど、 こんな感じでKaitenMovieClip.asとかを作て、swfと同じフォルダに置く。 で、flaでMC作ってクラスのとこに、このKaitenMovieClipを指定。 そうすれば、 new KaitenMovieClip() で、回転するムービークリップ作れる。 それで勝手に動くMC完成
336 名前:Now_loading...774KB[sage] 投稿日:2007/05/16(水) 13:58:59 ID:ntySUtr/
できたー!
>>72-73 (333-334) ありがとう! 凄くわかりやすかった。
なんかオブジェクト思考についていく自信がついた。
下のではじめエラーが出てどうしようかと思ったけど、
MouseEventのimportで動いたし、なんかいろいろやってけそう。
でもこれ外部ファイルだと素っ裸で外歩く気分だね。なんか見られてる気がして落ちつかない。
public function KaitenMovieClip() {
this.x = Math.random()*300;
this.y = Math.random()*300;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
addEventListener(MouseEvent.MOUSE_OVER, onRollOver);
addEventListener(MouseEvent.MOUSE_OUT, onRollOut);
}
public function onEnterFrame(e:Event) {this.rotation = this.rotation + speed;}
public function onRollOver(e:Event) {speed = 20;}
public function onRollOut(e:Event) {speed = 5;}
/////////////
var dict : Dictionary = new Dictionary();
for(var i:Number = 0; i<10; i++){
var mc:MovieClip = new KaitenMovieClip();
dict["mc"+i] = mc;
this.addChild(dict["mc"+i]);
}
■マウスイベントを拾ってみよう その1 途中脱線したけど、MCを張れるようになったら、 マウスイベントを取れるようにしてみる AS2使いがよく質問する on(press) や、 mc.onPress = function ができなくなったって、あたりね。 AS3では基本的にイベントの取得は、 addEventListener というものを使って、 「誰が」発信した「どのイベント」を、「どの関数が」うけとるかを、定義して使う。 発信者.addEventListener( イベントタイプ, 受け取る関数 ) 雰囲気的には、従来のStage.addListener とか Key.addListener に近い感じ。 なのでAS3では、例えばマウスイベントを受け取りたい場合、 まずイベントを受け取る関数を用意して、ムービークリップに、 マウスイベントはその関数に渡せって登録してやる必要がある。 それがさっきの 発信者.addEventListener( イベントタイプ, 受け取る関数 )
■マウスイベントを拾ってみよう その2 なんで、こんな風にかわったのか? っていうと、 従来の onPress 的やり方は、楽な分1つ弱点があったから。 それは、1つのon○○には、1つのfunction しか割り当てられなかったこと。 このせいで機能拡張とかすると、昔のコードを消したり、作り直す必用がでたりした。 addEventListener方式のいいところは、1つのイベントに何個も関数を定義できること。 myMC.addEventListener( MouseEvent.MOUSE_DOWN, onPress1 ) myMC.addEventListener( MouseEvent.MOUSE_DOWN, onPress2 ) myMC.addEventListener( MouseEvent.MOUSE_DOWN, onPress3 ) とかやれば、myMCがクリックされたらonPress1, onPress2, onPress3 の3つが呼び出される。 この方法だと、あとでマウス押したら音もつけなきゃ、とかエフェクトもつけなきゃってときに 前のコードに手をいれなくてもよかったりする。 単体で使う分にはちょっと面倒だけど、拡張するときは楽なんだね。
■マウスイベントを拾ってみよう その3 で、実際にイベントを使ってマウスをとってみよう。 例によって1フレ目にずらずらと書く。 //まずMouseEventとMovieClipをインポート import flash.events.MouseEvent import flash.display.MovieClip var mc : MovieClip = new ライブラリでリンケージ設定したMC() addChild( mc ) //MCを貼る //mcのマウスダウンイベントを onPress に渡すように登録 mc.addEventListener( MouseEvent.MOUSE_DOWN, onPress ) //イベント受け取る関数 //イベントを受け取る関数は、引数で登録したイベントが渡される function onPress( event : MouseEvent ){ var target : MovieClip = MovieClip( event.currentTarget ) trace( target, "がクリックされました。" ) } こんな感じ。 マウスイベントの種類は、MouseEventクラスをオンラインドキュメントかなんかでチェックすれば、 ロールオーバーとかアウトとか色々あるのがわかる。 ここで、いったん休憩。 質問あったらどうぞ。
340 名前:Now_loading...774KB[sage] 投稿日:2007/05/16(水) 17:04:26 ID:ntySUtr/
>>78 (339)
カーソルが変わらないんですが
どこか設定を変えないといけないんでしょうか
カーソルが自動で変わるのば、ボタン系だけ。
MCでマウスイベントを取ってもかわらない。
myMovieClip.useHandCursor = true で対応する感じ。
ここらを、
>>334 でいったような手続き型でやるとメンドイので、
MovieClipButtonみたいなクラスを作って、その初期化で全部設定してやるとよいかと。
このまま次か、次の次の章あたりでその辺はサポートする予定。
346 名前:Now_loading...774KB[sage] 投稿日:2007/05/16(水) 18:19:36 ID:MpEwQXTq ストリクトモードだと全くコンパイルできねーッ! これはストリクトモード外すと何か不具合あるのかな?
361 名前:Now_loading...774KB[sage] 投稿日:2007/05/18(金) 14:37:02 ID:KhZiWbep なんか326あたりから良スレになってきた予感 結構ためになる。特にムービーやボタンに直接AS書いていた俺にとっては。 結局addEventListener方式に慣れるしかない・・・のは仕方がないけど、やっぱやりずらい、というか理解するの難しい。 俺はビジュアルデザインメインだからアレだけど、逆にプログラマー的にはやりやすいのかな?やっぱ? それでもムリしてこの時期AS3.0に移行すべきかね?AS2.0のほうがやりやすいんだけど、ここでふんぎり付けないと乗り遅れますか? あと、やっぱ3.0のこういうイベント系でもここまできたら、外部.asでまとめ書きするのに慣れた方がよいかな? クラス(?)ファイルをライブラリ(flaのじゃなくて自分のね)に持っておいて使うとか。そういう方向が正規の方向なのかとか考えてしまう。 クラスへの代入処理一つとってみても、コンストラクタ関数挟んでインスタンス作成したりとか、なんとなく回りくどく感じて何のための便宜性なのかとか理解できないし。 コンストラクタ関数って絶対にクラスファイル名と同じ名前付けなきゃいけないんだよね?逆に同じ名前を付けることによって自動的にコンストラクタ関数になるってこと? こういう初歩的なことから勉強し直さなきゃならない気がしてきた、それでもやるべきか、2.0でマターリするべきか・・・どうよ?
>>83 (361)
バナーとか、スプラッシュアニメとかそういうのならば、AS2で全然問題ないと思う。
というか時代の流れ的に、flash11か12ぐらいでjavascriptが動くようになると思うし。
ただ今後しっかりしたサイト作るときに、
SE,コーダー系がAS3にいっちゃった場合のことを考えると、
最低限はわかったほうがいいんじゃないかと。
スキンやデザイン作る場合でも、まったくAS3わからないと
コーダーと連携ができなくて仕事支障がでる可能性はあると思う。
ビジュアルデザイン専門の場合は、
ムービークリップ数百個動かせるぜ!!
とかエフェクトバリバリだぜ!!
みたいな利点はあるんで、
そこら辺とマウス・エンターフレーム・ロード周りだけ抑えておけばいいんじゃね。
■クラスを作ってみよう その3 また微妙に間違えたよ俺・・・ ゴメンナサイゴメンナサイ。 package{ import 使う.クラスは.ここで.インポート public class クラス名 { public var 変数名 : 型 public var 変数名 : 型 public function クラス名と同じ名前の関数() { newすると最初にここが実行される。 } //値を返さない関数 public function 関数名( 引数 : 型 ):Void { ここに関数処理 } //値を返す関数 public function 関数名( 引数 : 型 ) : 帰る値の型 { ここに関数処理 return 値 } } }
■クラスを作ってみよう その2 まず上から意味をざっと説明すると。 ・一番外側は package { } で囲む。 意味はまだわからなくてOK。そういうもんだと思って。 ・次に使うクラスをインポート。 クラス内でMovieClip使うなら、flash.display.MovieClip みたいに指定してインポ ・クラス宣言 public class クラス名 {} で囲む。 public とかはまだ意味わからなくてOK。 ・変数宣言 頭にpublicつけるのと型指定を忘れずに。public の意味は、今は気にしないでOK。 ・クラス名と同じ名前の関数 newで作成するとまずコレが呼ばれます。初期化処理はココ。専門用語でコンストラクタ。 ・関数 頭に public 、引数にもちゃんと型指定、 戻り値があるなら最後に戻り値の型、なければvoid をつける。 だいたい基本作法はそんなとこ。 まぁ、こまかいとこは追々サンプルつくりつつサポート。
■クラスを作ってみよう その3 で、OOPってなんだっけをまずちょっと復習。 産業で説明すると オブジェクト指向は、 関連する機能と値を1つにまとめて クラスというものにする。 そんだけ。それ以上でもそれ以下でもない。 考え方的には 関連する絵とアニメーションとフレームスクリプトをまとめて ライブラリにシンボルとして登録するのとあまり変わらない。
■クラスを作ってみよう その4 たとえば、ゲームで使うスコア計算用のクラスとかを作ってみよう。 つまり、スコア計算に関連する関数、プロパティをまとめあげて1つにするってことね。 一度作ったら、一生使いまわせるつもりで考える。 仕様的にはとりあえず。 ・スコアの記録、保存 ・ハイスコアの記録 ・カンスト(スコア上限値)設定 ・表示用に0000300みたいなテキストを出力可能 こんな感じでいってみよう。
■クラスを作ってみよう その5 まず↑の仕様から、変数と関数を決める 変数 ・現在のスコア ・ハイスコア ・スコアの上限値 関数 ・現在のスコアをセット ・現在のスコアをゲット ・ハイスコアをゲット ・テキストとして出力 こんな感じかな
package{ public class Score{ //protected変数は、クラスの外からアクセスできません(内部処理用)。 protected var _score : Number =0 //スコア protected var _hightScore : Number = 0 //ハイスコア protected var _maxScore : Number = 99999 //上限 //初期化 public function Score( maxScore : Number) { _maxScore = maxScore } //スコア取得 public function getScore():Number { return _score } //ハイスコア取得 public function highScore():Number { return _highScore } //スコア設定 public function setScore( value : Number ):void { これから書きます! } } }
■クラスを作ってみよう その6 ざっと大枠を書くと↑のようになる。 使うときは var score : Score = new Score(99999) score.setScore(3200) score.setScore(155) trace( score.getScore() ) trace( score.getHighSocre() ) みたいにして使う。 一度るくれば、 これでもうハイスコアやカウントストップの計算は一生書かなくて済むようになる。 OOPメンドクサって言う人もいるけど、こういう一生使うメンドイ処理はクラスにして、 普通にオーサリングする部分はアンチOOPでダーティに書くとか そういう組み合わせもありだと思うよ。 うえのコードを軽く説明したら、本命のsetScore関数と、 0003000みたいに表示する部分を作る。
■クラスを作ってみよう その7 まず気になるのは変数の宣言のところにある、protected これなによ!?っていう感じだけど、 protectedってのは、「クラスの外部からアクセスできませんよ!!」て意味。 myClass._score とかやってもエラーになる。 クラスの内部でつかう内部処理用の変数や関数には、protected って書いておくわけ。 よくでてくる public ってやつは、誰でも外からも中からもアクセスできる関数・変数。 でスコアの定義や取得は、関数getScore, setScore を使ってやらせる。 なんで変数を直接いじっちゃダメなの!? っていう疑問があるけど、それは ・ハイスコア直接いじられると困る。 ・スコアセットしたら、自動でハイスコア計算させたい。 そんな理由からです。 OOPでは、「やっちゃいけないことはできなくする」という原則があるので、 ハイスコア勝手に操作できないように、highScoreって変数も作らないし、 setHighScoreもないわけです。 「やっちゃいけないことはできなくする」ってことは、 使うときに致命的なミスをしないですむって利点があるの。 東海原発で排水汲み上げにバケツ使ったとかは、 やっちゃいけないのにできちゃったのいい例ね。 メルトダウンするとこだよ。
■クラスを作ってみよう その8 で、いよいよ本命の関数 setScore を書いてみる。 public function setScore( value : Number ):void { if( value > _maxScore ){ value = _maxScore // 限界値以上だったらカンスト } _score = value // 現在のスコアに設定 if( _score > _highScore ){ _highScore = _score //ハイスコアだったら更新 } } こんな感じ、超楽チン。 スコアのセットは、setScoreしか手段がないから、 かならずスコア更新、上限チェック、ハイスコアチェックはセットで行われるですよ。 変数がprotectedだから、スコアだけ更新とかハイスコアハックとかはできないのです。 バグさらば これがOOPのちょっといいところ。
■クラスを作ってみよう その9 で、一応00003000みたいのも表示できるようにする。 //スコアを文字化 public function getText( keta:Number ):String { var str : String = "" //桁数だけ0をくっつける。 //たとえば5桁なら00000 for(var i:Number = 0; i<keta; i++){ str = str + "0" } str = str + _score //スコアを足す。000003450とかになる。 //後ろから桁数分だけ切り抜く0000「03450」 str = str.subStr( str.length - keta, keta ); return str } こんな感じ。 とりあえず、 ハイスコアも文字化したいとか、 桁数は指定するより、最大値から自動で計算するほうが楽じゃね? とか改良の余地はあるけど、とりあえず完成!! もうちょっと続くけど、いったん休憩で 質問コーナーです。
408 名前:Now_loading...774KB[sage] 投稿日:2007/05/20(日) 09:45:35 ID:5xVzA+4L >一度作ったら、一生使いまわせるつもりで考える。 とかってちょっと考え方が古くね?
>>95 (408)
まぁOOPのコンセプトわかりやすくする為に
タテマエは一応言っといたほうがわかりやすいかなとwwwwwww
410 名前:Now_loading...774KB[sage] 投稿日:2007/05/20(日) 10:43:09 ID:d9we2VE3
>>94 (402)の_highScore宣言のところで初期値99999が無意味じゃね?
明示的に指定しなくてもいいように、コンストラクタのデフォルト引数に設定した方がいいよ。
411 名前:Now_loading...774KB[sage] 投稿日:2007/05/20(日) 10:43:57 ID:d9we2VE3 _highScoreじゃなくて_maxScoreだったorz
>>98 (410)
続きで初期値 と setter / getter をやろうとしてたんで、
突っ込みナイス。
422 名前:Now_loading...774KB[sage] 投稿日:2007/05/20(日) 16:12:34 ID:vpcHcJeq
>>87 (399)
>オブジェクト指向は、
>関連する機能と値を1つにまとめて
>クラスというものにする。
>
>そんだけ。それ以上でもそれ以下でもない。
いくらなんでもこりゃねえだろ
423 名前:Now_loading...774KB[sage] 投稿日:2007/05/20(日) 16:37:12 ID:BGM0L3t0 最初はそれでいい 文系OOP厨のせいで小難しく思われがちだから それぐらいで丁度いい 慣れたらより有効な使い方を見れるようになればいい
スマン・・・ 書いてる人だけどそれダメだった???? >オブジェクト指向は、 >関連する機能と値を1つにまとめて >クラスというものにする。 まずそういう基本思想があって、 機能や特性を分析してくと、 物事はグルーピングや階層構造で分類ができて、 抽象化とかポリモーフィズムとか来るんだと思ってたんだが・・・ 俺も別にOOPマスターじゃないんで、 間違ってたら気軽にツッコミ頼む。
>>77 で
1つのイベントに何個も〜ってあるけど
ツギハギしすぎたら重くなる?
>>103 1個よりは重くなるけど、数千個とかない限り気になるレベルじゃあないと思う。
トンクス。あんまり神経質になる必要は無いわけか。
■クラスを作ってみよう 10 setter/getter ディフォルト値 さて、ようやっとできたScoreクラスだけど。 何気に使いにくい部分があるよね。 var score : Score = new Score( 9999 ) みたいに毎回上限決めなきゃなんないとことか、 スコアの更新時に score.setScore( score.getScore()+300 ) みたいに書かなきゃいけないところとか・・・ なんか、毎回単純にプロパティ弄るほうが楽だったんじゃ・・・ って気もしてくる。 そんなときには、setter / getter や、 ディフォルト値ってものを使えば、 クラスで関数にアクセスしたり初期化するときの手間を一気に軽減できたりするよ。
■クラスを作ってみよう 11 ディフォルト値 ディフォルト値ってのは、 関数を呼び出すときに引数を省略できる仕組み、 省略した場合に、代わりにディフォルトの値を渡してやる仕組みのこと。 例えばScoreクラスは初期化の関数Scoreで 毎回スコアの上限を決めていたけど、 ディフォルト値を書いてしまえば、 もうクラス作成時に毎回上限を決めなくても済むようになる public function Score( maxScore : Number = 9999) 関数( 引数名 : 型 = ディフォルト値 ) という風に、引数宣言の後ろにイコール初期値を書いてしまえば、 省略時にはその値で引数が渡されることになる。 また↓みたいに、複数の引数にディフォルト値を渡すことも可能。 myFunction( hoge1:Number = 9999, hoge2 : Number = 1300) 1つだけ注意しなければならないのは、 1つの関数にディフォルト値のある引数と、 ディフォルト値のない引数が混在する場合。 この場合、ディフォルト値のない引数が、必ず手前にこなければならない。 hoge:Number, hoge2:Number = 999 みたいに。
■クラスを作ってみよう 11 getter と setter クラスを使いやすくする、もう1つの便利機能はgetter と setter getter/setter は「プロパティのフリ」をした関数を作る機能。 public function set score( value:Number ):void { setScore(value) } public function get score():Number { return getScore(value) } みたいに、 set, get ってのがついた関数scoreを宣言すると、 var myScore : Score = new Score(); myScore.score = myScore.score + 1 みたいに、関数scoreがプロパティとして使えるようになる! 値を設定するときにはset, 値を取得するときには get のほうが呼ばれることになる。 これで、普通に値が設定できるのに、 自動でハイスコアの判定もしてくれるプロパティが作れるよ。 setter / getter の詳しい説明は次レスで。
■クラスを作ってみよう 12 getter と setter さてプロパティへの値の読み書きを、関数に転送してくれる setter/getterの書き方は以下の通り。 public function set プロパティ名( 値 : 型) : void public function get プロパティ名() : 型 setter / getter 両方用意するのが基本だけど、 片方だけしか作らなければ、読み込み専用、書き込み専用のプロパティが作れる。 totalFramesとか、bytesLoadedとかがちょうどそんな感じだよね。 いい忘れてたけど、最後についてる型は、値を返す場合に帰ってくる値の型を書く場所。 setの方は、値を返さないのでvoid getの方には、返す値の型を書いてやる。 ・プロパティの変更と同時に、色々な処理が行える。 値が変わった瞬間に表示をアップデートとか、イベントを発行とか、 いままで値を変える→update()みたいのを呼ぶ、 みたいにやってたことが一発でできるようになる。 必ずセットで実行されれば、呼び忘れもなくなるし便利。 ・読み込み専用、書き込み専用の変数が作れる。 上に書いたように、書き込み専用、読み込み専用の変数が作れるといいことがある。 それは事故が減るってこと。 プロパティに、特殊な処理を連動させたいとき(この場合ハイスコア計算)をしたいときは、 setter / getter を使えばOKって感じ。 ほんとは細かいことも色々あるけど、まぁ大まかそんな感じ。 質疑応答なければ、次に進むよ。
今さっきこれを見つけて追いついたw すごい分かりやすくて、ちょっと感動
>>109 ステージサイズとかフレームレートとかも
クラスで定義すればいいのかい?
>>111 クラスでやっても問題ない。
多分一般的にはタイムラインと関連づけるルートのクラスの頭で初期化するか、
StageInitializeみたいなクラス作って関数一発で初期化できるようにするんじゃないかな。
すごく勉強になります!
質問です。
>>107 引数のところでデフォルトの値を設定できるのですが、これって
public function Score():void{
var maxScore : Number = 9999
と書くのと違いがあるのでしょうか?
前から不思議に思ってまして、、、
>>113 省略しなかった場合の動作と比べるばメリットは色々あるよ。
function fillColor( col : Number = 0, a : Number = 1 ){
this.graphics.beginFill( col, a)
this.graphics.drawRect(0,0,100,100)
this.graphics.endFill();
}
例えば↑みたいな関数だったら、
関数呼ぶときに、引数渡さなければ自動で黒い四角を描いてくれる。
値があればその色で描いてくれる。
両方できるってのと、Flex2とかでオートコンプリートで引数のガイドがでるのが利点かな。
あとディフォルト値用に、変数一個作らなくてすむし、
引数の有無も毎回チェックしなくてすむ。
>>114 省略した場合のみ有効になるんですね、、、
無条件で値を設定するのかと思ってました。
ちゃんと書いてましたね、、、大変失礼しました。
とぼけた質問に回答ありがとうございました!
>>107 これってAS2.0でも可能なの?
それとも3.0からの書式なのかすらん。
Processingどうやって勉強した? 何かオススメの資料ある?(Nature of code以外で) 今月末にFriends of edからProcessingの800ページ の本でるよ、ビジュアル表現のアルゴリズム考えるの 不得意だから、そういうのでサンプルコード沢山みたら 結構いけるようになるかなとか最近思ってるんだけど
>>117 基本 nature of code が神だよね。
それなりにコードや数学のことがわかるのなら
Galerry of Computationがオススメ。
http://www.complexification.net/gallery/ Friends of EDで出る本は多分、ケイシー・リアスの奴だから
買っておいて損はないと思う。
あとは built with processing でググルとかかな。
processingをやる場合は日本語の資料には頼らないで、英語の文献をあたるか
ソースコードから勉強するのが一番いい。
関数も少ないし、基本1ファイルだからそのほうが力つくし、効率いいと思う。
>>118 なるほど、参考になります。
数学は苦手意識強いんで、そこらへんも合わせて
Nature of codeであげられてる参考文献などあたって
みようかな、などと考えてます。ありがとうございます。
120 :
Now_loading...774KB :2007/05/25(金) 11:53:35 ID:J7NxuIFv
package { import flash.display.Stage; public class stagesize { public function get sizeW() { return Stage.stageWidth; } public function get sizeH() { return Stage.stageHeight; } } } trace(stagesize.sizeW+":"+stagesize.sizeH); クラスの中でステージのサイズ我必要なのですがどうやって取得するんでしょうか。 思いつく限りでやってみたのですがエラーが出てしまいます。 1119: Access of possibly undefined property stageWidth through a reference with static type Class.
>>120 Stageはもうstaticでアクセスするものじゃなくなっちゃったんだ。
画面にaddChildしたMovieClipやSpriteとかの
myMovieClip.stage で取得できます。
addChildするまではstageプロパティはnullを返すのがやっかいなところ。
なんで、StageReferenceクラスとかを作って、
swf実行時の一番頭でStageReference.stage とかにステージを渡してやる。
で非MovieClip系のクラスからは、StageReference.stageとかを読みに行くようにするんじゃないかな。
他の人はどうやってるか知らないけど、自分はそうやってる。
■AS3でonPressを実装する その1 さて、いよいよAS3でonPressやonEnterFrameを実装しようではないかというお話。 とりあえずコード書いてみた。 package{ public class OldStyleMC extends MovieClip{ //ユーザーが定義できる関数は変数として宣言 public var onEnterFrame : Function public var onPress : Function public function OldStyleMC() { addEventListener( Event.ENTER_FRAME, __onEnterFrame, false, 0, true); addEventListener( MouseEvent.MOUSE_DOWN, __onPress, false, 0, true); } protected function __onEnterFrame( e:Event ) : void{ if(onEnterFrame != null){ onEnterFrame() } } protected function __onPress( e:MouseEvent ) : void{ if(onPress != null){ onPress() } } } }
このクラスをMovieClipの代わりに使うと、 var myMC : MovieClip = new OldStyleMC() myMC.onEnterFrame = function():void{ trace("this") } とか myMC.onEnterFrame = hoge function hoge() { trace("hoge"); } といったように、AS2っぽくイベントハンドリングができて、 ちょっと幸せな気分になれる。 以下、どう動作するか解説。
■AS3でonPressを実装する その2 継承のお話 まず気になるのが、1行目のクラス宣言の部分。 public class OldStyleMC extends MovieClip 「extends MovieClip」の部分。 extends ってなんですか!?ってお話。 extend は日本語では「継承」と呼ばれていて、 あるクラスをベースに、新しいクラスを作ること。 これをやると、元のクラスの機能に新しい機能を追加できる。 ザクUにブースターつけて、 ザクU改や高機動ザクを作るような感じだ。 今回はMovieClipをパワーアップさせて、 OldSytleMCってクラスを作りますって宣言なわけ。
■AS3でonPressを実装する その3 継承のお話 継承元になるオリジナルを親、または先祖。 新しく作ったほうを子、または子孫と呼ぶ。 オブジェクト指向初心者は、どっちが親で子かってので混乱しがちだけど、 これは(拡張した)子の方が高機能で、親の方が低機能なことが 原因なんだと思う。 直感的には親のほうが偉いし、強そうだからね。 だから親子の理解がゴッチャになったら、「子孫は先祖より進化してる!」 って考えるとわかりやすい。 あと憶えておいて欲しいのは、「型」について。 子は親の型の変数にも値を代入できる。 var mc : MovieClip = new OldStyleMC() とかが大丈夫ってこと。 子は親の拡張だから、親の変数、関数を全て持ってる。 だから親の型に入れても大丈夫なわけ。 ほかにも細かいことはいっぱいあるけど、今は割愛。 今つっこんでやりたい人だけ super とか override とかの概念を調べるといいと思う。
■AS3でonPressを実装する その3 関数も変数として扱えるよ 次にくるのは public var onEnterFrame : Function public var onPress : Function という部分。 何故か、「関数」を「変数」として定義してる。 これは関数も、実はFunction型の変数として扱えるから。 なんで変数にしてるか!?っていうと、 myOldStyleMovieClip.onEnterFrame = ... みたいに、AS2的に関数を定義したいから。 関数が変数なら(ややこしい)、代入できるので、 普通の関数宣言を使わずにこういう風にしてるってわけ。
■AS3でonPressを実装する その4 省略 コンストラクタ(初期化部分)の説明は、もう割愛してもいいよね。 関数__onEnterFrameと、__onPressを、イベントに登録してるだけ。
さて、いよいよこのクラスのキモの部分、 __on〜の部分。 protected function __onEnterFrame( e:Event ) : void{ if(onEnterFrame != null){ onEnterFrame() } } onEnterFrameイベントを受信して、呼び出されるわけだけど。 ここでさっき定義した変数 onEnterFrame の中身が空っぽかをチェックしてる。 で、中身が入ってたら・・・ そう変数onEnterFrameは、function型の変数だから 中身には関数が入ってるよね。 なんで、それ(変数内の関数)を onEnterFrame() で実行してやる。 これでめでたく myMC : OldStyleMC = new OldStyleMC() myMC.onEnterFrame = function(){ trace("test") } みたいに、関数をわたしてやれば AS2ちっくに関数が実行されるわけです。 これで大分MovieClipの操作が楽になった。
■AS3でonPressを実装する その6 省略 とりあえず、そんな感じで質疑応答。 なければ進みます。
onEnterFrameとかはas2みたいに予約語なわけ?それともただの変数名?
>>130 ただの変数名
onEnterFrameってfunction型の変数を作ってるだけ。
名前をAS2と一緒にしたのは、使いやすくすr為。
ためになる。ありがとう。 思いつきだけど private var __onEnterFrame:Function; public function set onEnterFrame( f:Function ):void { removeEventListener(Event.ENTER_FRAME, __onEnterFrame); // 重複登録はナシ if(f != null) { __onEnterFrame = f; // 確かAS3.0は自動でクロージャされるよね?(^^; addEventListener( Event.ENTER_FRAME, __onEnterFrame, false, 0, true); } } こんな感じで__onEnterFrameの空回りを防げたりする? AS3の環境がないので未チェックでごめんなさい。。
> // 確かAS3.0は自動でクロージャされるよね?(^^; 読み返しててなんか日本語が違う気がする。 クロージャがデリゲートされるっていうか、元のthis参照を保ったまま渡されるというか。 適切な表現がわからん、ごめんなさい。
>>132 うん、それがもっと正しい書き方だと思う。
ただ、その場合__onEnterFrameを直接イベントに登録しないで、
間にもう1つ関数挟ましたほうがいいかも。
そのままだと
__onEnterFrameに渡すクロージャには、
function(e : Event ){} みたいにイベントを引数にしなきゃならないからメンドイ。
AS3の関数はthisスコープが保存されるって認識はあってるよ。
ここはAS2との大きな違いだよね。
参照までAS2チックにするには、
関数実行をapplyで行うようにすればいいんじゃないかな。
クラスのプロパティで参照先を自身にするか、
オリジナルにするか、クロージャにするか設定できるようにしてもいいかもしれないと思った。
AS3ではバインドメソッドとメソッドクロージャの挙動はぜんぜん違うよ。 バインドメソッドのthisはapplyで他のスコープを設定しても常に元のスコープ を参照するはず。 レキシカル環境への参照はどちらも保持するけどね。
>>135 あ、ここら辺は知らなかった。
こんど色々調べてみる。サンクス。
>>137 ここはまぁ、質疑応答だし。
そこそこアドバンスドな内容だから気にしなくていいと思う。
>>78 onpressつかうなら
addEventListener ( 'mouseDown', callback_handler).
で定義してください
とかいうエラーが出るんですが
mc.addEventListener( MouseEvent.MOUSE_DOWN, onPress )
これが定義ですよね?
>>139 あぁ、そうか普段Flex2だから忘れてた。
AS3で従来のonPressがなくなったせいで、
onPressって名前の関数作ると警告がでる
Flash CS3のいらん親切機能。
たんなる警告でエラーじゃないから無視してOK.
あと問題になってる部分は
public var onPress : Function
のほうかな。
ここで、FlashCS3は「onPressはねぇから、マウスおしてもなにもおきねぇぞ」って警告してくる。
↑のコードはちゃんと、addEventListenerで登録して、それをonPressに転送してるだけだから無問題。
そうだったんですか addEventListener( MouseEvent.MOUSE_DOWN, onPress ) これだと警告が出なかったので どういった訳で警告が出るのかよく分かりませんでした でも問題無く使えるんですね ありがとう
142 :
132 :2007/05/28(月) 00:00:26 ID:0sij7C04
>>134 イベントが引数にいるのか。じゃあ
__onEnterFrame = f;
↓
__onEnterFrame = function(e:Event):void { f(); }
もしくは別にメソッドを定義しておいてfを代入とか。
よくわからなくなってきたので、とりあえずapplyとメソッドとFunction型プロパティと無名関数の挙動について調べ直してくる。
>>142 そうそう、アプローチ的にはそんな感じに1枚かませる。
ただクロージャーをイベントリスナに登録すると
removeEventListenerできないから要注意。
AS3は以外と参照消し忘れでエラることが多い。
とりあえず、AS3何ぞや〜onPressやonEnterFrameを実装する まで一通り終わったわけだけど。 こんな感じで、わかりやすかったんだろうか? 他に知りたいとことかあったら適当に頼む。 なかったら一旦終わりってことで。
>>144 FLEXメインの人にとっては盲点かもだけど、Flashオーサリング環境で
ステージに置いたオブジェクトは、従来の方法に似たターゲットパスを
つかってもアクセスできるのでその辺もあっても良いかも。
スクリプト派でない人は、addChildするより手で置くことが多いだろうし。
スクリプトで設置した場合はmc.addChild(child);のあとにmc.child=child;
しないとだめだけどね。
>>145 あぁ、あるねその仕様。
Flash CS3でディフォルトの設定だと、ステージに myMC って名前のMCをおいた場合、
パブリッシュ時に自動的に、
public var myMC : MovieClip = 置いたMC
って宣言を追加して処理してくれるらしい。
ここら辺あまり使い込んでないので、詳しいことはいえないんだけど
MovieClipを拡張したMCをリンケージでライブラリと結びつけるとき、
リンケージ先のMCにそうやって置いた子MCがあった場合、
宣言のしかたにウンチャラかんちゃらみたいな、挙動があったはず。
俺はそこら辺メンドかったので、オフにしてた。
asファイルのクラス内でEnterFrameの処理を書いて、 ステージでaddChildすると自動的に動くMCを作った場合、 EnterFrameの中の条件で自身をremoveChildさせたかったのですが、 ArgumentError: Error #2025: 指定した DisplayObject は呼び出し元の子でなければなりません。 とエラーが出てしまいました。 よくわからんのですがaddChildしたステージからでしか消せないのでしょうか。 また、removeChildしても表示されていないだけで動き続けてるのでしょうか。
>>147 removeChildとremoveMovieClipの違いで、間違えやすいところだね。
as2のremoveMovieClipは自分を消してた。
as3のremoveChildは「自分の子供」を消す。
なので、 this.parent.removeChild( this )
みたいになるんじゃないかな。
あと今回はremoveChildしても表示リストから消えるだけなので、
どっかの変数内にMCを保存しておくと残るし、動作しつづける。
ちゃんと消したい場合は、
・イベントリスナを全部外す
・変数に自分が保持されてたらnullを代入
・removeChildで表示リストから外す
って処理が必要。
kill とか endとか言う関数作って、そこでまとめてやっちゃうといいと思う。
>>148 public function killed() {
this.removeEventListener(Event.ENTER_FRAME,onEnter);
this.parent.removeChild(this);
}
ありがとうございます!これでいけました。
不思議なことが起きた。 for (var i:Number = 0; i<20; i++) { var mc:MovieClip = new Untitled(400,300); this.addChild(mc); } これで20個のmcができた。 cs3って名前が重複してても作成されるの? もしくは、おれなんか勘違いしてる?
・・・
>>150 マジレスするとそれは正しい挙動。
AS2でも同じように動く。
var mc = 〜は
ローカル変数mcに一時的に 新しい Untitledインスタンスを代入してるだけ。
new Untitle は、 new Date とかと同じように何個でも作れる。
>>152 いや釣りじゃなかったんだけど、
おれ今までずっと勘違いしてた。というか知らなかった。
var mc:MovieClip = new Untitled(400,300);
this.addChild(mc);
var mc:MovieClip = new Untitled(400,300);
this.addChild(mc);
....
こういうことが行われてた訳じゃなくて、
for1回ごとに異なるローカル変数mcをステージのどっかに作成し続けてたんだ。
勉強になった。
>>153 うーんというか、そのコードでもちゃんと2つ生成されるよ。
as3のaddChildの概念が分かりにくいのかもしれない。
まず変数 mc と 親の表示リスト(children)があるわけね。
1: var mc に Untitled を作って放り込む。
mc = myUntitled 1
2: mc に入ってるUntitled を addChild する。
mc = myUntitled1
parent.表示リスト = [ myUNtitled1 ]
ここまでは予想通りだと思う。
3: var mc を初期化しなおして Untitled をまた作って代入。
ここで変数mcの中は新しい Untitled の方に入れ替わる。
けど古いUntitledは、既に表示リストの中に存在してる。
mc = myUntitled2
parent.表示リスト = [myUntitled1]
4;でまたmcをaddChildする
mc = myUntitled2
parent.表示リスト = [myUntitled1, myUntitled2]
となる。
参照と実体を混同してる mcの宣言位置が気持ち悪いが、 1つの参照に20個の異なる実体を一時的に入れてるだけ addChildの問題じゃない
なんとなくわかった。というかたぶん理解したと思う。 今はこのままなんとなくで誤魔化して色々書いてみてゆっくり完璧に理解することにする
なんだよこれalphaが0から1に変わってんじゃねーか。 2日も無駄に悩んじゃった
それFlexのActionScriptマニュアルに注意しろって はっきり書いてあった気がするが
//asファイル package { public class tracer { public function tracer() { trace(parent.num); } } } //SWFファイル var num:Number; var hoge:???? = new tracer; for (var i:Number = 0; i<50; i++) { num++; addChild(hoge); } クラスからswfの(ステージの?)変数を見たいクラスがあったとして こういう場合swfにはどういうスクリプトを書けばいいのでしょうか。 上記の場合tracerをインスタンス化?して、 for内で実行しなければいけないのは解るんですが、 tracerを入れる型も解らず、また実行させる方法も思いつきません。 グラフィックやMCを表示させる訳じゃないんですがaddChildであってますでしょうか? というか、それ以前にクラス内のtrace(parent.num)で 1119: Access of possibly undefined property parent through a reference with static type tracer.
>>160 の続き(書く前に送信しちゃいました)
とエラーが出てしまいます。
クラスからステージの、もしくは他のクラスの変数を見ることはできないんでしょうか。
質問多くてすいません。よろしくお願いします。
>>161 ちょっと今リアルが忙しいので昼すぎか夕方ぐらいに書く。
まず最初に答えだけ書くと、こんな感じかな。 ちょっと動作テストできてなくて申し訳ないが、 多少文法ミスはあれど動くとは思う。 package{ import flash.display.MovieClip public class Tracer(){ public function Tracer( ){ } public function trace( mc : MovieClip ){ trace( mc.num ) } } } var num : Number var tracer : Tracer = new Tracer() tracer.trace( mc ) たとえばこれで、Tracerクラスはtrace( mc ) で、 mcのnumを出力するようになる。
クラスから外部を見るときには、外部のデータを渡してあげる必用がある。 ↑の例では、Tracerクラスの関数traceでMCを渡すと、そのMCの変数numを出力するようにしてる。 ・クラス名は頭を大文字に ・型はクラスメイト同じ( 厳密には違うけど今はこれでOK ) ・new ってのは、設計図(クラス)を組み立てるって動作なので、 newするだけでは普通は何もおきない。 ・new クラス名() って、括弧をつける。 ・で設計図(クラス)から、実物(インスタンス)を作ったら、そのインスタンスを操作する。 この例では、hoge.traceって、クラスに作った関数を呼んでる。 ・クラスは自分の外を知らない。だから必用ならパラメーターで渡して教えてやる必用がある。 ・addChildは表示用の命令で、MovieClipやSpriteなんかにしか使えない。 そんなとこかな。 ここら辺は一問一答したほうがわかりやすいので、わからないとこ随時質問して。
とてもよくわかりました。とりあえず型はクラス名と同じにしておいて、 クラスの中のクラス名と同じ関数ってのは、 クラスをインスタンス化したときの初期化処理みたいなもので、 何度も実行するものじゃない。mc大量作成とかは除いて。 都度実行したいものがあるときはクラス内の関数なんですね。 で、クラス内の関数に必要な変数やMCなどの情報を渡す。 (だいたいあってますよね?) 本当にありがとうございました。これで計算するだけのクラスも作れそうです。
フォーカスが一番ややこしい気がしてきたぜ・・・
あげ
さげ
169 :
Now_loading...774KB :2007/08/20(月) 23:46:47 ID:hvC6Nz0n
Key.isDown(keyCode) と同様のものをAS3で書くにはどうしたらいい?
>>169 単純にキーイベントを取得したい場合は、
stageにaddEventListenerで、KeybordEventを登録する。
stage.addEventListener(KeyboardEvent.KEY_DOWN, trapKeys);
private function trapKeys(e:KeyboardEvent) {
trace( String(e.charCode) + "/" + String(e.keyCode));
}
isDownに該当するものはないみたいだから、KeyDownとKeyUpを両方登録して、
自分でフラグ立てて管理するのがいいんじゃないかな。
171 :
Now_loading...774KB :2007/08/24(金) 18:04:29 ID:ZvlHqLOz
isDownはセキュリティー上の問題があって削除されたっぽいね。 フォーカスが無くても取れたりするから危険だった。
質問スレで回答いただいた話なのですが、
解らないことがあり質問スレで長々と解説を頼むのも気が引けますので
こちらで教えてください。
ActionScript 誰かが物凄い勢いで解答するスレ 17
http://pc11.2ch.net/test/read.cgi/swf/1187394529/143-151 上記のスレの143-151の質問者なのですが、
なんでこれだけの追加で動くんでしょうか。
クラスからみると
stage textfield
となっているが、ステージからクラスでステージのチェックをすると、
stageーtextfield
となってstageが認識できるってことですか?
いまいちわからないです。
174 :
hoge ◆AXUssWRNqk :2007/08/30(木) 23:59:00 ID:0B4wXH89
AS3の特徴としてMovieClipやSpriteは、addChildで実際に表示するまで、 stage に乗っかっていない状態 = そいつのstageプロパティはnullなの。 だから一旦addChildした後で、 stage にキーイベントを追加すればOK。 ちょうど149がやってるところだね。 stageの仕様変更は、AS3の鬼門の1つだと思うのに、 どこにも説明ない話だからわかりにくいよね。 ちなみに何で最初はステージが空かっていうと、 AIRとかではマルチウィンドウとかもありえるので、ステージが1つとは限らないからです。多分。
すまん、日本語1.0でおk
176 :
173 :2007/08/31(金) 12:44:04 ID:hscyW3hW
>>174 ああ、意味が分かりました。
ステージでaddChildする前にすでにクラスの読み込みというか準備が終わってるから
クラスのstageはnullってことでエラーが出ると。
そのためにaddChild後にキーイベントを追加して対処ってことですか。
やっと解りました。ありがとうございます。
AS3の本って売ってます?ソフト買ったけど、付いてないじゃん。どうやって覚えればいいの?
>>177 AS3に詳しい人達がセミナーとかやってるからお布施する
>>177 AS3の本は既に売ってますよ。
ただ、AS3は言語を学ぶ事より、
クラス構造を憶える方が大変なので、
ヘルプを活用する方が手っ取り早いと思う。
>>179 どの本もヘルプ並のことしか書いてないんだよね
181 :
hoge ◆AXUssWRNqk :2007/09/01(土) 15:51:19 ID:3eomNBW+
高校卒業程度の英語力があるなら、 Foundation ActionScript Animation: Making Things Move! ActionScript3 CookBook Object Oriented Actionscript 3.0 Essential ActionScript3か、 という洋書をとりあえずオススメします。 とりあえず入門なら Object Oriented Actionscript 3.0 ゲームとか作るなら Foundation ActionScript Animation: Making Things Move! OOPやるなら Essential ActionScript3 か、 Object Oriented Actionscript 3.0 Foundation ActionScript Animation: Making Things Move! は現在、ボーンデジタルという会社で 日本語版を作成中らしいので、来年まで待てるならコレがオススメ。
しょうがないので8を覚えます。そのうちCS3も覚えれたら覚え・・ないだろな。 せっかく直前に買ってうpグレ版も手に入れたからCS3覚えようと思ったのにな。
AS3はそういう安易な気持ちで挑戦していいもんじゃないぜ
安易に挑戦も何も、詳しい本も付いてないもん、どうしようもねーじゃん。
AS1/2から始めなさい。 STEP1. AS1 or 2で、とりあえずスクリプトを書く場所と書き方を憶える STEP2. AS2で、外部asクラスの作成方法を憶える STEP3. 上で作ったモノをAS3に置き換える 言語は変われど、Flash上での扱い方は同じなので、 AS1/2からやりましょう。
学生とかではじめるなら AS3 からでいいんでね?
仕事でやるなら、AS1/2 もしばらく必要かもしらんが。。。
あと
>>181 のオススメ本は、英語力よりプログラムの知識のほうが重要と思ふ
難しい本は買って満足しちゃうヤツも多いから
最初は「ActionScript 3.0 入門ノート」の方がいいと思うがなぁ
>>186 その本は、ある程度プログラミングを知っている人向けだよね。
>>177 が
どの程度の技量を持っているか次第だけど、AS2から入った方いいよ。
addEventListenerに慣れたら1,2書きたくない
189 :
hoge ◆AXUssWRNqk :2007/09/02(日) 22:58:18 ID:UPBLxSJy
>>186 そう思います。
もし、
>>177 がまったくプログラムがわからない場合は、
下みたいな順路がいいんじゃないかと思う。
教えてアクションスクリプト
↓
なんかFlashでゲーム作る本適当に
↓
Essential ActionScript2 日本語版
↓
結城さんのJAVAのOOPの本
↓
AS3
すでにAS2できるなら
説明いっぱいあるの平気なら「ActionScript 3.0 入門ノート」、
とりあえずサンプルとコードで覚える派なら、タイトル忘れたけどAS3でゲーム作る本がいいと思う。
FlashLiteも暫くはPlayer7系列だし、 AS1/2で「Flashでのプログラミング手法」を学ぶのもいいと思うんだが。 ラフに作りながらのトライ&エラーがしやすいので、 初心者でも挫折しにくいと思うしさ。
177です。実は全くの初心者です。色々ありがとうございます。参考にさせて頂きます。 そんなにAS2とAS3って変わってるんですか?とりあえずAS2から気合入れて覚えていこう という気になってますけど、いずれAS3が標準になるんだったらAS3も覚えないといけないですね。
193 :
Now_loading...774KB :2007/09/03(月) 22:11:07 ID:xQtJM32N
>>181 の「Making Things Move!」はAS2版のもあるので、
AS2覚えてからAS3に移行したい人は、この本のAS2版から
始めるのもいいのでは?
ただし、この本は英語以上に数学(三角関数とか)の知識が
必要だと思う。
そもそも、AS3でやりたい事があるのかい? 趣味の為に憶えたいのであれば、 AS1/2から入る方が楽で理解しやすいと思うのだが。 AS3じゃ携帯用FLASH作れないし。
バイナリが扱える おかげで画像の保存が楽になった〜
AS3で、読み込んだ外部swfの中のムービークリップをいじる場合、どう記述したら良いのでしょうか? Loaderで読み込んで、外部swfを表示するとこまでは出来たのですが、 大元のswfに、読み込んだswfの中のムービークリップをコントロールするボタンを配置して、 読み込んだswfの中のムービークリップをいじりたいのですが、pathもどうなっているのかよく判らない始末ですorz 例えば 大元のswfに配置したボタンが push_btn 読み込んだswfの中のrootに置いてあるムービークリップが a_mc だった場合 push_btn.addEventListener(MouseEvent.CLICK, push); function push(event:MouseEvent):void { //ここにどう書けば良いのでしょうか? } もしくは、きちんとしたアクセス方法をご存じの方ヒントだけでも教えていただけないでしょうか。
198 :
197 :2007/09/10(月) 11:14:09 ID:3N5P+Dxs
自己解決しました。 addChild(loader);として読み込んだ場合、loader.content.a_mc.gotoAndPlay("start");等と Loader.contentプロパティというのを付けることでアクセス可能になりました。
199 :
Now_loading...774KB :2007/09/11(火) 16:26:35 ID:0YZcPph5
TextInputやTextAreaのプロパティでTextFieldがあるんですけど、 こいつに文字色設定とかしても、色変わってくれません。 どうすれば内部テキストの文字色かえられたりするか教えてください。
200 :
Now_loading...774KB :2007/09/11(火) 19:41:00 ID:0YZcPph5
199です。追加でこれも。 あるムービークリップをつくりそこにTextInputを置きました。 外部asでクラス定義してそのムービークリップにリンケージします。 で、newで生成します。 ここで問題が発生しました。コンストラクタ内でTextInputに文字を 設定しても表示されません。 これはどうしてなんでしょうか?仕様でしょうか。 あとScrollPaneとかも同様です。 もしかして静的配置したコンポーネントってコンストラクタの段階では まだアクセスが不能?
>>199 tiはTextInputインスタンス
var tf:TextFormat = new TextFormat();
tf.color = 0xff9900;
ti.text = "test";
ti.setStyle("textFormat",tf);
ちょい質問があります。 //メインタイムライン フレーム1 bullet1-1 = new Bullet1(ang,myX,myY); addChild(bullet1-1); //クラス Bullet1 (コンストラクタでENTER_FRAMEリスナーonEnterを登録。life = 60) function onEnter(event:Event) { life --; if(life == 0) { die(); } } function die() { removeEventListener(Event.ENTER_FRAME,onEnter); this.parent.removeChild(this); } この状態で、dieが呼ばれたその後に絶対 ---------------- TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at Bullet1/::onEnter() ---------------- このエラーが1回だけ出るんだが、リスナー関係で馬鹿やってるのかな・・・? ちゃんとリスナー消してからremoveChildしてるはずなんだけどなぁ・・・ 誰か助けてください><
if(life == 0) { die(); return; } すいません、これで表示されなくなりました。 お騒がせしました・・・。
何故か質問スレになってる不思議
CD-ROMでのプロジェクタ案件があった。 画像処理がメインだったので、Playerバージョン関係ないから初のAS3.0でやろうとしていたが、 途中で訳分からなくなったのでやめちった。
FlexSDKでflパッケージ使いたいのですが、うまく使えないです。 適当なスレ見つからなかったのでここで質問します。 やったこと書きます。 ・Flex2SDKインストールしました。 ・日本語パックいれました。 ・frameworks/libs/Fl_cpackage.swc を入れました。 ・実行環境は Flash9,0,47,0(デバッグできるやつ) コンパイルは通ります。 実行時エラーになります。 --- Error #1009: null のオブジェクト参照のプロパティま… package{ import fl.controls.TextArea; import flash.display.Sprite; public class Test01 extends Sprite{ public var ta:TextArea; public function Test01() { ta = new TextArea(); ta.text = "kore ha test" addChild(ta); }}} TextAreaの代わりにTextInputにすると実行時エラーは出ないが何も表示されない。。。 TextAreaの代わりにTextFieldにするとうまく表示できる。。。 全部スクリプトで書くとダメなんでしょうか。 だ、だれか助け
みんなAS3.0の開発環境ってどうしてるべ? 今俺はアニメーションを入れたいからFlash9で書き出しているけど Flashのエディタは酷いから、FDT3を入れて使ってみようとしている。 だけど、FDT3だとmxパッケージもflパッケージも使えないっぽいんだけど どうしたもんかな、という感じ。
meadowとかxyzzyでゴリゴリ記述
>>207 エディタか、FlexBuilderじゃね?
>>209 > Chapter 17 陰面消去と3D照明
↑ここらへん、ちょっと興味深い
213 :
Now_loading...774KB :2007/10/15(月) 22:02:32 ID:tfL4/3lB
Actionscript 3.0 Cookbook の邦訳はまだか?
>>212 えぇぇぇ、そんなのは1980年〜90年代の技術ではないか。
>>214 大学の頃ONYXでプログラミングしてたな。
216 :
Now_loading...774KB :2007/10/19(金) 21:06:18 ID:rVzNGLak
FLASHから離れて2年位経つんだけど久々にみたらなんだこれ 変えるにも程があるだろ だからあどべとくっ付くのはいやだったんだよ まあ覚えりゃいいんだけどめんどくせーっつうの
しかしまぁ、FLASH単体じゃなくてCreativeSuiteとして買うと 便利だとは思うんで、Adobeと合体したのはよかったかもしれん。
フォトショ や イラレ との連携が楽 オレも合体したのには賛成
あんたと合体してあげてもいいんだから感謝しなさい!!
一万年と〜二千年前からあ〜いして〜る〜♪
でもAS3はとっつきにくいからAS2のまま連携できてくれればよかった 覚える時間がもったいない
AS3もはやほとんどJavaじゃん
>>221 はAS2すら理解できてないに3000ウォン。
AS2もままならない新規参入者はAS3からはじめるべき?
作りたいものによる。 音楽にアニメのせるぐらいなら AS1 か AS2で十分。 バリバリ動くゲームやサイト作りたければ、将来的にはAS3やっといたほうがいいと思う。 ただプログラム初心者がAS3やると死亡すると思うので、AS2でいいんじゃないかな?
でも面倒は多いけどAS3のほうが難しいってわけでもないと思うんだ。 Wiiやらケータイやらをターゲットに入れるんならAS3じゃ駄目だけど。
flashLite3.0はAS2だからな
面倒がイヤだからFLASH始めたのにな
面倒がいやなら創作なんてやめたほうが幸せ
商用で長期メンテが求められるような開発とか、 大人数での連携が必要な開発では、AS3のメリットは大きいね。 それ以外ではAS1/2のラフさ、簡単さ、単純さのメリットの方が大きいと思うんだ。
231 :
224 :2007/10/25(木) 00:45:05 ID:KgbHXGW/
今大学一年の学生で将来的にWeb業界を志望してるんだけど、
最近のFlash周辺の技術の高度化にしり込みしてしまってる。
この先AS3とAS2とで住み分けができる訳もないだろうし。
>>230 の言うように最終的にはAS3で製作することを求められるんだろうけど、
現段階でAS3というのはとっつきが悪くて手が出ない感じ。
AS2である程度勉強してAS3へってのを考えてるけど
正直ある程度ってどの程度よって話。
どうなんだろう?
今のうちに無理してでもAS3に入るべき?
それともAS2である程度勉強してAS3へってのでいいの?
もしくはそれ以外の進行方法があればどうか教えてください。
長文スマソ
>>231 プログラムの基本が分かってりゃ違いなんてたいしたことないし、
ASができればJava、Javascript、PHPなら改造くらい出来るようになる。
PerlやASPでも基本文法を確認すれば考え方は同じだからこれも普通に使える。
大学1年ってことなら、4年後のASのバージョンなんてどうなってるかわからないし、
大穴で silverlightがシェアとってるかもしれないし。
用は基本。C/C++をマスターすれば何でも出来る。
>>231 毎日が勉強三昧の業界に行くのに
習得する言語を1つだけ選んでる時点でカス。
全部やれ
オレはFlashとかが好きでやってるから、覚えることは苦にならないな むしろ、分からない事があると調べずにはいられない どれから手をつければいいとか下らない質問してる暇があったら、気になるとこから手をつければいいのに
俺が言えることはただひとつ 「Web業界なんてやめとけ」
>とっつきが悪くて手が出ない とっつきが悪いくらいで知らない技術に手が出ない時点でヘタレ ドラゴンボールでたとえればヤムチャ ピッコロとかフリーザの相手にまるでならないのがオチ
237 :
231 :2007/10/25(木) 10:43:33 ID:7B7qaW8b
238 :
231 :2007/10/25(木) 10:44:12 ID:7B7qaW8b
sage忘れたスマソ。
上の人らはAS2もAS3もどっちもやれって言ってるんじゃないの?
240 :
Now_loading...774KB :2007/10/25(木) 17:00:20 ID:KAUMNhBw
質問させて下さい。 テキストエフェクトを選ぶと変数名を指定する事が出来ないのですが、 変数にして、テキストエフェクトする方法ってありますか?
241 :
Now_loading...774KB :2007/10/25(木) 17:03:23 ID:KAUMNhBw
240です。場所間違えたみたいです。失礼しました。
>>239 ん〜そうなのか?
AS2とAS3を両方同時に学習していくメリットってある?
>242 どっちもヤレって言ってる人は、 書式が違う部分は知っておけって事を言ってるんでしょ 結局、そのときの案件で使ってるほうを 一時的に得意になるだけじゃん 考え方は、JAVAでもAS2でも3でも学べるし
RIA開発系をやりたいなら「FlexBuilder2 + AS3」 デザイン系や携帯系をやりたいなら「FlashCS3 + AS2」を学んでから、AS3をやれ。 とにかく最新技術触りたいギークは「自分で考えろ」 現状でもFlash7以下の仕事は腐るほどある。
>>243 >>244 なるほど、、、。
ということはAS2が完全に淘汰されるのはかなり先、
もしくはそんなことはないのか?
ほぼ間違いなくデザイン系だからCS3でAS2&3だな。
場所にも寄るだろうけど、
新卒のデザイナーでWeb系の制作会社入る場合、
最低限求められるスキル、レベルってだいたいどんな感じなんでしょ?
>>245 新人に必要なスキル
言われたことを文句言わずにやる。
毎日夜遅くまで仕事でも泣かない。
Flashをさわったことがある。
>>246 人とコミュニケーションが取れる。
社会性がある。
一般的な常識を持っている。
大学3年生の頃にWebが登場した俺には理解できない話だな。
>>245 いま大学一年生なんでしょ?だったら勉強する時間はいっぱいあるんだから
さっさと自分が作りたいものを作り始めなよ。
自分のために使える時間が山ほどあるのにうだうだ迷ってるだけじゃ、
もったいないぞ。
>245 1年ならweb系じゃなくて生粋のデザイン事務所目指せ webに限定すると損するよ 上流工程にいるデザはweb限定なんてしない 電通いけ電通w
デザイナーなら博のがいいんじゃね
252 :
245 :2007/10/26(金) 02:28:58 ID:xLGTS7+W
>>246 >>247 あ、技術的なことは二の次なんすね。
その辺のスキルも磨きます。
>>249 一応今まではAS2を勉強してて
ちょっと最近の動向みて迷ったんで質問してみた。
おっしゃるとおりです。
>>250 >>251 教授に相談したら同じような事言われた。
yugop世代なのでやはりWebがやりたいってのがある。
広告系の学校なので学校で広告、デザインを、
で、独学でWebを勉強してる。
Webに絞る事によるデメリットってなんでしょ?
当然目標として電博は視野に入れてます。
Web系の仕事なんて最底辺ですよ。 なんかカッコイイ仕事とか夢見てるんなら醒めるチャンスだ。 まぁ最底辺からトップを目指すのも人生かもな。
AS2やってるんならそれで自分なりに満足できるレベルのものを 作れるようになるまでやった方がいいと思うけどね。 AS3覚えたからって突然すごいことができるようにはならないし、 AS2のクラスベースでしっかりコーディングできるようになっていれば 移行は比較的簡単にできる。
>>245 確実にいいとこ滑り込みたいなら、
FlashなりASなりの勉強ブログを書くことをオススメする。
Web系はブログがそのままポートフォリオになるし、
勉強のモチベーションが保てるし。
AS3でコーディングできるデザを目指すなら、
processingとか経由で勉強するのもいいと思う。
現状RIA系以外でAS3を実用しているのって、かなり希少だぜ? (メリットより生産性の低下&開発コストUPのデメリットが大きすぎる) 今後AS2との置き換えが進むかどうかは、 FlashPlayer側の進化にかかってるんじゃなかろうか? 少なくともFlashPlayer9程度の機能差なら、 AS2で十分だし、携帯系も暫くはAS2が主流だろう。 一部のAS職人が色々実験して、未来を走っているけど、 別に「習得必須科目」でも無いので、惑わされないようにね。 地道にFlash+AS1/2の勉強をして置く方が、 デザイナとしての未来はあるかと思いますよ。
確かに商用の場合、現状で仕様が9対応ってことはほとんどないからな。
マジか AS3のが書きやすいんだけど
AS3向きの案件か、慣れてるだけだろ
260 :
245 :2007/10/27(土) 03:54:37 ID:AkEHsuxh
>>253 そんなヒドイんすか?
チラホラこんな話を聞くけどどこの業界でも言われてるような範囲のことじゃないの?
クリエイティブ系の仕事は少なからずそういう面はあると思ってんだけどWebは特にって事?
>>255 勉強ブログはよさそう。
早速はじめてみる。
やっぱりProcessingは触ってみるべき?
難易度的にどうなんでしょ?
AS3 > Processing > AS2な感じ?
>>256 実際P3DとかByteArrayとかのサンプル見て萎えてた。
たしかに習得必須科目ではないと考えると少し冷静になれた。
やっぱり
>>254 のおっしゃるとおり段階を追って徐々にAS3へって方がいいかも。
なんかこんな具体的に相談乗ってもらえると思ってなかったので感激してます。
横から補足説明させてもらうと、この業界は変化が早い。 そりゃいまはFLASHでAS2だけれど、来年末にはMSのSilverLightが 主流になっているかもしれない。なので、 今すぐ短期間で身につける もしくは 共通項となる事を中心に勉強 するのがいいと思う。
262 :
Now_loading...774KB :2007/10/27(土) 09:48:28 ID:A1SFbem2
263 :
Now_loading...774KB :2007/10/27(土) 13:14:52 ID:/RvQty7p
SilverLightは当分ないwwwww
けどAS2でもAS3でも、クラスとかOOPの概念はある程度勉強したほうがいいと思う。
そこら辺理解すれば言語仕様覚えるだけで他の言語への引越しできるし。
>>260 はプログラミング言語覚えるっていよりも、
コードでキレイなビジュアルや気持ちいい動きを作ることに集中したほうがいいんじゃないかな。
processingは起動して1分でビジュアル部分に着手できるのがオススメ。
AS3は思うような絵を描くまでにスゴイ時間かかるから、
デザ系が一番最初にAS3に突入するとまず死ぬんじゃないかな。
>>263 激しく同意
AS3はまだ駆け出しだから情報も少ないし、Java辺りから手をつけたほうがいいかも
AS2はオブジェクト指向が中途半端だから暗黒面に陥ると危ない
>>264 AS2が仕様の暗黒面なら、AS3は実装の暗黒面だぜ
AS2を使いこなすにはベースとなるAS1も理解しなければならない
AS3を使いこなすにはメモリ管理やタイムラインの挙動を把握しなければならない
俺の感覚だとどっちもどっちだ
まあプログラミングの基本を覚える程度ならどっちでもいいんじゃね
どっちみちWeb系に進むならいずれはAjaxというダークマターの塊を通るだろうし
AS2.0ってオーサリング以外にAS1.0となんの違いがあるの?
268 :
Now_loading...774KB :2007/10/28(日) 18:27:00 ID:pAQ6NP+x
Flash CS3 を使ってActionScript3.0 を書いているんですが、外部クラス(*.as)を作る際、flash.events.MouseEventが急に呼び出せなくなりました。 原因がわかる方、教えていだければ非常に助かります。
269 :
Now_loading...774KB :2007/10/29(月) 00:36:08 ID:FBOJuiif
>268 import文が入っていないとか
アンダーバーってださくね?
プレステの方がおもしれーよなー!!
ドリキャスwww
274 :
Now_loading...774KB :2007/11/18(日) 14:22:06 ID:0ruxM8N/
perlプログラマだけどAS3ってクラス設計(アクセサ作製)意識しながらやるperlに激似なので 親和性高ス。 おもろいんだけど デザインの基本がわかんにゃいというダークサイドから誰かきますたよっと。
275 :
274 :2007/11/18(日) 14:31:33 ID:0ruxM8N/
ごめん誇大表現すぐるな。 だからといってみんなperlに走っちゃだめだよ。 考え方ナ。考え方。
てことは、perlプログラマはjavaもできるのか?
ダイナミッククラスはperlっぽい気もする。 JavaScriptっぽいというか。 Flexだとほとんどstrictクラスで扱うから どうしてもJavaっぽくなるかな。
>>276 やっぱすみわけがあるからみんなってわけじゃないと思うが
基本perl使ってるやつは多言語使いの経歴が多いし
(Lisp使いや、特にOO志向とされる、ruby使いはもっとだと思うが)
名前空間やデータ構造を常に意識してるのでJavaもいけるんじゃね?
Perl6に移行するともっと、OO志向になるっぽいし。
Lisp使いがJavaとか果てしなく嫌うと思うけどwww。
あんま想像できないな。LisperがJavaとか。
一体どうしたんだYO!!!。と声を掛けたくなる。
すれ違いスマソ。
基本が分かってりゃ、リファレンス目を通せばどんな言語でも修正くらいならすぐ出来るよ。
>>274 デザインはそれなりに学問として体系化してるから、
ロジックを学べば、アーティスティックなものはともかく普通にカッコイイものは作れるよ。
むしろプログラマとデザインは親和性が高いと思う今日この頃。
282 :
Now_loading...774KB :2007/11/30(金) 09:44:26 ID:6naYsN7Y
AS3楽しい〜Javaあがりの自分にはぴったしです。 ゲーム作って遊んでます。 でも、普通にFlashをAS1〜2環境で作ってた人が これを身に着けるって至難の業だわ。 スクリプトとは名ばかりのプログラミング言語だし。
AS2上がりだけどAS3は感動したよ オブジェクト指向にもいろいろ技法があって名前までついてるなんてw 格闘ゲーのコンボつくってるみたいで楽しい でも難しいね・・・
今までAS毛嫌いして参考書買ったまま放置してたんだ。 でも、学校でC,JAVAと習ってから参考書見直したらすらすら頭に入ってきたの。 これは面白そう。 AS3始めてみるかな。 @情報系学生
JAVA続けたほうが金になるんじゃん
金よりか楽しめればいいと思ってます
288 :
Now_loading...774KB :2007/12/05(水) 21:42:19 ID:vRmPqJEB
AS3.0って、ガリガリにロジカルに組まなくても、既存のAS2とトウィーンで組まれたサイトを 3.0に組み直すだけでも速度改善するかな?
>>288 AS2が原因で遅くなってたところはな。
290 :
Now_loading...774KB :2007/12/05(水) 22:18:59 ID:vRmPqJEB
>>290 逆にいまなにが遅いと感じられているんだい?
292 :
Now_loading...774KB :2007/12/22(土) 20:47:56 ID:FQzdTXdi
3.0を始めたばかりですがFLASHCS3等持ってなく、今の所flex2SDK&FlashDevelopでなんとか3.0を扱う環境はできました そしてPapervision3Dを入れてみようと思いPapervision3D_1_5.zipは手に入れたのですが・・・ このファイルをどう扱えば良いのでしょうか、ご存知の方おられましたらご教授下さい
>>292 以下、FlashDevelop3 beta5の場合。
メニューのToolsから、Global Classpathsを選択。
AS2の所をAS3にして、Add Classpathをクリック。
Papervision3Dのzipを解凍して出来たフォルダ内のsrcフォルダを選択する。
これでOK。
>>293 レスありがとうございました!ググッてもFlashdevelopでの実装解説は見つからなかったのでとても助かります
まだ導入はしてみてませんがこれからやってみます!
295 :
292 :2007/12/23(日) 20:04:41 ID:AXf1R8aT
>>293 すみません292で質問させてもらった者ですが、GlobalClasspathsでsrcフォルダを指定しましたが読み込んでくれない?ようです
ttp://feb19.jp/blog/archives/000119.php こちらのソースを参考にさせて頂いてBasicDocument.asという形でコンパイルしたのですが
col: 21 Error: 型が見つからないか、コンパイル時定数ではありません : Scene3D。
private var scene:Scene3D;
col: 24 Error: 型が見つからないか、コンパイル時定数ではありません : Viewport3D。
private var viewport:Viewport3D;
col: 22 Error: 型が見つからないか、コンパイル時定数ではありません : Camera3D。
private var camera:Camera3D;
col: 24 Error: 型が見つからないか、コンパイル時定数ではありません : BasicRenderEngine。
こういったエラーがズラッと表示されました、使用しているのはbeta5です、このエラーの原因等わかりませんでしょうか・・・
296 :
293 :2007/12/23(日) 20:53:24 ID:3RNxmbOB
>>295 参考にしてるソースはPapervision3Dのバージョン2,0のようですね。
>>296 無知ですみませんでした;
ttp://www.nilab.info/zurazure2/000610.html こちらの3.0仕様の方を参考にやってみたところ
col 45 Error: 型が見つからないか、コンパイル時定数ではありません : DisplayObject3D。
private function createWireframePlane():DisplayObject3D {
col: 41 Error: 型が見つからないか、コンパイル時定数ではありません : DisplayObject3D。
private function createColorPlane():DisplayObject3D {
とDisplayObject3Dの7箇所だけの指摘で収まり、srcのasは読み込まれた?ようでした
298 :
293 :2007/12/23(日) 21:56:40 ID:3RNxmbOB
>>297 きちんとコンパイルできますよ?
もしかしてメニューのFileからAS3 Documentを作成してますか?
メニューのProjectからNew Projectを選択して、ActionScript3のDefault Projectを作成する。
ウィンドウの右側にあるProjectタブからMain.asをHelloWorld3D.asにrenameした後に開いて、
ソースコードをコピペすれば(F5キーで)コンパイルできますよ。
299 :
Now_loading...774KB :2008/01/02(水) 19:36:40 ID:ghbdIQ41
うーんわからねえ… AS3ではAS2の _target に相当するプロパティってないの? 複雑な階層のムービークリップのターゲットを調べる時困るお… 先生教えて
ありがとう先生 (つД`) がんがって覚える
302 :
Now_loading...774KB :2008/01/07(月) 16:50:27 ID:ztDfzXik
ちょっとこの二、三日力を入れてみたんだが なんつううか、プログラミングというよりブロックに近くね? 予約語?の半端なさ! たとえば addEventListener drawRec TextFieldAutoSizeとかとかとか。 なんというか、プログラミングというよりフラッシュの構造に詳しくないとだめかもわからん。
それがオブジェクト指向プログラミングというものだよ。 ていうか、それらは予約語じゃない。 継承ぐらい理解せい。
304 :
Now_loading...774KB :2008/01/08(火) 00:18:11 ID:2KUzK7MD
やりたい事> サウンド(wav等)の入った数種類のMCをランダムで再生。その際各サウンドMCが重なって再生されるのを防ぎたい AS2の場合はメインタイムラインにフラグを設定し 再生時にフラグtrue trueの間はすべてのサウンドMCの再生不可 各サウンドMCのラストフレームに_parent._parent〜flg=false; で解除って感じでした AS3の場合はどうするのがベストなんですか先生おしえて!
先生どうもです! なるほどsoundCompleteでイベントリスナー登録ですか 一つ利口になりました ところでサウンドファイル(BGM、効果音、音声等)が 例えば100個ある場合も同じ方法でやります? オブジェクトを配列にしてfor〜で登録 って考え方でいいんですよね?
イベントリスナの登録をforとかで100個登録するってことだよな? それでOK。
って、自分で言っておいてあれだけど、やっぱりよくない 再生するときにそのサウンドにsoundCompleteのイベントハンドラをaddEventListenerして soundComplete発生したらイベントハンドラはremoveEventListerしたほうがよい どうさサウンドは1曲しか再生しないのだし
309 :
Now_loading...774KB :2008/01/08(火) 15:35:23 ID:2KUzK7MD
昨日の続き 「ラベルは単純な識別子でなければなりません」 というエラーが出ました 配列での登録は 無理なのでしょうかOTZ 教えて先生っ var hSound :Array = new Array(); hSound[ 1 ] :Sound = new MySound01();//エラー hSound[ 2 ] :Sound = new MySound02();//エラー hSound[ 3 ] :Sound = new MySound03();//エラー hSound[ 4 ] :Sound = new MySound04();//エラー hSound[ 5 ] :Sound = new MySound05();//エラー var channel :Array = new Array(); for ( var i=1; i<=5; i++ ){ channel[ i ] : SoundChannel = hSound[ i ].play(); channel[ i ].addEventListener( Event.SOUND_COMPLETE, SoundCompFunc ); }
>>308 >removeEventListerしたほうがよい
ヘルプのサンプルにもremoveメソッドが定義されてましたが これはremoveしないと
使用メモリが増えて処理が遅くなるという認識でおk?
>>309 配列の要素にいちいち型を指定してやる必要はない
hSound[1] = new MySound01();
でいい
あと、わざとかもしれないけど、配列の最初は0だから、普通は
for ( var i:int=0; i<5; i++ ){
channel[ i ] = hSound[ i ].play();
channel[ i ].addEventListener( Event.SOUND_COMPLETE, SoundCompFunc );
}
って書くと思う
>>310 オレもそんなに詳しくはないけど、そういう認識でいいと思う
先生どもです サウンドの重複再生阻止でこのように完成しました サウンドの終了を検知するために 再生時にチャンネルとリスナーをセットで実行してます この場合でもremoveEventListenerは必要なんでしょうか? function HsoundPro() :void{//サウンド処理 ※何回も頻繁に呼び出される if ( soundFlg ) return;//実行中ならキャンセル soundFlg=true;//サウンドフラグ var r :int = Math.floor( Math.random()*5 )+1; var channel :SoundChannel = hSound[ r ].play();//サウンド再生 channel.addEventListener( Event.SOUND_COMPLETE, soundCompFunc );//リスナー登録 } function soundCompFunc( event :Event ){//サウンド終了時処理 soundFlg=false;//フラグ 解除 }
一応それでも動くと思うけど、removeしたほうがメモリ的にいいと思う soudCmpFunc内に SoundChannel(currentTarget).removeEventListener(Event.SOUND_COMPLETE, soundCompFunc); を付け足せばよいのだし
了解っす!
315 :
Now_loading...774KB :2008/01/09(水) 01:45:40 ID:s65kpaLe
お前ら頭いいな 使いこなせなくて2.0で諦めたよ。
RPGだと思ってがんばるんだ 1日10時間とか平気でゲームしちゃうだろ?
予備知識が必要なRPGなんて誰もやりませんよ… 面白いと思えればいいのに
ネガ思考ワロス
319 :
Now_loading...774KB :2008/01/09(水) 17:29:54 ID:92PM27GR
助けて先生! スタートボタン作ろうとしてるんだけどnewしただけでエラーでたorz ヘルプのサンプルコピペしてもエラー出る なんで? var startB :Button = new Button();
AS3にButtonクラスはない。SimpleButtonクラスならあるが。 自分でそういうクラス作ったとかなら、importし忘れとか。
>>319 FlashCS3ならライブラリにButtonコンポーネント入って無いんじゃない?
ステージ上にいったんドラッグ&ドロップして[Delete]で消せばおk
ButtonクラスてのはAS3のコンポーネント? コンポーネント用の何かを用意しておかなきゃダメって事か… SimpleButtonクラス 試してみましたがさっぱりわかりません ステージに btnMC を配置後 以下の全部エラー var btnMC:SimpleButton = new SimpleButton(); btnMC:SimpleButton = new SimpleButton(); startB:SimpleButton = new SimpleButton( btnMC ); だいたいヘルプがクソすぎる! なんでサンプルが動的作成のしか載ってないんだ なんでボタン1個作るのにこんなに大変なんだ アフォか!
>>322 FlashのCS3でタイムラインに書いてる?
だったら既にステージ上に「btnMC」って名前のインスタンスがあるならそれはもう
既にnewしてaddChildしてnameを設定しているって事。いきなりボタンとして使えるよ。
そのまんまイベント処理とか書けばおk
失礼! 配置したら直接addEventListenerで登録できた しかしこれ覚えるのに骨がおれるぜ。。。
動的作成したいなら、 1.ステージになんか書く 2.[F8]でシンボル化→ボタン 3.ステージからそれ消す 4.ライブラリでリンケージ設定→クラス名「HogeButton」とか 5.newしてaddchildしてaddEventListener var btn:SimpleButton = new HogeButton();//ここは自分で付けたクラス名 btn.addEventListener(MouseEvent.CLICK,clickFunc); function clickFunc(e:MouseEvent) {trace(e.target.name + "が押されました");} addChild(btn); こんな
>>325 先生どうもです オレ的AS3マニュアルtxtにバッチリコピペさせていただきました
327 :
Now_loading...774KB :2008/01/09(水) 23:43:47 ID:M5UThB/t
それにしても、今回のAS3としてのモーションコピー機能は凄いな… はっきり言ってこれだけに金払ってでもオツリくるくらいだよな… モーションの再利用がここまで簡単に出来るとは…
328 :
Now_loading...774KB :2008/01/10(木) 00:36:12 ID:ELazuCYm
FlashCS3の話だけど、トゥイーンをAS3に変換して、 任意のMCやSpriteにAS3変換した時に設定したインスタンス名付けるだけで、 即座に同じモーションを付ける事が出来る
330 :
Now_loading...774KB :2008/01/10(木) 15:25:21 ID:CHoVRpxs
ステージに手で配置したオブジェクトの参照を ’関数内’で定義してあるのに オブジェクトを 同フレーム、もしくはそれ以前に配置してないとコンパイルエラーが出るのが納得できません 何ですなおにundefinedを返さないんだ… 回避する方法なないのでしょうか? おしえて先生っ
すいません ’同フレームに配置しないとコンパイルエラー’というのは勘違いでした 説明が難しいんですが… 1回だけ TypeError: Error #1009: null が出るのです サイトにうpした場合 別ウィンドウで警告が出てとてもカッコ悪いっす メインタイムラインの構成は 1f〜9f 変数、関数等を定義 10f スタート画面 20f ゲーム(プレイ)画面 30f ゲームエンド画面 こんな感じでして 主なオブジェクトは20fに配置しております で 10fから20fへの移行時に一瞬だけオブジェクトの参照できないらしいのです …続く
…続き メイン処理は10fで エンターフレームで監視 function mainPro( event :Event ):void{//メイン処理 var Mcf :int = this.currentFrame;//メインタイムラインのフレーム検出 switch( Mcf ){ case 10://スタート画面処理 //スタートボタン押したら this.gotoAndStop( 20 ); break; case 20://ゲーム処理 //各オブジェクト参照 オブジェクトは20fに配置 break; } } 再生ヘッドが20fに行ってからオブジェクトの参照をしているのに なぜエラーが出るんでしょう?
関数定義した時点で関数内にあるオブジェクトが ステージになければ参照できないのは当たり前じゃないの? 無いものねだりなんだから。 ひょっとして、質問の内容と違うかもしれないけど。 それと情報を小分けに出して質問するのはやめたほうがいいよ、意味が通じにくい
あらかじめ画面に配置したテキストフィールドを認識させる方法を教えてくださいまし package{ import flash.utils.getTimer; import flash.text.TextField; public class FPSpro extends TextField {//FPS計測クラス private static var count :int; private static var old_timer :int; public function FPSpro(){// コンストラクターを定義 count=0; oldTtimer=0; } public function counting() :void{//カウントメソッド count += 1;// 描画回数カウント if ( getTimer() - oldTimer >= 1000 ) {// 1秒経過していれば fpsText.text= count+"fps"; oldTimer = getTimer(); count = 0; fpsText.text= count+"fps";//エラー 変数 fpsText は定義されていません。 } } } }
335 :
Now_loading...774KB :2008/01/16(水) 15:06:06 ID:0dKyfXHc
続き メインタイムラインで var fps :FPSpro = new FPSpro(); 毎フレーム毎に fps.counting();//メソッド実行 サンプルコード探してますが見つかりません ヘルプのはすべて動的に作成したテキストフィールドによる例です
336 :
Now_loading...774KB :2008/01/16(水) 17:49:41 ID:0dKyfXHc
package{//ヘルプに載ってるサンプル import flash.display.Sprite; import flash.text.*; class TextWithImage { private var myTextBox:TextField = new TextField(); private var myText:String = "Hello World"; public function TextWithImage(){ addChild( myTextBox );//エラー1180: 未定義である可能性が高いメソッド addChild の呼び出しです。 myTextBox.text = myText; } } } var tx :TextWithImage = new TextWithImage();//メインタイムラインに記述 な ん で エ ラ ー で る の ?
>>336 addChildでこけるんなら
class TextWithImage extends Splite
なんじゃね?
ああ、SpliteでなくSpriteだ。すまんすまん
>>337 ありがとうございますできました!
画面内に配置したダイナミックテキストへのアクセスの仕方を教えて下さい
今日はそれができたら。。。寝ます
>>339 ドキュメントクラスなら、ステージのインスタンスを自動宣言してれば
そのままインスタンス名でアクセスできんじゃね?
自動宣言切ってあるならvar テキストフィールド名で
ドキュメントクラスじゃないなら、よくわからんけど
addChildしたあとにroot.テキストフィールド名でいけんじゃね?
ありがとうございます ドキュメントクラスではないです 色々試しましたがすべてだめでした メインタイムラインにインスタンス名 txt というダイナミックテキスト配置 package{ import flash.display.Sprite; import flash.text.*; public class TextWithImage extends Sprite { public function TextWithImage(){ addChild( txt );//エラー addChild( stage.txt );//エラー addChild( root.txt );//エラー addChild( stage.root.txt );//エラー addChild( stage.txt.root );//エラー txt.text="test"; } } } メインタイムラインで var tx :TextWithImage = new TextWithImage(); addChild( tx );
できました! txtを引数で渡し コンストラクタでTextFieldとして受け アクセス可能になりました 色々ありがとうございました var tx :TextWithImage = new TextWithImage( txt );
343 :
Now_loading...774KB :2008/01/19(土) 12:01:28 ID:DLbcRtxq
だめだ! わからねえ… 下のサンプルはヘルプのStageクラスのなんだけどドキュメントクラスでは動作するのに newで呼び出したら stageが未定義になっちまう newで動作させる方法を教えて先生っ package{ import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; public class StageExample extends Sprite { public function StageExample() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.addEventListener(Event.ACTIVATE, activateHandler); stage.addEventListener(Event.RESIZE, resizeHandler); } private function activateHandler(event:Event):void { trace("activateHandler: " + event); } private function resizeHandler(event:Event):void { trace("resizeHandler: " + event); trace("stageWidth: " + stage.stageWidth + " stageHeight: " + stage.stageHeight); } } }
>>343 stageプロパティは、表示リストに追加されるまではnullだから動かないんじゃね?
public function StageExample(_stage) {
_stage.scaleMode = StageScaleMode.NO_SCALE;
みたいにして、ドキュメントクラスかタイムラインから
new StageExample(stage)
とかでいけんじゃね?
できましたあああ! ありがd先生! メインタイムラインの this[object MainTimeline](AS2の_root) と stage[object Stage] の違いがわからんす… stageはオブジェクトの表示用だとすると thisはただの階層を表してるって解釈なのかな?
>>345 たぶん表示リストの仕組みで混乱してるんじゃね?
表示リストの最上位がstage(Stageクラスのインスタンス)で、
その下にFlashCS3で、ドキュメントクラスを使わない場合ならroot1(MainTimelineクラスのインスタンス)、
ドキュメントクラスを使ってるならドキュメントクラスが繋がってる。
root1ってのが、いわゆる「メインのタイムライン」
つまり、なんもせんでも、コンパイルすれば
stage-root1 か stage-ドキュメントクラスのインスタンス
という表示リストができる。
stgaeとroot1(もしくはドキュメントクラスのインスタンス)は別のものね。
で、thisは何かっていうと、root1でthisと書けばroot1を指す。
stageプロパティは表示リストの先頭のStageクラスのインスタンスを指す。
あとrootは_rootと意味がちょっと違うので注意。ヘルプ読んで。 thisもAS3.0だとあんま使う意味無いから、忘れた方がいいかも。 AS2.0だとイベントハンドラがらみでthisつかわないとイベントをハンドルしたボタンとかの参照 掴めなかったんだけど、AS3.0だったらイベントオブジェクトでできるし、逆にthisだとできない場合もある。 これは関数のスコープって奴が「バインドメソッド」っつー仕組みで固定されるからなんだけど、 そこを最初にちゃんと意識しておかないと、AS2.0からの移行組の人はわけわからんくなるんじゃないかな。 こんな感じ。AS2.0風というか、関数型言語風にthis使いたい場合は、関数の作り方自体をちょっと変えないとうまくない。 function f1() { trace(name,this.name);} //静的関数はthis固定 var f2 = function(){trace(name,this.name);}; //匿名関数を捕まえておいたものはthisはまあ変えられるっちゃ変えられる var o = {name:"hoge"}; f1.call(o); f2.call(o);
>>346 俺もステージとルートの構造がよくわからなかったんだが
スポンジが水を吸うように理解できた。
ActionScript 3.0 入門ノートよりぜんぜんわかりやすい解説乙
こんばんは、質問させてください。 以下のようにTextFieldクラスを作成してサイズを変更してステージに登録しています。 TextTest = new TextField(); TextTest.text = ""; TextTest.setTextFormat( _TextFormat ); // Size=24 stage.addChild( TextTest ); この処理でステージに表示する時は問題無いのですが この後このテキストに TextTest.text = "ABC"; というようにテキストを設定すると 何故かテキストのフォーマットがデフォルト(Size:12)に戻ってしまいます。 ステージに追加した後にテキストを変える時は フォーマットを維持するように何かプロパティ等設定する必要があるのでしょうか?
351 :
349 :2008/01/22(火) 19:23:41 ID:yglFctA9
>>350 ありがとうございました。
setTextFormatと混同していましたorz
コリン・ムックってけっこうなイケメンなのな。 ピザデブのおっさんかと思ってた。
354 :
Now_loading...774KB :2008/01/24(木) 01:12:32 ID:NFQbxhRU
コリン・ムックもそうだけど、 グラント・スキナーが超イケメンだぜ。
355 :
Now_loading...774KB :2008/01/30(水) 21:31:12 ID:XfdON3JJ
今2.0を勉強中で後々3.0も勉強を始める予定ですが 現在2.0で勉強しているのがclassについてで、3.0ではclassは構造の基礎のような扱いのように見えましたが このまま2.0でclassの扱いの知識を深めた方が3.0でも役に立ちますか? それとも3.0やるんだったらさっさと3.0の書籍でも買ってそっちに向いた方が良いのでしょうか・・・?
356 :
Now_loading...774KB :2008/01/30(水) 22:43:50 ID:ZMPs+jUL
>>355 クラスとイベントディスパッチャーを理解してるなら、AS3に移行してOK
>>355 無駄になる知識なんてそうそう無いけど
3.0 のために 2.0 を勉強する必要はないと思うよ
やりたい方を勉強したらいいがな
>>356 レスありがとうございます
イベントディスパッチャーについては初耳でした、調べてみます
クラスについてはまだ本当に弄り出した程度で、
スクリプトをほぼ全てタイムライン上に書き、その中の簡単な処理(アルファ増減、MCの移動等)の部分を
処理対象MCや必要な変数を引数としてクラスに送り処理している程度です
やはり理想としてはOOP?と言うのかネットのソースで見た様な
タイムライン側ASにはメインのクラスを呼び出すだけ、後のスクリプト処理の流れはメインクラス内で各種処理クラスを呼ぶ形でクラス内で全て完結させる
くらいにまで使いこなせる位になった方がいいでしょうか
>>355 個人的にはとりあえずキリのいい所で3.0に移行をオススメ
自分も前に
>>355 とほぼ同じようなアプローチを考えて2.0やってたんだけど、
3.0の基礎を覚えて、それから2.0で書かれたサンプルなんかを自分で3.0に書き直したりして、
2.0と3.0の違いみたいを考えながら3.0を学んでいった方が
結局自分にとっては2.0と3.0の深い理解に繋がった気がした、参考までに…
「Essential Actionscript 3.0」の 日本訳書が今年の春〜夏に出るそうじゃないか!
361 :
355 :2008/01/30(水) 23:29:15 ID:XfdON3JJ
>>357 3.0でしかできないコレをしたい!というものはまだ無くネットのサンプル等見ながら漠然とした興味がある程度で
後々使いこなせるようになればいいなと考えています
>>359 自分も2.0始めた時には完成されたソースの単語をリファレンス本等で調べて覚えて行ったという流れなので
比較しながら覚えて行くというのはやり易いかもしれません、参考にさせて頂きます
AC対戦動画で死闘を繰り広げる拳士達を横目に 技でねぇレバー入れ通常技暴発でコンボもまともに決められないこの力量こそ 俺が正真正銘のモヒカンたる所以なのか ヒャッハーミスだー
364 :
Now_loading...774KB :2008/01/31(木) 01:11:23 ID:WfqL9CH5
ヒャッハー
>>360 > 「Essential Actionscript 3.0」の
> 日本訳書が今年の春〜夏に出るそうじゃないか!
>
マジですか!?
先週買っちゃったよ・・・。まぁ、いいけどさ。
Essential Actionscript 3.0 ってそんなにいいのか どんな所がいいの?
Essential ActionScript3.0読んだけど、APIの概要と使い方がきちんと載ってたのが良かったよ。 文法的なところはJavaなどを使用した経験がある人には簡単だし、マニュアルにも書いてあるけど APIの事を体系的に述べた本って他にあんまりない気がする。でもAPIリファレンスみながら色々作って れば、こ〜使うんだなって大体分かってくるからどの言語も、どうしても読まなきゃいけないものとか そういう事はないだろうけど。
368 :
Now_loading...774KB :2008/01/31(木) 12:28:56 ID:3jtleRib
これからAS3を勉強しようと思います。AS2も8ではモーショントゥイーンアニメ中心で、まだ初心者でした。 機材はFLASH8しか持っておらず、Free Flex 2 SDKを入れました。 関連書籍を探してみて、各種ブログの評判を見て 「Adobe Flash CS3 詳細! ActionScript 3.0 入門ノート」 の購入を考えているのですが、これはCS3を持っていないと扱えないタイプなのでしょうか。 FLASH8でも主に、ツール描画や画像を読み込んでムービークリップを用意して、必要な時簡単なASをちょこちょこと書いていた程度なので、 ムービークリップ用意&配置とかの全ての作業を、完全にASで作っていく方法にはかなり不安も感じていますが。
>>366 良いというか、日本語の本がウンコしか無い
>>368 あれはFlashCS3限定で、しかもAS2.0を知っていないと辛い。
差分本と言った感じ。それでもあれしか無いのがウンコ。
flexで1からやるなら、少し方向が偏るけど「ActionScript3.0アニメーション」
あたりを読んだ方が整理がつくかもしれない。ただ高い。
>>370 他の関連書籍も見て価格的にもいいかなと思っていましたが、厳しそうですね。
今私が持っている8書籍のような、最初にツールで矩形を描いて&絵を置いて、
必要な素材を配置&設定してから、押した処理とか移動させるAS3を書き込んで…といった感じでしょうか
今の所はまずmcを貼り付けるとか、2.0をしっかり勉強した方が良さそうですね。
>>368 それからタイムライン使ったスタイルに慣れてるんだったら、
「FlashCS3ゲーム制作ガイド」というのもある。モアイ回しというゲーム作った人の本。
ただこれも問題点が2つあって、まず、CS3が無いと試すことはできない。
もうひとつは、このスタイルで開発している人は結構いるんだけど、web上であまり情報が無い。
このスタイルだと、flexとか使ってる人と話が通じにくいというのも難点。
>>371 知ってると良い評価になるんだと思う。個人的には悪くないと思ってた。
ただ、1から始めるには少しバラバラな書き方なのが難。
俺も初心者のツレに良かれと思って紹介したら、突き返された。
Flashで2.0から3.0に移行するときには、
>必要な素材を配置&設定してから
という操作が、AS3.0だと、どういう意味になるのかというのを意識さえできれば、
あとはそんなには問題ないと思う。
ただ、そこが問題。
>>371 自分も最近AS2.0から引っ越してきた口です。
素人意見ですが、イベント定義の方法とか今までのattachMovieがaddChildになった事
extends MovieClipしちゃえば今までのMCの中の処理と大差ない事
AS2.0でこうやってたのはAS3.0ではこうなんだ、あたりから理解していくと良かったよ。
感覚としては今まであんまり意識してなかった型とかスコープを
しっかり意識するようになるだけかなと
自分はむしろ3.0でスコープを明確に分けやすくなって意識することが減ったけどなぁ
最近、C++やJavaをいじってることが多くて、ようやくAS2からAS3への移行を開始しました。 抽象クラスがなかったり、オーバーロードがなかったり、 せっかく仕様を一新した割りに、微妙に糞仕様が残ってますね。
抽象クラスないけどインタフェースあるから、そっち使うんじゃない。 オーバーロードは method(string:String=null)みたいにして呼び出して if (string) { trace(string); } みたいにして対処すればいいんじゃない
>>377 いや、それは分かるけど、標準仕様として実装されてるのとは全然違うでしょ。
わざわざ実装しなかったということは、
もしかして、ECMAScriptの言語仕様がそうなってるのかな?
ぶっちゃけJavaに近づいたらしいから、覚えるの楽だわ〜と余裕ぶっこいてたら、
予想以上にJavaと違う仕様もわんさか組み込まれてて、びびった。
Javaに近づいたなどはただのギャグですよ。
380 :
Now_loading...774KB :2008/02/01(金) 10:06:48 ID:iFiHXrS1
管理しやすい構造のサイト作るなら確実AS3.0だろね。 いやがおうにもそういう仕組みになっちゃうし。 手軽さはないけど、スクリプトの一元管理という意味では精神衛生上良いよね。 日本語の本ではActionScript3.0アニメーションという本がオススメ スクリプトによるアニメーションを限定的に扱ってる本だけど、 とりあえずAS3で書けるようになりたい人には日本語の本ではベストだと思う。 訳もこなれて読みやすいし。 ただ7000円以上という高額な上に分厚くデカいのがネック。 スクリプトによる3Dや物理運動を初心者レベルから学びたい人にはこの上ない良書。 ただ、他の本見てサンプル書いてパラメーターいじったこあるとか、 真似ごとでも書いたことあるって人でないとキツいかもしれない。 アニメーションに関することしか書いてないのであしからず。
>>379 JavaプログラマをAS3に流し込みたい、みたいな構想を聞いた事があったので、
てっきりその流れかと。
>>381 名前:名無しさん@八周年[sage] 投稿日:2008/01/31(木) 09:15:37 ID:eKOvigkJ0
/;:;:;:;:;:;:/:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:l
/;:;:;:;:;:;:/:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:l
/、;:;:;:;:;:/:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:l
,ィ{;:;:\;:;:/;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;l
.i;/\;:;:;X、_________j
,....、 ____ リ (ミ、ヾL;:__;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:l
/ ヽ..._/二二二ト、 r‐ュ /_,, `´ .: r=`、` '' ‐r―--==〈
/ r┴┴‐┼──‐弋三三マヽ / トュミy `~´ ,ノ::::::::::::::::::::ノ
j  ̄>──┴─ 、:.:.:.|─‐9|<7|l ,' ``ラ, ,ィエ二丶、^ヾミ:::::::::::::ィヘ
f' 7´ ´¨`ヽ`ヽヽ:::::::__ヽ|}}─ j|^:|Yl ! ,.. / .: 'ヾヒi≧ァミ ,}::::::::::ノクノ
j 、l::;′ Y:::::l:::l::::{ ヾ!|!ュ:.:.:l|:::V ゙l,/ (;' ,rぅ、、 ,':::::r'"(.イ
l l:::| ||:::::|:::|::ハ \_:.:.:ト、::ト__,,.ィ'l ヘ`ニ"´ ヽ _,. ,':::ク>-ヘ-ゝ、、
l `ヽヽ __ノ/.::/::/:::::/ヽ  ̄ヽr‐'´ /l'! lトミ三=ァィ` ,:" , ,ルイ /:.:.:.::/ リ ``t、ー-
' / マ=∠∠∠∠ -'" ∨ {i,ヽ丶-‐ '"ノ ,/,/:::://:.:.:.:.:/ / ヽ:::
' ハ::::「 -r 、 ∨ ヾ.丶.,__,, -‐'" /ノ:.:._// }::
} ハ::::∨ ヽ ヽ、 ゝミミ三ニ=≦,,ムニ彡'" ノ::
/ ヽ:::ヽ ヽ \'"::::::::::::::::l::::::::::::::::::::::丶、__,,r ''":::::::
>>383 何が とりあえず なのかワカランのだが・・・
プログラミングしてる自分に酔うより
人を楽しませる作品をがんがん作る事で
自己顕示欲を満たして欲しい
と 俺なんかは思ってしまうんだけど
こーゆー動画って 案外 初心者の参考になったりするのかね
>>384 ごめん、俺もの作る才能ないわ。
プログラム楽しいから続けてるけど
>>385 うるせーぼけ いわれんでも作ってるわい
くらい言って欲しいがな
楽しいだけで済ませてたまるかつーの
才能ないくせに作っては 泣いたり笑ったりの俺はナンなんだっつーの
てか これは余計なお世話なので むしろすんませんですはい
ActionScript3アニメーションの後半に出てくる式結構難しいね。 数学苦手だから、原理まで理解しようとするとかなり辛い
著者の意見としては、解らなかったら、 そういうもんだと思って考えるなって書いてあったね。 俺もとりあえず、一通り読んでから二回目じっくり読もうと思うよ。 わからないこと理解しようと止まってると、 面白く無くなってくるからね。 でも原理を理解しないと応用利かないもんな…
389 :
Now_loading...774KB :2008/02/04(月) 12:55:44 ID:kOvlkYmb
カーソルキーの↑と→とかのキーの同時押し検出がわからねえ ↓KEY_DOWNでキーコードを判定する方法だと無理? stage.addEventListener ( KeyboardEvent.KEY_DOWN, メソッド ); ↓キーを個別にリスナー登録できないのか? stage.addEventListener ( KeyboardEvent.Keyboard.RIGHT, メソッド );
>>389 それなー。
俺は、isDown使えなくなったから、別に4方向のフラグ用意して、その値で判断するようにした。
stage.addEventListener(KeyboardEvent.KEY_DOWN, moveMe);
stage.addEventListener(KeyboardEvent.KEY_UP, moveMe);
//押してる方向用のフラグ
var moveFlg:uint=0;
//方向に対応したフラグ用の値を用意してる(1:0001 2:0010 3:0100 4:1000)
var keyList:Array = [];
keyList[Keyboard.LEFT]=1;
keyList[Keyboard.RIGHT]=2;
keyList[Keyboard.UP]=4;
keyList[Keyboard.DOWN]=8;
//長いので次に続く
function moveMe(e){ //用意してた値だったらフラグ変更。イベントのtype調べて、keyDowならOR演算、keyUpだったらXOR演算 if(keyList[e.keyCode]){ moveFlg = (e.type==KeyboardEvent.KEY_DOWN) ? moveFlg |= keyList[e.keyCode] :moveFlg ^= keyList[e.keyCode]; } //値を判定 switch(moveFlg){ case 1 + 0 + 0 + 0:trace("左");break;case 1 + 0 + 4 + 0:trace("左上");break; case 1 + 0 + 0 + 8:trace("左下");break;case 0 + 2 + 0 + 0:trace("右");break; case 0 + 2 + 4 + 0:trace("右上");break;case 0 + 2 + 0 + 8:trace("右下");break; case 0 + 0 + 4 + 0:trace("上");break;case 0 + 0 + 0 + 8:trace("下");break; } } 行数対策で汚くなってるがすまん。自動フォーマットとかして見てくれ。
でもあまり綺麗ではないんだよなー。 みんなどうしてんだろなこれ。
393 :
389 :2008/02/04(月) 15:32:32 ID:N0X6ZIMk
>>390 先生どうもっす! フラグ使ってなんとかできました
フレームアニメについても教えて下さい!
AS1,2では問題無く動いたのにAS3では動かないっす
症状: 毎フレームgotoAndStopをさせたら 指定先のMC内のフレームが動かない(歩行アニメしない)
//tg というMCの中に 各方向を向いた人間キャラがいて ラベルによって分けている
//例:"1a"上を向いて静止 "3b"右を向いて歩行(歩行アニメ)
if ( キー入力取得 ){//入力あったら
var lv :String =Ho+"b";//ラベル名(歩行アニメ)
tg.gotoAndStop( lv );//各ラベルへ(キーを押し続けると毎フレーム処理される)
}
1 5 10 15 20 25 30
-------------------------------------------------------
○1a ○1b ○2a ○2b ○3a ○3b //ラベル名
●静止mc ●歩行mc ●静止mc ●歩行mc ●静止mc ●歩行mc
この説明でわかるかな…orz
394 :
389 :2008/02/04(月) 15:43:45 ID:N0X6ZIMk
あー AS3の仕様だと割り切るしかないのか 変数で1回受けて毎フレーム処理させない方法でトライしてみるす
>>390 それが普通にベターなやり方だと思う。
個人的にちょっと気になった点は、keyUpは素直にANDとNOTを使って
moveFlg &= ~keyList[e.keyCode]; にした方がいいかも。
例えば、リスナ登録処理時にキー押しっぱ状態のままだったりするとその後、
キーを離してフラグセット、キーを押すとフラグクリアになってしまう可能性アリ。
あと判定もswitchじゃなくてif-elseの方がいい気がする。
const RU:uint = keyList[Keyboard.RIGHT] & keyList[Keyboard.UP];//変数名は適当
if((moveFlg & RU) == RU){trace("右上");}else… みたいな感じで。
>>391 だと、キーが3つ以上同時に押されている状態になると反応しなくなってしまう。
何か間違ってたらスマソ。
>>395 >リスナ登録処理時にキー押しっぱ
あー、それあるね。治した方がいいなこれは
>キーが3つ以上同時に押されている状態
ありえるかどうか、許可するかどうかは別として、if-elseのメリットがちょっとわからない。
これは分岐増やせばどっちでもいいんじゃね?
4キーに4ビットだからどうにでもできるし。
判定用の定数使った方が読みやすいってのはわかった。
Flex2を今勉強中なんだけど、あまりクラス使わないで、関数をばっかり書く感じでいいの?
398 :
Now_loading...774KB :2008/02/04(月) 20:16:46 ID:NPROsH6g
AS3って、removeEventListener()でリスナー解除したイベントは ガベージコレクションから解放されてるの?
>>390 AS2のようなisDownがほしいなら次のようにすればいい。
private var keyArray:Array = new Array(256);
private function keyDown(e:KeyboardEvent):void{ keyArray[e.keyCode] = true; }
private function keyUp(e:KeyboardEvent):void{ keyArray[e.keyCode] = false; }
public function isDown(keyCode:uint):Boolean { return keyArray[keyCode]; }
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);
こうしておけば、カーソルキーだけじゃなく他のキーコードすべてにも対応できる。
>>396 さっき始めて知ったんだけど、ASのcaseのラベルって定数式に限らず任意の式が書けるんだね。
switchはある程度単純な条件判定に制限されてしまうから〜とか言いたかったんだけど、
ASではif-elseでもswitchでもそれぞれの好み次第でどっちも使えるね。
でも、組み合わせが少ないとはいえ、余計な分岐を増やしたりするくらいなら
if-elseで普通に書いた方がいい気もするけど…。
>>399 フォーカスが無いときのアップ/ダウンイベントの取得が出来ないので、
isDownのエミュレートとしては不完全程遠い。
402 :
399 :2008/02/05(火) 22:12:26 ID:SZWMV0lb
>>401 なるほど。そこまでは考えてなかったです。
改善策を考えてみました。
private function keysClear(e:Event):void { keyArray = new Array(256); }
stage.addEventListener(Event.DEACTIVATE, keysClear);
でもこの方法だと、
HTMLでwmodeをopaqueかtransparentにしてブラウザで読み込むと、deactivateイベントが発生しない……。
403 :
s :2008/02/07(木) 07:48:25 ID:dDgLt1l9
どうーーーしても addChildしたMCをremoveChildする時点で 指定した DisplayObject は呼び出し元の子でなければなりません。 のエラーが消えません。 hitTestPoint内での条件分岐 if(btnA.hitTestPoint(mouseX,mouseY,true)){addChild(btnB);}else {removeChild(btnB);} は、根本的に使い方が間違ってるのでしょうか? ここのスレ>147とか、AS3でのStageについての仕様の変更についてのサイトとか探しまくってるんですけど、根本的にこういう使い方する事自体が間違ってるのでしょうか?
>>403 addChildしそこねてる状態でremoveChildしたか、
addChildしてないMCでremoveChildしてるんじゃない?
removeChildの直線で、 btnB.parent をトレースして親を確認してみるといいと思う
if(contains(btnB)) removeChild(btnB);
406 :
s :2008/02/07(木) 14:28:47 ID:dDgLt1l9
できた。。。。。 if(contains(btnB)) removeChild(btnB); で、できた。。。。。感動。。。。 ありがとうございました!!!
そういえばまっつん問題で俺が最悪板に突撃かましたときも 必死になって涙眼でまっつんを守ろうと必死になっていたよな。昔の最悪アンチ住人達は。 っていうかコイツはスタッフじゃありませんw 。(´^ω^`) 昔の最悪板は狂っていた。皆洗脳状態だった。 「もし仮にスタッフであるのならば、スタッフが利用している スタッフ用のスペースにて堂々と発言をお願いします。」って思うようになったきっかけだな。今思えば。
408 :
Now_loading...774KB :2008/02/08(金) 18:25:10 ID:HYU+crDf
先生わかりません!! 「 サウンドが再生中なら停止 」の処理をやりたいのでつ! // channelE はSoundChannelオブジェクト trace( channelE.position );//再生ヘッドを調べようとしたらエラー channelE.stop();//ストップさせようとしたらエラー なんでnullだとエラーになるんだ! なんでundefined返さないんだああああ if ( オブジェクトが存在しているならtrue ){//←この条件はどうやって書くの? channelE.stop(); }
409 :
Now_loading...774KB :2008/02/08(金) 18:41:17 ID:IlPNr77C
>>408 if (channelE){
channelE.stop();
}
410 :
408 :2008/02/08(金) 18:51:53 ID:HYU+crDf
できました! さすが先生でつ dでつ〜! こんな単純な事だったとは… しかし意味わからんなw traceして出るこれ [object SoundChannel]は trueて意味なのか?? for...inで中身調べようとしても何も出てこなかったし… for(var i in channelE ) { trace( i+" : "+channelE[ i ] ); } まだまだわからない事だらけだぜHAHAHA
412 :
Now_loading...774KB :2008/02/09(土) 13:54:32 ID:9HZrlWE5
先生! 昨日のサウンド関係の続きでわからない事があるので教えて下さい! やりたい事「 サウンドが鳴っている途中で音量を変えたい 」 ↓はヘルプのメソッド引用でサウンドplay直後に呼び出して初期設定しています しかしその後はcannelE(SoundChannelオブジェクト)がすぐにnullになってしまい サウンドが再生中にもかかわらず音量の変更ができません public function setVolume( volume:Number ) :void {//ボリューム設定 var transform:SoundTransform = channelE.soundTransform; transform.volume = volume; channelE.soundTransform = transform; } どうすれば再生中に音量を変える事ができるのでしょうか??
だいたいさあ AS3のサウンド関係にバグがあるよ AS2以前ではサウンドファイルをMC内に配置して(2f以降に埋め込んで1fにはthis.stop();) メインタイムラインのステージ外に配置し 必要に応じてMCをPlay()させてたんだ それがAS3だとメインタイムラインをprevFrame();させたら ステージ外に配置していたMC内の サウンドが一斉に鳴りやがる フレームが動いてないのにだお! これは絶対バグだろw
414 :
Now_loading...774KB :2008/02/09(土) 16:15:20 ID:rMp9UUfE
>>413 AS3はフレーム移動すると、ステージに置いたインスタンスの挙動が不安定になるよね。
それが怖くて、もうフレーム移動は殆ど使わなくなった。
415 :
412 :2008/02/09(土) 16:35:17 ID:9HZrlWE5
大変申し訳ありません! こちらの凡ミスですた…
Newしたサウンドインスタンスが複数存在してましたorz 自作サウンドクラス内の
各オブジェクトをstaticにしたらうまくいきました
>>414 Adobeに報告してもダメなんですかい…?
416 :
Now_loading...774KB :2008/02/09(土) 18:10:18 ID:JnsgUYWW
>>413 フレームのプロパティの同期設定でも状況が変わる
ActionScript3の概要は大体把握しましたが 正直、色々試してみるには面倒なので Processingの世界に旅立ちました。
さようなら
processingはアルゴリズムをもとにビジュアルをつくることがスマートにできるけど、 ブラウザでの実行速度は使い物にならないし..
420 :
Now_loading...774KB :2008/02/10(日) 15:28:55 ID:omr7v3ir
どうも! 昨日のAS3の不具合をAdobeに報告しようと思ってるんだけど こんなんでわかってもらえるかな? ******不具合報告****** 不具合の内容: FlashCS3 AS3でのパブリッシュ時 メインタイムライン移動時における配置MCの誤作動 問題の再現方法: 1.サウンドファイル(wav,MP3等)をMC内に配置(2f以降に埋め込んで1fにはthis.stop();) 2.ステージに配置(1f) 3.メインタイムライン2f以上移動後でprevFrame(); もしくは gotoAndPlay();でフレームをさかのぼる 結果: MC内に配置したサウンドが勝手に鳴る(MC内の再生ヘッドは動いていない) 期待した結果: MC内に配置したサウンドが鳴らない(鳴っては困る、しかも無限ループで鳴り続ける) この症状が改善されないと非常に困る ADV形式の作品が作れない(非常に作りづらい) MC内に声とか効果音とか入れて編集するし アニメの口パクだって音に合わせて作るし
>>420 よくわからんので簡単なサンプルうpって
>>420 それで大体把握できると思う。
日本のアドビでもちゃんとUSにバグ報告してくれるから大丈夫だよ。
サウンドは外に出せばいいじゃん、って思ったけどリップシンクなら大変だね・・・
とりあえず回避策。
ガイドレイヤーにWAVをドロップして、リップシンクを作る。
2フレーム目に
var sound = new MySound()
sound.play()
って感じで、リンケージからサウンドクラスを作って再生すれば
とりあえず回避できるんじゃないかな。
>>420 手元で確認した限りだとサウンドは別に鳴らないんだよね
こっちが問題を認識しきれてないのかも、だけど。
Flash Player9 のバージョンは最新? 曖昧だけど初期のバージョンでは
gotAndPlay() で飛んだ先のMC の第一フレームに書いたスクリプトが無視される、
ちゅーバグがあったような気がする
424 :
420 :2008/02/11(月) 00:20:58 ID:w7F4V8Gd
んーわからん
>>424 試したけど やはりサウンドが鳴る事はないよ
最新ではないようだけど そのバージョンなら問題ないはず。たぶん。
ところで それはブラウザのプレーヤ?
パブリッシュしてブラウザで見てもサウンドが鳴るのかな?
オーサリングツールで使うスタンドアロンのプレーヤが
古いままでバグ持ちなんじゃないかなぁという気がする。
てかアップデートで勝手に最新になりそうだからわからんけど。
MCに色を塗るコマンドを教えてください。
428 :
420 :2008/02/11(月) 12:40:22 ID:w7F4V8Gd
報告でつ Flaプレイヤー(&スタンドアロ-ン)を 9.0.45.0 から 9.0.115.0 にアップデートしたら改善されました! お騒がせしました… アドバイスくれたみなさんありがとう Adobeさんも不具合報告送っちゃってゴメン
>>428 問題ないはず、とか適当な事いってスマンw
まぁとにかく 解決おめ
430 :
420 :2008/02/11(月) 19:10:13 ID:w7F4V8Gd
>>430 鳴ったw バグっぽいな
検討を祈る(`・ω・´)
CS3のドキュメンテーションの関数クロージャの項目に書いてあるコード(以下)についてです fooを代入したmyProduct関数を呼び出す時に引数を渡していますが fooでは引数を定義されておらず、引数を定義しているrectAreaに渡されてるようですが いまいちこの仕組みが分かりません 例えばfoo(4)で呼び出した場合、fooでは引数が定義されていないのでエラーが返ってきますが 通常fooから参照されるrectAreaへの参照を外部に渡し、myProduct(4)で呼び出される場合 クロージャが利用されるので、親の関数で引数を定義されていなくても (クロージャはネストされた関数の情報も全て含む?)ネストされた関数で定義されていれば 引数を保持するって事でいいんでしょうか? function foo():Function { var x:int = 40; function rectArea(y:int):int // 定義された関数クロージャ { return x * y } return rectArea; } function bar():void { var x:int = 2; var y:int = 4; var myProduct:Function = foo(); trace(myProduct(4)); // 呼び出された関数クロージャ } bar(); // 160
もし、foo()を実行したいのなら、 var myProduct:Function = foo; trace(foo()); となる。 今回は、var myProcudt:Function = foo();なので、 foo()の戻り値、rectArea(y:int):intがmyProductに渡されている。 まあ、ソースが難解になるから、こんな機能使わないほうがいいんじゃない。
>>432 引数を保持しているんじゃなくて、変数のスコープ(いわゆるアクティベーションオブジェクト)を保持してる。
クロージャってのは、関数をオブジェクトとして渡すと、その時の変数のスコープもひとまとめにして渡される感じ。
まず引数関係ない例で確認してみるといいんじゃない?
下の例で行くと、makeCounterを実行するたびに、変数countと匿名関数がワンパックになって渡されてる。
function makeCounter(){
var count:int = 0;
return function(){trace(++count);}
}
var func1 = makeCounter();
var func2 = makeCounter();
func1(); //1
func2(); //1
func1(); //2
func2(); //2
それをふまえてマニュアルの例を見てみると、 function foo():Function{ var x:int = 40; function rectArea(y:int):int{return x * y; } return rectArea; } function bar():void{ var myProduct:Function = foo(); trace(myProduct(4)); } bar(); // 160 ちょっと整理してこんな。関数rectAreaを"クロージャとして返す関数"のfooを実行すると、 変数xと、引数を一つ持つ関数関数rectAreaがセットで帰ってくる。 それに引数を付けて実行するんだけど、その際に、もともとセットになってた変数xを使う事もできるわけ。
>>433 ありがとうございます
myProductにはfooが渡されてるのもだと思ってました・・・
冷静に見れば分かりそうなものなのに・・・馬鹿ですね;
で、マニュアルのにはなんでbarの中でx,yを宣言してるかっていると、 クロージャの場合は、スコープが違ってるという事を説明したかったんじゃないのかな? function bar(){ }
投稿ミスすまん。
>>437 最後の関数のはコピペミス。
クロージャは、あんな特徴があるから、変数と処理をひとまとめにしたいんだけど、
クラス作るのめんどくせーって時によく使われる。
>>0 H4sPw5mさん
ありがとうございます
>>foo()の戻り値、rectArea(y:int):intがmyProductに渡されている。
と言う事を完全に見落としていました・・・
バインドメソッドと関数クロージャのthis参照についても調べているのですが
ややこしいですね
AS3のasを使ったキャストについて質問です var str:String = "2008"; var i:int = 55; i = str as int; trace(i); 文字列2008をint型にして扱う筈が、このトレース結果は0でした as比較で一致しなければnullが返って来ると聞いてましたが、なぜ結果が0と出るのかも分かりません 解説をどうかお願いします
>>440 as は型変換の演算子ではないよ
int 型に null を代入するとデフォルト値 0 が割り当てられる
var i:int = int(str);
でいいんじゃないの
442 :
Now_loading...774KB :2008/02/14(木) 22:22:30 ID:eBGgPNG+
>>440 intはnullを格納できない。
それだけ。
NumberだとNaNが格納できるのでisNaNが使える。
>>441 >>442 ありがとうございました、どうも勘違いしていたようです、int(str)でできました
0になる謎も解けました、ありがとうございました 443を途中で送信してしまいました、失礼しました
っ parseInt()
数字のみを含む String は int(), uint(), Number(),で変換出来ると リファレンスにも書いてあるんだからいいんでない?
ねえねえActionScript3で実際に大規模なSLGとかTRPGとかって作れるの?
>>447 TRPGってことはニューロデッキや運命カード交換機能付チャットシステムですか?
>>447 AS3でもAS2でも作ろうと思えば作れる土台はある。
が、多人数で連携して作業できるような開発環境が揃って無いので、
世に出てくるのは、もう少し先になるんじゃないかね。
FLASH CS3を買ってみて色々触ってみました。 処理速度が10倍になったという事でAS2.0で作っていたシューティングを ある程度移植して動作してみました。 ・敵弾等はFLA編集画面で作成したシンボル:ムービークリップを ムービークリップクラスとして登録してaddChild( new Mc() );という感じに追加 ・当たり判定、画面外判定はAS2.0のまま 当たり判定、画面外判定を加えるまでは変化無いな〜と感じたんですが 判定加えても動作が重くならないという点で凄く「早くなった!!」と感じます。 描画するデータの扱い方は未熟ですが今後の勉強方針のために少し教えて欲しいのですが 10倍の速さというのはグラフィックに関してはあまり関係無い事だったりしますか?
そうだよ
452 :
Now_loading...774KB :2008/02/18(月) 18:01:03 ID:97Wef6vO
疑似3Dマップのアクションゲーでの深度管理がうまくいきません キャラのみの場合はY座標をそのままインデックス位置に当てればいいのですが 間に障害物(柱や壁)を入れるとうまくいきません 何かいい方法はないでしょうか? みなさんどう対処してるのでしょうか? 柱のY座標150の場合(インデックス150) 下からキャラが30人 上へ向かって移動すると 柱のインデックス位置は180に変る 実際の表示位置は150なので表示がおかしくなる(キャラが柱に埋まってしまう) キャラはY座標が変更になった時のみ setChildIndex で自身のインデックス位置を書き換えてます
柱もY座標でインデックス設定しときゃいいんじゃね?
454 :
Now_loading...774KB :2008/02/18(月) 18:49:28 ID:PW0ge8Ja
>>452 453の通り、動く動かない関係なく出現オブジェクトは同等に扱うといい
壁や床も含め全て同じように考えるのもアリ
レスどうもです 柱や壁なども毎フレームsetChildIndex でインデックス位置を指定し直すという事でしょうか? 40〜50個程度なら 毎フレーム指定しても処理速度が遅くなるって事はないですかね? ともかくやってみます
456 :
Now_loading...774KB :2008/02/18(月) 20:11:40 ID:PW0ge8Ja
>>455 処理速度を気にするなら、画面内全体のオブジェクトではなく限定的に処理するのもアリ
キャラはy方向でdepthが変化するわけだから、画面内を横にエリア分割し
キャラの移動にあわせてエリアにオブジェクトを関連づける
キャラと同エリアに所属するオブジェクトのみをチェックする
キャラと柱が重なる条件を満たすならキャラと柱のみdepthを変更
457 :
Now_loading...774KB :2008/02/20(水) 04:58:55 ID:gqgO3XkV
458 :
Now_loading...774KB :2008/02/20(水) 09:09:35 ID:tI2MuJEC
>>455 setChildIndexでやるって認識で悪くないんだけど1つ注意点。
setChildIndexは意外と重いから、y座標でソートしてから
1枚のビットマップにdrawしちゃったほうがいいと思う。
459 :
Now_loading...774KB :2008/02/20(水) 21:41:36 ID:dZqDG4Zx
Tweenerを使おうと思ってるんだけど import にどうやったら追加できるのか教えてください. 具体的には import caurina.transitions.*;ってのが使いたいんだけど C:\Program Files\Adobe\Flex Builder 2\Flex SDK 2\frameworks\Developer\SDKs\Tweener\caurina\transitions にソースを展開して flex-config.xmlに <source-path> <path-element>/Developer/SDKs/Tweener</path-element> </source-path> って展開したところを付け足しても F:\editor\fuji\caurina\transitions\Tweener.as: エラー: source-path のファイルには、外部から可視的な定義が必要です。ファイル内の定義が外部から可視的であることを意図している場合は、パッケージ内に定義を配置してください。 ってなってしまうんだぜ。orz
AS2→AS3移行のお奨め書籍ありますかね?
livedoc
462 :
Now_loading...774KB :2008/02/21(木) 11:29:22 ID:g4yHtz7F
463 :
Now_loading...774KB :2008/02/21(木) 16:05:19 ID:CgMbpi7O
先生 addChildで追加したMCへの操作の仕方がわかりません! //メンバ変数 tg:MovieClip = rootMC.mainMC.charAreaMC;//キャラ表示先ターゲット //メソッドA内での処理 tg.addChild( charMC );//表示先にキャラMC表示(きちんと表示されてる) //メソッドB内での処理 trace( tg );//[object MovieClip]と出る trace( tg.charMC );//undefinedが出る if ( tg.charMC != null ){//MCが存在してるならplay tg.charMC.play();//キャラMCにアクセスしてplay()させたい }
メソッドAでcharMC見えてるなら普通にcharMC.play()とかでいんじゃねーの
466 :
464 :2008/02/23(土) 11:57:38 ID:rdG9pW+d
先生レスどうもでつ! 普通にcharMC.play()でできました ちなみに他のクラスからアクセスする場合は どうするんでしょうか? 同じようにメンバ変数にターゲットを設定してtrace( tg.charMC );するとundefinedが出まつorz addChildをしたクラス内のみでしかアクセスできないのでしょうか? 他のクラスからメインタイムラインからターゲットを設定してではどうすればいいんでしょう
>>464 charMCはメソッドAで作成したインスタンスなんだろ?
だったらcharMCへの参照はメソッドAが持ってる
traceの中で見てるのはtgのメンバー変数charMCになるから
その方法で見るならメソッドAでtg.charMC = charMCって参照渡さないといけない
468 :
464 :2008/02/23(土) 12:16:35 ID:rdG9pW+d
なるほど… AS2以前のルートからターゲットを伝ってどこからでもアクセスできる ってのは無理なんですね 精進しまつ 先生どうもでつ
469 :
只今精進中! :2008/02/23(土) 17:31:46 ID:rdG9pW+d
表示コンテナ内に特定のMCが存在するか判定する方法がわかりません! if ( ??? ){//コンテナ内にcharMCが存在してるなら tg.removeChild( charMC );//消す } インスタンスをnullにして判定する以外の方法を教えて先生
470 :
只今精進中! :2008/02/23(土) 18:12:47 ID:rdG9pW+d
おお!? getChildByNameてのを使ったらエラー無しでいけました! charMC.name = "tinko";//コンストラクタで名前設定 var target:DisplayObject = tg.getChildByName("tinko"); if ( target != null ){//存在してるなら tg.removeChild ( charMC );//消す } しかしこれ名前を設定するのマンドクサいなあ インスタンスがむちゃたくさんあるのに… 他にいい方法はありませんかね…
>>470 逆に考えるんだ
if( charMC.parent )
charMC.parent.removeChild(charMC);
こうすれば、親が誰でも消したい奴があれば確実に消せる。
3.0を勉強始めたのですが、色々とflashを作らなくてはいけない事情があり 2.0での作業している所です、そこで後々3.0に以降という事を意識した2.0の扱い方なんて方法はありますでしょうか? やはり3.0はSpriteが中心になる以上、2.0での時の様な手作業でMCやtextfield等を生成配置→その動作用にスクリプトを打つ といった形を止めて、MC(Sprite)、textfield等の生成配置、トゥイーン等を出来る限りスクリプトで処理をするといた事等でしょうか? あとはclassでの構築、データ型の指定をしっかり設定していくとか
473 :
Now_loading...774KB :2008/02/25(月) 01:47:05 ID:UtQQfgtD
>>472 AS2で移行を望むのなら、
クラスを使わなければ問題外とまでは言わないが、将来的にはネットや本などの情報源は当たり前のように増えつつある。
クラスで書くのに慣れておいて損はない。意地でもtimeline派というならもうどうでもいいけど。
あと、attachMovieしたやつはMCを消したら参照も消すような手間もかけてみるといい。
初心者なら省略で動く指示子や型もしっかり書いた方がいいはず。
>3.0はSpriteが中心になる 別にそんなことはないと思うけど 処理速度を気にするもの(ゲームとか)ならそうかもしれないけどね スクリプトから生成〜はあくまでスタイルの一つ そうするとメリットはでかいのは確かだけど、別にそうしないとダメってものでもない そこらへんは学びながら自分の好みのスタイルを見つけていけばいいと思う とりあえず、2.0でやってるなら特に意識しなくても移行はスムーズにいくから そんな気にしなくても大丈夫
使えない奴に限って原理主義みたいな事言うんだよなw
>>473-475 レスありがとうございます
まだオブジェクトを手作業で作ったり、スクリプトのタイムライン書きに慣れてる感じですが、
今後を見据えてclassの扱いにももっと慣れて行こうと思います
構築はSpriteのみ等といった考え方はもっとちゃんと3.0扱えるようになってからの方がいいですね
それと>attachMovieしたやつはMCを消したら参照も消す
はどういった方法なのでしょうか?
3.0では
container.addChild(spr);
-----途中処理-----
container.removechild(spr);
spr = null; の様な事ですか?
2.0ではどのような処理なのか・・・上手く掴めません
removechildは表示リストから除外するだけ
478 :
Now_loading...774KB :2008/02/25(月) 11:08:28 ID:UtQQfgtD
>>476 mc.removeMovieClip();
delete mc;
3.0意識させるならdelete勧めんなよw
って原理主義君じゃないかw しっかりしろよ原理主義者ならww mc = null な ダイナミッククラスで全部作る気か?原理主義者なのにwww
>>480 横レスだがあくまで「参照を消す」って観点で書いてんだろ
AS2.0なら普通deleteで消すだろ。
nullにしたら存在判定が「mc == undefined || mc == null )」
に置き換えないといけないからかなりめんどいぞ
あくまで参照を消すって事が大事なだけでnullを使わないといけない事はないと思う
3.0じゃコンパイル通らないんだよ わかんないなら無理しなくていいよw
参照を無くすのはnullにすりゃいいんだけど、 そのインスタンスが保持しているアクティブなオブジェクトは生きてるから それをきちんと非活性化してからnullにするのが正しいやり方 例えばあるクラスでsetIntervalしてた場合そのクラスにnullすれば、 確かにGC対象にはなるが、setIntervalはGCが起こるまで継続して実行される なので、clearIntervalしてからnullするのがいい 本の引用だけど、nullする前に 当該インスタンスのイベントリスナーの削除 タイマーやsetIntervalの非活性化 タイムラインが実行されてたら、ちゃんとstop() その他見えなくなるようなものがあるかをチェック などをやるのがネットワークリソースやCPUパワーの無駄をなくすのに良いそうだ
484 :
Now_loading...774KB :2008/02/25(月) 16:37:54 ID:UtQQfgtD
>>480 そもそも2.0での話をしたまで。
AS2でのdeleteとnullの実行の違いは理解して発言してるわけ?マニュアル人間君
質問してる奴は3.0を見据えた書き方聞いてんのに、なんで3.0でエラーになる 書き方を自慢げに書いちゃってるのかって事だよwww 他に書き方あるのにww 鳥でも3レス離れてねー場所の事忘れねーぞww しかも >AS2で移行を望むのなら、 >クラスを使わなければ問題外とまでは言わないが、 あなたですよね?こんな事おっしゃってたのww それとも3レス離れるとやっぱ駄目かwww 3.0使った事あるんすか? マニュアル以前の問題なんすけどwwww
ああ、それとご自慢のdeleteとnullの違いは プロパティを削除するか、プロパティにnullポインタへの参照をかますかの違いですよね先生 だから何って話だけどwww
deleteかnullくらいで喧嘩すんなよ・・・ここはundefined代入だろアホ共
先生以外の人に説明すると、 var hoge; delete hoge; これ3.0だとエラーになるわけよ。移行考えてる人は気を付けてな。
>>487 そう。代入するならいいんだよ。deleteはできないんだ。
3.0の常識。
AS1からの移行組みなんだけど うまくゲームが作れなくて困っている なんというか… 基本的なクラス間のデータのやり取りがうまくいかない メインクラス: メインタイムラインの操作 グローバル変数管理 全体のメイン処理 自分クラス: プレイヤーが操作するキャラの操作 動作管理 敵クラス: 敵の動作管理 マップクラス: 自分と敵が戦うマップの作成、削除 はじめはメインクラスに他のクラスをnewしてたんだけど クラス間のデータのやり取りが大変すぎる マップクラスに自分と敵をnewして さらにメインでマップをnewするというツリー構造の方がいいのだろうか 自分、敵、マップの境界線、障害物を判定させる場合はマップクラスで一元管理した方がいいんだよね? その辺の基本的な構造がわからん… みんなどうしてるの?
491 :
Now_loading...774KB :2008/02/25(月) 17:24:35 ID:GKLMEU5y
いやん汚い言葉。 直ちにdeleteしなさい。
>>490 最初のやり方(メインクラス内で全部new)のほうがシンプルで良さそうだけどな。
データのやりとりする時はオブジェクト丸ごと渡してしまえばいいんじゃない?
こんな感じで。
//メインクラス
public class MainClass
{
var jibun:JibunClass = new JibunClass();
var teki:TekiClass = new TekiClass();
var map:MapClass = new MapClass();
//当たり判定メソッド
public function hitTest():bool
{
//マップと自分の判定
if (map.mapHitTest(jibun) == true) return true;
return false;
}
}
//マップクラス側
public class MapClass
{
public function mapHitTest(j:JikiClass):bool{
……
}
}
>>482 そっくりそのままお返しするわ
attchMovie前提の2.0でnull使うなんて手間の増加だろ
3.0しか知らないなら喋らないでいいよ
ID:hhSGYGUsは多少言い方は乱暴だが 言ってること自体はID:hhSGYGUsの方が100%正しいな
2.0しか知らない奴が3.0語る 3.0しか知らない奴が2.0語る 両方知ってる大部分の人はやりとりを笑ってみてるw
>>496 俺には2.0と3.0の切り分けができず話してる意味無し討論に感じた
3.0じゃdeleteは使えないとか2.0じゃnullは扱いづらいとか
触りだしたら当たり前に分かる事をさも勘違いしたままだと不味いかのような言い方をしてるのか不思議だ
3.0への移行を意識するなら2.0でもnullを使うべきだってのと 2.0と3.0の違いを認識するためにも2.0ではdelete使うべきだっていう ポリシーの違いに見える
>>472 は3.0を意識した書き方を聞いてるんだから
いくら2.0ではベストプラクティスだからといって、3.0で使えないやり方を教えるのはおかしいでしょ
基本的に3.0関連のスレでもあるし、2.0ではどうかなんて争点になってない訳で
それでも頑なに主張するなら3.0ではどうするのかも合わせて教えるべき
あとnullが扱いづらいとか言ってるけど
undefined === null //false
undefined == null //true
なんだから、そんなにめんどいなら mc == null で済ませても問題ないし、
厳密に判定したい・する必要があるなら、そもそもめんどくさがるなって話じゃないの?
上から目線で見たいだけなんだよ。ほっとけ。 分かる奴はちゃんと分かってるから。
AS2と3の話題が出ているので便乗して質問します。 上の階層を参照したいのですが public class Hoge extends MovieClip { function Hoge() { trace(this.parent); hogehoge() } public function hogehoge():void { trace(this.parent); } 上記の場合ですと、parentの値はnullが返ってきます。 しかしながら、フレームからhogehoge()を実行した場合にはきちんと値が返ってきます。 //フレーム側の記述 var hoge_mc:MovieClip = new hogeMC();//クラス化したシンボルを生成 addChild(hoge_mc); hoge_mc.hogehoge(); AS2の場合は同じ値が返って来ると思うのですが、 何故AS3ではこのように返ってくる値が異なるのか理由が解りません。 宜しくお願いします。
addChildしないとコンテナに配置された事にならないからさあ クラス内で(コンテナを引数で渡して)addChildすれば値が返るお
>>503 ああ、そうか。確かにそうですね。
配置されてないのに上の階層も何も無いですね。
有難うございます。
ちょっとしたエフェクトを作成しています。 半径25〜50くらいの白円をSpirteに描画して それを毎フレーム少しずつ「小さく+透明に」という事で alpha -= 0.02; scaleX -= 0.02; scaleY -= 0.02; という処理を加えました。 考えた通りのエフェクトはできたのですが、このSpriteが 一点に多く集まると突如ガクガクと処理落ちを起こしてしまいます。 重なった場合は下にある方を高速で透明化する等工夫したのですがあまり改善になっていません。 scaleとalphaは同時に操作すると負荷が大きいとか 透明度を扱う時はこのプロパティを設定するとか 先輩方に改善策をご存知の方はいませんでしょうか?
506 :
アホか氏ね!!!!!!! :2008/03/01(土) 18:03:32 ID:BSUf4hLs
CS3の自動フォーマット作ったヤツぶん殴ってやりてえ… function なんたら{ if ( 判定 ) 処理なんたらかんたら;//補足コメント } フォーマット後↓ function なんたら{ if ( 判定 ){ 処理なんたらかんたら; //} 補足コメント ←ここでおかしくなる } この他にも色々不具合発見したぞ… // { ←これにも反応しやがる エラー出たんなら内容変更すんなよ!! 直せよこの使えねえ自動フォーマット!! このソフト ユーザーからいくら金取ってんのか自覚してんだろな?
うまくインデントしないこともあるしな
確かに・・
>>505 alpha処理は負荷の高い処理だから、それがいくつも重なると処理落ちになる
alpha使わないでやってみるとよくわかると思う
>>509 解答ありがとうございます。
そうすると「alphaを使わない工夫」というものが必要という事ですね。
スケール調整や背景色との組み合わせでそれっぽく調整してみようと思います。
ありがとうございました。
width・height共に10ずつ加算するように記述しているのですが、 rotationの値を変えると意図したとおり加算されません。 何故このような現象が起こるのか教えて頂けないでしょうか。 var hoge:Sprite = new Sprite() addChild(hoge) hoge.graphics.beginFill(0x000000) hoge.graphics.drawRect(-80, -50, 160, 100) hoge.graphics.endFill() hoge.rotation += 90; this.addEventListener(Event.ENTER_FRAME, hogehoge); function hogehoge(event:Event):void { hoge.width += 10; hoge.height += 10; }
>>511 function hogehoge(event:Event):void {
hoge.width += 10;
trace(hoge.scaleX, hoge.scaleY, hoge.width, hoge.height);
hoge.height += 10;
trace(hoge.scaleX, hoge.scaleY, hoge.width, hoge.height);
}
[出力(3フレーム分)]
1.1 1 100 176
1 1.1625 116.2 160
1.262 1 100 201.9
1 1.324375 132.4 160
1.4240000000000002 1 100 227.8
1 1.48625 148.6 160
とりあえずtraceしてみたが、これはいったいどんな風に計算されてるんだ??
513 :
Now_loading...774KB :2008/03/13(木) 12:09:04 ID:xMOdewd9
はじめまして一つご質問があるので書き込みをさせていただきます
ただ今アクションスクリプト3.0 つまりCS3でフラッシュを制作しています
フラッシュの中にメニューボタンとして
他のページにリンクする様に設定しましたが
次のような表記で行うと新しいウィンドウがどうしても開かれてリンク先のページが表示されてしまいます
■■■■■
English.addEventListener(MouseEvent.CLICK,gotoURL1);
function gotoURL1(event:MouseEvent):void{
var theURL1:URLRequest = new URLRequest("
http://yahoo.co.jp/ ");
navigateToURL(theURL1);
}
■■■■■
別のウィンドウが開かれることなく
表示しているページ内で新しいページにジャンプするにはどうしたらよろしいでしょうか?
すみませんがご質問の解答よろしくお願いいたします(ー人ー)
>>511 rotationによってwidth,heightがどう変化するか試してみればいんじゃね
>>513 とりあえず、敬語の使い方を勉強汁w
navigateToURLの第2引数とかヘルプで見れ
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません どのタイミングでnullになるのかトレースで追おうとしてもエラーでキャンセルされるし デバッガだと特定の変数ウォッチできないし… だめだこりゃ 使いづれえ〜… みんなどうやってデバッグしてんの?
>>516 ちゃんとエラーメッセージ出てるじゃん
ソース100回嫁
>>516 やっぱtraceとデバッガかな。他ないしw
null参照に出くわすのは、イベントがらみが多い感じ。
インスタンス消す時なんかは、きちんと関連イベントをremoveEventListenerして回らないと、
1回だけnull参照が起きるとか結構出くわすよ。
>>518 >インスタンス消す時なんかは、きちんと関連イベントをremoveEventListenerして回らないと、
それ当たり前なw
>>511 本当だ。なんか変な動きになるね。原因はわからん。
回転とか、サイズ変更とか、移動とかの動きを副作用なくやりたい場合には、
サイズ変更→回転→移動の順番でやるといいそうな。そのコードで言うと、
一旦回転角度を保留しておいて、サイズ変更後に戻すとかかな?
function hogehoge(event:Event):void {
var r:Number = hoge.rotation;
hoge.rotation = 0;
hoge.width += 10;
hoge.height += 10;
hoge.rotation = r;
}
>>516 あと、try..catchでエラートラップして、そこでtraceしてみるとかもやってみるといいよ
>>511 その問題の原因はわからないけど、
一応width,heightは間接的にscaleX,scaleYを変更するようなプロパティだから
↓のようにやれば多分意図した通りの変化にはなると思うよ。
function hogehoge(event:Event):void {
hoge.scaleX += 10 / 160;
hoge.scaleY += 10 / 100;
}
523 :
Now_loading...774KB :2008/03/13(木) 15:07:24 ID:xMOdewd9
524 :
Now_loading...774KB :2008/03/13(木) 15:21:16 ID:xMOdewd9
>>514 ご親切にありがとうございます。
公式リファレンスがあることも知らなかったので
今度からそちらを参考にします。
>>515 解答と敬語のご指摘ありがとうございます。
すいません勉強不足で・・・勉強汁ます
>>520 >>522 有難うございます。
お二人の方法を合わせる形で記述したいと思います。
単に拡大縮小だけならscaleXとscaleYでいいのですが、
回転に表示位置の制限などが絡んでいる為、
scaleだと端数の関係でちょっと問題があったので助かりました。
ちなみにrotationが90の時に下記のように記述すると縦・横共に加算されました。
function hogehoge(event:Event):void {
hoge.width += 10
hoge.width += 10
trace(hoge.width, hoge.height)
}
[出力(3フレーム分)]
110 110
120 120
130 130
理由は全く解りませんが縦と横の概念に何かあるんでしょうね。
hoge.width += 10 hoge.width += 10 なんじゃそれw
よく勘違いされるけど、MCのwidthとheightは動的に変化するんだぜ? あるMC_Aの中にMC_Bがあって、MC_Bが横移動したらMC_Aのwidthは本来の MC_Aのwidthよりも大きくなる。
528 :
Now_loading...774KB :2008/03/14(金) 00:17:08 ID:m2FJDY1w
>>525 Flexだとmatrixとかで
解決しそうな。
widthとheightは角度変換後の結果に対して適応されるから scaleみたいにローカル座標系で変化させたいなら 一度角度を0にしてからwidthとheightを設定してまた角度を戻すといいよ
質問というか… AS3で変な挙動が起きたので報告に 以下のforで girl.length を指定するとフリーズしましたw スクリプト制限時間をこえても何も反応無し 型指定の関係なのか? girlはArray 中身はObject for (var k :int=1; k<=girl.length; k++) {//CS3自体がフリーズ //色々処理 } var g:int = girl.length; for (var k :int=1; k<=g; k++) {//一回変数で受けると正常に動作 //色々処理 }
いろいろ処理が気になる。配列こわしてるんじゃまいか?
ホントだ。フリーズするわ。 var girl : Array = [new Object()]; for (var k :int=1; k<=girl.length; k++) { girl.push(new Object()); }
533 :
530 :2008/03/14(金) 18:05:29 ID:rpPwXlWR
あー なるほど 処理の中で girl[ 変数 ]=null; てのがありました 原因はこれかな? 申し訳ない…orz にしてもフリーズしなくてもw
そら無限踏むわな
>>533 ちなみに、配列なら変数名は"girls"か"girlList"にした方がいいよ。
そしたら、他の人や自分が後から読んでも、変数名でなんとなく配列っぽいって分かるでしょ。
それだったらAdobeが出している命名規則に従った方がいいと思う。 ついでにいうと、xxxx_arrayにしておけばコードヒント出るし。
ナ・ゲーヨ
ちゃんとした変数名をつけておけばバグが減る。 コピペすれば長さなんて関係ない。変数名をコピペせずに打つヤツは つまんないバグで悩まされる苦労を知るべし。
540 :
Now_loading...774KB :2008/03/15(土) 13:18:19 ID:anbQEIyK
>>539 ていうか、コード補完のついたエディタを使えってことだよね
アドビの出してる命名規則って、ちゃんと統一されてる?
イベントハンドラなんか、onEnterFrameとかある割に
FlexだとXXXHandlerとか使ってたりするよね
onEnterFrameはLingoの名残だろうなぁ
>>542 そのコーディング規則って8割がた一見マトモだけど残りの2割がツッコミ所満載だからな
変数宣言は使う直前にしろ(関数の先頭にまとめてはいけない)とか、
3重forループとか2重for-inループしたい時のループ変数名が足りないとか、
switch文の中身の書き方とか・・・
変数宣言は使う直前にするってのは、最近の言語では割とポピュラー。 使う場所と宣言する場所が離れてると、かえって読みにくいから。 その代わり、内部的には変数の宣言は、そのfunctionの先頭に自動的に移動してるっていう仕組みがある。 ホイストだったかな?そんな奴。 他は知らん。それで手が止まるとか腹が立つなら好きに書け。
でもJavascriptやASで関数先頭で宣言するのは、ブロック単位のスコープがないからでしょ。 AS3もブロック単位じゃなくて関数単位じゃなかったっけ?
546 :
sage :2008/03/16(日) 23:42:04 ID:Pi69iFVC
as3最高だ。 今Flash買ってきて触ってるけどas2より習得簡単そう。 Processingにそっくりでjavaにも似てる。 俺美大生だけどこれならプログラマーじゃなくても習得できるんじゃないか?
そうね、それだけの技量があったら.netでWindowsアプリも作れるから Web業界よりもいい仕事に就けると思うよ。
他の言語だと上には上がいるから Web業界のほうが、もてはやされていいんじゃない。
549 :
Now_loading...774KB :2008/03/19(水) 00:05:54 ID:/B8AeCR3
>>546 processing使えて、as3できてビジュアルも強ければ、
ウェブならトップレベルの制作会社いけるよ、おめでとう。
俺中卒童貞ニートだけどこれならプログラマーじゃなくても習得できるんじゃないか?
中卒プログラマ ← めずらしくない 童貞プログラマ ←プログラマの9割が該当 ニートプログラマ ← ニートの定義が間違ってる
>>551 実は、在日極右ネオナチ売国奴だけどAS3に自信が持てた。ありがとう。
最近AS2.0から3.0に移りました。CS3で作成しています。 ゼビウスのようなシューティングゲームを作っています。 初期:stageに全てのデータ(Player,PlayerShot,Enemy,EnemyShot等)をaddChild 改良:stageにPlayerStage,PlayerShotStageというように新しいSpriteを作成してaddChild 各データはそこにaddChildで追加 改良によって表示順を制御して敵の弾が敵で見えなくなったりという問題を解決したのですが 結果初期と同じゲーム内容にも関わらず以前より処理落ちしてしまうようになりました 以前:平均25fps(30fpsで再生) 現在:20fps 個人的なイメージとしては各ステージを追加する事によって絵でいうレイヤが増え 毎回5枚(Player,PlayerShot,Enemy,EnemyShot,Field)分描画するようになったから 処理落ちの度合が強くなったのかと予想しました。 改善方法を検索したりゲームサンプルFLAファイル等探してみましたが 目ぼしい改善方法が見つかりません。 描画している量は同じなので何とかできないかと考えているのですが 初心者にありがちな 「stageへのSprite等の追加時」の設定や 描画速度を気にするなら設定した方が良いプロパティ等はありませんでしょうか? 参考サイトだけでも良いので教えて頂きたいです。 よろしくお願いします。
プロファイルっぽいものは提供されてないんだっけ? こういうのはMSの方が開発の歴史が長い分、強いよな。 どこが重いかはプログラムをみてみないことにはわからないけど FLAをうpする気はないでしょ? というわけで、まずどこで速度低下が発生しているのか=どこが 最も負荷が高いのかを調べることから始めるのが一般的な手段。 関数単位で関数呼び出しの前と後での時間差を測定する、とかだね。
シューティングゲームだったら負荷のほとんどは当たり判定のような気がする
AS3で弾幕シューやってるひとはそこそこいるからそのへん参考にするといいよ
ちゃんとやれば60FPSでもそれなりに動く
処理が重くなるのは、描画>>>当たり判定>インスタンス生成なので、
描画だけでもなんとかすれば30FPSは十分出せるはず
描画処理はBitmapData+copyPixelsを使うと大幅に軽くなる
ついでにBitmapDataを当たり判定にも使うとさらに軽くなる
ただし、copyPixelsなので回転処理とかは使えないから
回転拡大させたいものだけSprite、弾とか単純なものはBitmapDataに描画とするか、
予め回転させたBitmapDataをつくっておくといい
実装例とか
ttp://d.hatena.ne.jp/nemu90kWw/20051103/p1
>>553 とりあえず
100fps以上で再生させるとかは試してみた?
もしそれでfpsが改善するのであれば、
そもそも処理落ちが原因じゃないってことになるし。
基本的に画面描画が一番負荷の高い処理 なので画面上のキャラを一回り小さくするだけでもけっこうサクサク動いたりする あと、alpha演算とか無意味に使うとそれだけで負荷がけっこう大きい 再描画領域の表示とかしてみてなるべく小さい領域の変更になるようにするのが吉
559 :
553 :2008/03/19(水) 12:34:34 ID:0e65C5Oj
たくさんのレスありがとうございます。どの解答も大変参考になります。
>>554 どこが重いかというとやはり描画処理になるのでしょうか
EnterFrameで実行している関数は一つで
その関数内はメイン関数が4つだけ
各関数の前後にgetTimerを置いて時間を取ってみましたが
合計でも10msを超える事はほぼありませんでした。
処理落ちが発生する場所でも同様なので
作成したスクリプト以外?の所が高負荷になるのではないかと思っています。
>>555 自機への当たり判定を消してみましたが、改善しませんでした。
>>554 へのレスでもあるように記述部分での高負荷はないと思っています。
>>556 参考サイト拝見させて頂きました。
正直実際に組み込んでみないとわからないのですが
既存のMC生成からBITMAPでの明確な描画にシフトするという認識で大丈夫でしょうか
MCを生成する考えはAS2から変わっていなかったので挑戦してみようと思います。
560 :
553 :2008/03/19(水) 12:35:11 ID:0e65C5Oj
続き
>>557 100はゲーム自体がまともに動作しないので60fpsにしてみました。
処理落ちが50%を超えてしまいました。
>>558 単体での整備ですね。
素材レベルではあまり意識してませんでしたがちょっと不要な部分を削ったり
縮小してみようと思います。
alphaは使うとガクガクでゲームにならなかったので触らないポリシーで開発してました。
ひとまず
>>556 さんのサイトのBMP処理を試してみようと思います。
沢山の解答感謝します。ありがとうございました。
背景を透明化せずにパブリッシュされたflashのfpsの設定を、あえて200くらいの高い値にすると、
実際のfpsが65前後で安定するのですが、これは自分の環境だけなんでしょうか?
他の環境の人もそうなのか意見を頂きたいです。
http://swfup.info/view.php/8480.swf 右上のステッパーで10〜200の範囲で「fpsの設定(stage.frameRate)」を変更、
右下のfpsが「実際のfps」です。
>>561 1000以下くらいでは65fpsでほぼ安定してた
563 :
561 :2008/03/20(木) 22:58:10 ID:26c6hpY5
>>562 レスありがとうございます!
http://d.hatena.ne.jp/ono36/20071213/p1 ↑のブログやそのリンク先で指摘されているような
ブラウザ上で再生するflashの、実際のfpsが遅くなる問題ってのがありますけど、
もしstage.frameRateをわざと高く設定するだけで、多くの環境で安定して60fps前後が出るのであれば
現状、高fpsで再生させる作品(ゲームなど)を公開するときに有益な方法ではないのかな?と思ってるんですが…
やればわかると思うけど、どれだけ高く設定しても限界はある 処理がたくさんあったらできないものはできない どういう処理してるか知らないけど、たかだか1000個で重くなるようじゃ 高負荷のゲームで安定するわけがない ちなみに、IEやFFだと65くらいで安定したけど OperaとかローカルのFlashプレイヤーだと普通に限界突破する(プレイヤーの差)
糞プログラマばっかだなw
566 :
Now_loading...774KB :2008/03/24(月) 14:14:35 ID:XfGaRNxR
attachMovie が addChild に変ったなら duplicateMovieClip は何になるの? 同じ絵のMCを複製してたくさん貼りたいんでつ
>>566 消えたんじゃない?
それにaddChildで問題ないでしょ。
addChildは複製にはならんでしょ。Javaのcloneメソッド的なものがどっかにあると思う
ごめん無いみたい。newするしかないのかな。
レスどうもでつ インスタンスを配列にし複製してみました みんなもこの手法だよね?
http://www.getbloom.com/ このhaxeをコンパイラに使ってProcessing風のコードを
ActionScriptで実現するプロジェクトキースピーターズの
ブログで紹介されてたよ。
まだまだ機能的には少ないけど、面白い事になってきた。
つまり どういう事ができるん?
573 :
Now_loading...774KB :2008/04/21(月) 14:31:52 ID:Q6lBhv4a
ちょっとききたいんだけど、hogeって名前のパッケージを作ろうとして <hoge.as> package hoge{ class fuga{ function fuga(){//コンストラクタ } } } ってやって、それを同じフォルダのtest.flaで import hoge.* myFuga=new fuga(); ってやればいいだろうと思ってそう書いたけど、hogeが見つからないと エラーになってしまう。 パッケージを読み込むときって、どう記述すればええのん?
同じフォルダは同じパッケージに属してないとダメなんじゃね。 トップレベルの無名パッケージから読み込みたいなら その下の階層にhogeフォルダを作ってhogeパッケージの中身 おかないと。そんな感じじゃない?
575 :
573 :2008/04/21(月) 15:23:40 ID:Q6lBhv4a
>>574 今それやってみて、読み込みはできたんだけど、これって
AS2.0とおんなじだから、package{class{メンバ}}の意味なくね?
パッケージとその中身を、ひとつのasファイルに書くための
方法だと思ったんだけど。
利点がどっかのサイトに書いてたと思うな
577 :
Now_loading...774KB :2008/04/22(火) 00:35:16 ID:mQw92g++
>>575 internal classとか使わないの?
便利なのに。
パッケージは名前空間の衝突を防ぐ事が主目的じゃないかな。
579 :
Now_loading...774KB :2008/04/22(火) 20:09:19 ID:MUc1EaHn
質問です。windows版FlashCS3です。
オーサリングで作成した複数のMCに、ひとつのクラスを割り当て(いわゆるリンケージ)ようとしています。
通常の方法ではできないというので、
ttp://f-site.org/articles/2008/01/17053315.html を参考に、こうしてみました。
・SlideText.as
package myPackage{
import flash.display.*;
import flash.utils.*;
public class SlideText extends MovieClip{
//メンバの記述
}
}
・myMovie.fla
ライブラリ名「moji1」を、クラス名「moji1」、基底クラス名「myPackage.SlideText」
とし、ステージに「moji1_mc」の名称で配置。
以下、「moji5」まで同様に設定、配置する。
これでパブリッシュすると、このようなエラーが出ます
場所:SlideText.as 行1
内容:5000:クラス'myPackage.SlideText'は'flash.display.MovieClip'をサブクラスとする必要があります。同じ型のライブラリシンボルにリンクしているためです。
このエラーが5個出てきます。エラーメッセージが言わんとしていることがさっぱり分かりません。
どなたか対策をご教授お願いします。
>>579 パス通ってなんじゃね?
SlideText.asは、myPackageってフォルダの中に保存してる?
>>578 パッケージの目的はそうだけど、
パッケージ構成と同じようにフォルダを作らなければいけないのは、
Javaの仕様をそのまま踏襲しただけだじゃないかな。
その仕様も昔は意味があったのかもしれないけど、今はあまり意味がないと思う。
582 :
579 :2008/04/23(水) 00:39:22 ID:ahTGSbOM
>>580 ライブラリのリンケージパネルで、クラスのチェックマークをクリックしたところ
「クラスを見つけました」的なメッセージは出てくるので、パスは通っていると思われます。
もちろん、myPackageフォルダの中にSlideText.asを配置しています。
583 :
Now_loading...774KB :2008/04/23(水) 01:06:22 ID:QaBYM9AU
>>581 ていうか、クラス名と同じファイル名という制限があるために
同じフォルダに違うパッケージで同じ名前のクラスを置けないわけで、
どうころんでも、完全に自由には配置できないのでは。
それにビルドファイル構成するのにすべてのファイルについて
フルパス書くの面倒だと思う。
584 :
579 :2008/04/23(水) 13:00:19 ID:oyq9PHsm
自己解決しました。原因は 「SlideTextクラスのコンストラクタがpublicになっていなかった」 ということでした。 as3はコンストラクタにもいちいちpublic等をつけないとならないのですね。 (しかし、privateのコンストラクタなんてあるんだろうか)
つSingleton
>>584 as3のコンストラクタはデフォルトでpublicじゃなかったっけ?
たしかpublic以外にできなかった気がする
だからprivateにしてSingletonにするのも無理だったと思う
CS3/Windowsです。 今まではメインタイムラインのフレーム上にスクリプト書いてたんですが APIのサンプルなんかはドキュメントクラスを使った例が多いことから クラスを使った記述に書き換えてみたんですが、階層化したクラスを行ったり来たりする感じの記述で 結果としてタイムライン直書きしてたときよりも処理速度が遅くなってしまいました。 これは記述方法が良くないのでしょうか、それともプログラム規模によっては そういう事も起こりうるものなのでしょうか・・・
>>584 privateのコンストラクタあるよ、Mathクラスとか。
staticでアクセスするだけだからだろうね。
>>589 そうだったか、失敬。
何か他の言語とムードンコ。
591 :
Now_loading...774KB :2008/04/23(水) 18:22:58 ID:oyq9PHsm
>>584 ですが、別件で詰まってしまった場所がありましたので、
質問させてください。
ビットマップをSpriteに描画し、それにアルファチャンネルのグラデーション塗りを施そうとしています。
(つまり、ビットマップの端をだんだんと透けさせたい)
Spriteに描画するまでは上手くいったのですが、「アルファチャンネルの塗り」を
施す方法がわかりません。
//myLoader:Loaderに、ビットマップ画像をロードしてきた後の処理です
mySprite:Sprite = new Sprite();
var myBitmapData:BitmapData = new BitmapData(myLoader.width, myLoader.height);
myBitmapData.draw(myLoader);
var myBitmap:Bitmap = new Bitmap(myBitmapData);
mySprite.addChild(myBitmap);
このmyBitmap(あるいはmyBitmapData)に、だんだんと透ける(できなければ、だんだんと特定の色にする)
効果を与えたいのですが、どうすればいいでしょうか。
※あらかじめグラデーション塗りのMCを作っておいて、アルファマスクとして使うこともも考えたのですが、
myLoaderで読み込む画像のサイズが不定なので、あきらめました。
myBitmapDataを直接いじればいいんじゃないの? 同じ大きさのグラデーション塗りBitmapDataを生成してmargeするとか もっといい方法ある気もするけど。
>>591 Sprite⇒BitmapDataしかやったことないが
createGradientBoxとか
beginGradientFillとかでなんとかならね?
594 :
Now_loading...774KB :2008/04/24(木) 02:09:01 ID:7cyXgkKo
>>591 いうとおり、グラデーションかけたShapeをつかってマスクするのが結局楽かと。
画像の大きさが不定でも、getRect()とかでなんとかなる。
同じSpriteにaddChildして、BlendMode指定でオK
595 :
591 :2008/04/24(木) 18:31:41 ID:SVPOxGTW
お答えいただきありがとうございます。
>>592-593 の方法でやってもなかなかうまくいかなかったので、
>>594 の方法を試してみたところ、なんとかグラデーションマスクが
掛かるようになりました。
(getRectが上手くできなかったので、マスクをかけたいLoaderの
widthとheightをそのままマスクMCにあてはめ、cacheAsBitmapで
ビットマップにし、mask属性を与えました)
ありがとうございました。
>グラデーションかけたShapeをつかってマスクするのが結局楽かと。
これはつまり、自前で長方形と塗りを描画するということでしょうか。
私は面倒がってMCに長方形を描いて、それをaddChildしましたが、
Shapeを使うほうが一般的なのでしょうか?
質問です。
Flex Builder3を使ってmxmlアプリケーションを書いています。
traceで文字列をコンソールに出力したいのですが、なぜか出力されてくれません…
どこがおかしいのか教えてください(><)
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml " layout="absolute" initialize="onInit()">
<mx:Script>
<![CDATA[
private function onInit():void{
trace("(・∀・)");
}
]]>
</mx:Script>
</mx:Application>
>>597 デバッグモードで実行したら出力されました。
本当にありがとうございました。
XMLを読み込んでデータを取り出すクラスの作成を行おうとして、以下を作成しました --XMLLoad.as----------------------------------------- package { import flash.display.*; import flash.events.*; import flash.net.*; public class XMLLoad extends MovieClip { public var XMLdata:XML; public function XMLLoad() { const IMAGE_LIST_XML_URL = "data.xml"; var request:URLRequest = new URLRequest(IMAGE_LIST_XML_URL); var xmlloader:URLLoader = new URLLoader(); xmlloader.addEventListener(Event.COMPLETE, completeHandler); xmlloader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); xmlloader.load(request); function completeHandler(event:Event):void { XMLdata= new XML(xmlloader.data); // 読み込んだXMLデータを書き出す trace("\n 読み込んだXML"); trace(XMLdata); } function ioErrorHandler(event:Event):void { trace("ioErrorHandler: " + event); } } } }
続き flaの_rootに 下記を記述して、同一フォルダにdata.xmlファイルを置いて プロパティのドキュメントクラスにXMLLoadを指定してプレビューします --- _root ------------------------------ var test:XMLLoad = new XMLLoad() //取り出したXMLデータを書き出す trace("\n取り出したXML"); trace(test.XMLdata); -------------------------------------- すると、下記のように出力されるのですが、これは・・・クラスの作り方が悪いのでしょうか? それとも、読み込んだXMLはcompletehandler内で処理するしかないのでしょうか (読み込みが終わってから、処理するから?処理順を考えないといけない?) すいませんが御教授願えませんでしょうか、よろしくお願いします。 ------出力結果------------------------ Error: Error #2136: SWF ファイル ・・”swfファイルパス”・・には無効なデータが含まれています。 at XMLLoad/::frame1() ◆読み込んだXML ”ここには読み込んだxmlが表示される” --------------------------------------
602 :
599 :2008/05/08(木) 06:21:29 ID:R74MY3xc
data.xmlは以下です
・・と貼り付けようとしたんですが、掲示板だと表示されないようですので
参照したサイト このページにあるdata.xmlと同様です
ttp://www.project-nya.jp/modules/weblog/details.php?blog_id=405 (もともとxmlを使ってみようかなと、このサイトと同じようなメニューを作ってみようと思ったのが発端です)
600の結果ではエラーを出力したのちに、宣言部<?xml ver・・・ を除いたものが出力されます。
指摘をいただいて、そういえば宣言部があるとAS3はだめとかどっかでみたような?
と、思い消して実行もしてみましたが結果は変わらずでした
よろしくおねがいします
>>602 >>プロパティのドキュメントクラスにXMLLoadを指定して
これを外してみて?
あと、_rootの
trace(test.XMLdata);
は、ロードが完了しない内にアクセスしてると思う。
604 :
Now_loading...774KB :2008/05/10(土) 18:57:54 ID:0mbTTmKs
windowsXP、CS3を使用しています 百枚程度の画像を縮小し、xy座標をrandomで指定して画面上に散りばめ、マウスオーバーしたら setChildIndexのnumChildren-1指定で最善面に来るようにしているのですが 画像の大きさを故意にバラバラに縮小している為、大きめの画像の下に小さく縮小された画像が隠れてしまった時 小さくなった画像のロールオーバーができなってしまいます これを解消する方法などありませんでしょうか、アドバイス等お願いします
>>604 各画像のMOUSE_OVERイベントじゃなくて
マウスのMOUSE_MOVEイベントで各画像にhitTestPointループさせて判定するのはどう?
606 :
Now_loading...774KB :2008/05/10(土) 22:59:21 ID:LRau4nc+
607 :
599 :2008/05/11(日) 00:44:57 ID:4yO+ZRQ1
>602
回答ありがとうございます
プロパティのドキュメントクラスのXMLLoadを外したところ、出力結果が以下になりました
(ドキュメントクラスを指定する、しないがあるんですね ありがとうございます
ttp://www.adobe.com/jp/devnet/flash/quickstart/external_files_as3/ )
------出力結果------------------------
取り出したXML
null
◆読み込んだXML
”ここには読み込んだxmlが表示される”
--------------------------------------
nullと出てるということはご指摘の通り、ロードが完了しないうちにアクセスしてそうです
試しに、timerを使って3秒後に表示させた場合は意図したとおりに表示されました
・・・結局XMLを読み込んだ判定がいる。
となると結局当初のリスナー内で読み込み判定したあとにXMLを利用するのが本道か?
そもそも、自分のソースの書き方がオブジェクト指向を分かってないような気がしてきました・・
ちょいと考え直そうと思います
ありがとうございました
608 :
599 :2008/05/11(日) 00:45:45 ID:4yO+ZRQ1
アンカミス >603 です失礼しました orz
>>605 >>606 返信ありがとうございます
ENTER_FRAMEを指定して、指定先関数で
hitBoolean = 画像スプライト.hitTestPoint(stage.mouseX, stage.mouseY, true);
if(hitBoolean) {
setChildIndexのnumChildren-1処理
}
という形で、隠れていた小さい画像の上にマウスを置いた時、一瞬前に出るようになりました
かなりあやふやな感じで打ってみたので、もっと構造を色々と調べてみます
610 :
Now_loading...774KB :2008/05/17(土) 18:28:24 ID:E6skk/uD
不要なオブジェクトはnullで参照を切るという事ですが int型などnullを格納できない物なのはどうやって参照を切るのでしょうか? そもそもプリミティブ値はそういった事は必要ないのですか?
>>610 スコープが小さければ問題ないんじゃない?
クラスの中で用いてるint型などのプリミティブなデータ型は インスタンスの参照が無くなってガーベジコレクトされる 時に一緒にメモリ上から削除されるから、インスタンスの 参照のようにプログラムの側から参照を切る必要性って ないんじゃない。
たしか関数脱出時に勝手に削除されるんでしょ。
614 :
610 :2008/05/18(日) 18:21:13 ID:Anzodhzb
みなさんありがとうございます プリミティブ値を含むインスタンスの参照を切れば良いみたいですね
nullやremoveChildの使い方なのですが ・クラスの中で function aaa():void { for(var i:int=0; i<100; i++) { var s:Sprite = new Sprite(); s.graphics.beginFill(0x000000); s.graphics.drawRect(i * 20,0,10,10); s.graphics.endFill(); container.addChild(s); //containerはコンストラクタの引数からタイムラインのthisを参照 } bbb(); } function bbb():void { あれこれ処理 ccc(); } function ccc():void { aaaのSpriteが必要無くなり全部消したい } cccでaaaで生成したSpriteを消したい場合です 以前上記と似たような処理をした時は、flashの内容上配置したSprite郡は最後まで表示(放置)だったので 実際今消そうとするとどうすれば良いのかが思いつきません。。。
>>615 それ、CCCで消したら、表示される前に消しちゃうんじゃない。
617 :
615 :2008/05/20(火) 00:21:13 ID:c86SWJ1P
>>616 すみません、ちょっと変えてみます
function bbb():void {
あれこれ処理
container.addEventListener(MouseEvent.CLICK, clickHandler);
}
function clickHandler(e:MouseEvent):void {
ccc();
}
function ccc():void {
aaaのSpriteが必要無くなり全部消したい
}
こんな場合(マウスクリックした時にaaaの100個のSpriteを全部消したい)です
自分なら containerに入っているのがsのSpriteだけならcontainer内の子を 全てremoveChildする containerに他に消したくないのもあるなら、配列にsへの参照を保存 しておいて、cccでremoveChildするかな
removeChildだけじゃ非表示になるだけなんじゃね? 配列で管理するのはいいと思う
620 :
615 :2008/05/20(火) 19:27:31 ID:c86SWJ1P
実際に615&617の一部を下記のように修正して打ってみました function aaa():void { for(var i:int=0; i<100; i++) { var s:Sprite = new Sprite(); array[i] = s; s.graphics.beginFill(0x000000); function ccc():void { for(var i:int=0; i<100; i++) { container.removeChild(array[i]); array[i] = null; } } これでクリックした所Spriteの表示が消えました、 removeChildとnull渡しも成功?でこれでメモリからも削除という事なんでしょうかね
VBAで基本をちょっとだけ学んでAS 3.0に挑戦しようと してる俺は無茶な厨房ですかね。 まぁ厨房なわけですがorz...
どうせやるならC言語がいいよ。
625 :
Now_loading...774KB :2008/05/26(月) 14:53:10 ID:ZmOncFbN
タイムラインループで trace("hoge"); を繰り返し実行させるムービークリップシンボル(MC)を ステージにaddChildすると、当然"hoge"が延々と出力させるわけですが、 そのあとremoveChild(mc); mc=null;にしても mcは消えているのにtrace("hoge")が止まりません。何がいけないのでしょう?
>>625 removeChild(mc)としても表示リストから消すだけ
mc=nullとしても参照がなくなるだけ
traceが実行されているムービークリップはガベージコレクタによって回収されるまで存在する
タイムラインループならstop()させるとか
enterFrameならremoveEventListenerとして登録解除させるとかして
ムービークリップの中の実行を止めないといけない
627 :
Now_loading...774KB :2008/05/26(月) 15:12:51 ID:ZmOncFbN
迅速にして的確なご回答、ありがとうございます! なるほど、stop();しなきゃいけなかったんですね。 どうも基本がわかっていなかったようです。
CS3でAS3を触りはじめたのですが、 ムービープレビュー時のデバッグ->変数のリストアップがバージョン情報以外何も出力されません。 AS2では関数や変数など出力されるみたいなのですが… 何か変わったのでしょうか?
var s1:Sprite = new Sprite(); s1.graphics.beginFill(0x000000); s1.graphics.drawRect(0, 0, 300, 300); s1.graphics.endFill(); addChild(s1); var s2:Sprite = new Sprite(); s2.name = "ss" s2.graphics.beginFill(0x666666); s2.graphics.drawRect(0, 0, 180, 180); s2.graphics.endFill(); s1.addChild(s2); var s3:Sprite = new Sprite(); s3.name = "sss" s3.graphics.beginFill(0x999999); s3.graphics.drawRect(0, 0, 50, 50); s3.graphics.endFill(); s2.addChild(s3); こんな多重構造でs1を起点にs3のname"sss"を参照してs3に対して処理する、という事はできませんでしょうか? s1.getChildByName("ss").getChildByName("sss").visible = false; このようにしても「説明:未定義である可能性のあるメゾットgetChildByNameを、静的型flash.display:DisplayObjectの参照を使用して呼び出しました」 というエラーが出てしまいます
Spriteにキャストすればおk
>>630 ありがとうございます
ただ
s1.Sprite(getChildByName("ss")).Sprite(getChildByName("sss")).visible = false;
等とやってみたりしてみましたが、似たエラーが出てしまいます
「説明:未定義である可能性のあるメゾットSpriteを、静的型flash.display:Spriteの参照を使用して呼び出しました」
すみません、キャストのやり方が違うのでしょうか
>>631 無理に1行に書かずに一つ一つ書いて試したほうがいいと思うよ。
>>631 試してないけど、キャストの仕方まちがってね?
Sprite(s1.getChildByName("ss")).getChildByName("sss").visible = false;
ゲームを製作中なんですが、画像とMP3ファイルを直に見られないように簡単な偽装をしたいと思っています。 画像に関しては、LoaderクラスにByteArrayから読み込むloadBytesメソッドがあるのでこれを使えばよさそうなんですが、SoundクラスにはByteArrayから読み込むメソッドがありません。 MP3ファイルを偽装するにはどうすればいいでしょうか?
635 :
Now_loading...774KB :2008/05/31(土) 00:20:40 ID:lmiirBK0
ゲーム制作で行き詰っています 画像を沢山使いたいのですがソースが繰り返しで大量になってしまします。 例) [Embed(source='***001')] private var ***001:Class;...略(***002〜***100) private var selectImg:Array=new Array(100); 何か良い方法ありませんか?
遅くなるかもしれんが、getDefinitionByName使うとか。 まあ、ソース大量になるのはあきらめて、自分でスクリプト組むなり自動生成するのがいいと思うよ。
一つのクラスから派生クラスを10コくらい作りたいんだけど やっぱファイル分けないとダメ? Java の無名クラスみたいにちょっとだけ多態させたいだけなんだけど こういう時はダイナミッククラス使えって事かな
638 :
Now_loading...774KB :2008/05/31(土) 12:35:59 ID:lmiirBK0
ご教授ください。 ドキュメントクラスに設定したクラスから、 STAGEの幅と高さを取得したいのですが、アクセスできません。 package{ import flash.display.*; public class aaa extends MovieClip{ function aaa ():void{ var inix:int = this.stage.StageWidth/2; var iniy:int = this.stage.stageHeight/2; まだ、表示階層がよく理解できてないようです。。 解決法をご教授ください。
>>639 それでできない?
エラー内容とか教えてくれるとありがたい
>var inix:int = this.stage.StageWidth/2;
stageのsが大文字になってるけどそれは関係ない?
addChildしてないとstageにアクセスできないのはよくあること
>>640 さん
ありがとうございました!
まさにStageのSが大文字になってました。。超凡ミスです。はい。
System.totalMemoryで表示されるバイト数で、軽い〜重いの判断するにはどのくらいの数値を目安にすればいいのでしょうか? FLASHCS3のみを起動した状態でファイル→新規→Flash3.0ファイルを開き、タイムラインでtrace(System.totalMemory)した結果は 5619712 でした。 今作っているフラッシュの処理の最後止まった所でtrace(System.totalMemory)した結果は 10924032 でした。 これって通常の結果では軽いのか重いのかが・・・一応自分のPC上ではそれほど見た目カクカクしたり等はしていないようですが。
業務系のITから、FLASH業界に転職したいなぁと思ってるのだけど、 この業界って需要とか給料とかどんな感じざましょ??
冒険と開拓
>>644 底辺、やめとけ。上級SEにでも進んだほうがいいよ。
Flash業界なんてものが、そもそも無い。 IT系のサブカテゴリ的存在で、単体で稼ぐのは至難。 センスと、技術と、努力と、忍耐と、コネでも無い限り華やかな舞台には立てないし、薄給で終わるよ。 Flashも使える業務系IT屋なら、多少需要はあるかもだけど。
「需要も多いし給料もいい。待遇も言うことない」 なんて話は怪しいところ意外では聞かないな。 自分のがんばり次第だよ、どこの業界も
649 :
644 :2008/06/03(火) 22:38:19 ID:9OPSRkTD
プログラム好きなのに、滅多にプログラミングさせてもらえないのよ。 たまにPL・SQLとか書かせてもらって楽しい。 ACTIONSCRIPTで食っていけたらなぁと思うけど、 とんがったスキルないと厳しそうね。 中村勇ごととか、かこよすぐる。 あんな仕事にかかわりたい、センスないけど。 とりあえず帰って、チクチク作っていこう。
yugopはやばい
yugopはたまたまFlashで有名になっただけで、 あの人のスキルとセンスなら、何でもやってける気がする。
おっと、中村勇ごの悪口はそこまでだ。
653 :
Now_loading...774KB :2008/06/05(木) 16:53:50 ID:NN3Z+Kn1
>652 お前は中村勇のなんなんだ?
654 :
Now_loading...774KB :2008/06/05(木) 20:26:40 ID:NN3Z+Kn1
何という自演
中村勇語は俺の嫁。
658 :
Now_loading...774KB :2008/06/06(金) 21:42:28 ID:FYqI4yqT
デベロッパの狭い価値感から抜けせば蛙男の方が普通にすごいと思うよ
なんなんだろうね。最近2chのあちこちにスパムしてる このなんたらってのは。
660 :
Now_loading...774KB :2008/06/12(木) 13:03:05 ID:1kdaTOML
外部画像を読み込んで、その画像をリサイズして、部分部分を別の転写するといった事をしてみたいのですが 転写した画像の大きさは拡大されておらず、読み込んだ時の元の画像サイズのままで転写されてしまいました //Event.COMPLETE後 var loadBitmap:Bitmap = Bitmap(loader.content); loadBitmap.width = 600; //リサイズ loadBitmap.height = 600; //リサイズ bmp.bitmapData.copyPixels(loadBitmap.bitmapData, rect, new Point(0, 0)); テストでリサイズ後にloadBitmapからBitmapを生成してaddChildすると、リサイズされた大きさで表示されたのですが bmp2:Bitmap = new Bitmap(loadBitmap); addChild(bmp2); どういった訂正が必要なのでしょうか
ようわからんけどMatrixで倍率計算してdrawすればいいんじゃね? var matrix:Matrix = new Matrix() matrix.scale(600/loadBitmap.width, loadBitmap.height) bmp.bitmapData.draw(loadBitmap.bitmapData,matrix)
662 :
660 :2008/06/12(木) 18:03:18 ID:1kdaTOML
>>661 ありがとうございます、自分でも色々調べてみましたが縮小拡大や回転等の操作はdrawでないと無理っぽいですね・・・
draw処理は結構重いという話を聞き、copyPixelsを使用してみましたがまた考えてみます
続けての質問ですみません
自分の想定していた処理が、
>>660 のように1枚目の画像を読み込み転写して
その後時間を置いて2枚目の画像を読み込み、1枚目を転写したbitmapDataにdispose()でメモリ開放し、2枚目の画像をそのbitmapDataに転写、3枚目の画像を・・・
という流れでやりたかったのですが、2枚目を転写する所でPCがフリーズ寸前のような重さになってしまいます
PV3Dと併用(静止したPlaneの中にあるBitmap.bitmapDataに転写している)のも原因かと思いますが、転写→開放→転写という処理は
これくらい重くなって当然なのでしょうか、それとも的確な処理をすればもっとスムーズな処理ができるものでしょうか?
>>662 >1枚目を転写したbitmapDataにdispose()でメモリ開放し
ここの意味が俺には理解できないが、たぶんdispose()の使い方が間違ってると思う
dispose()削除したら普通に動く?
664 :
660 :2008/06/12(木) 21:05:12 ID:1kdaTOML
>>663 すみません、フリーズ並の遅い動作中にエラーがでていました、disposeを指定している行を消してみた所
それ程重くもなく想定した動きができました、ありがとうございます!
ただこの流れで数枚画像を読み込んだ辺りで、やはり処理が重くなってしまいます(先に転写した画像が後に転写した画像の下に重なって表示されています)
この先に転写した画像を消すなどして動作を軽くする方法などはありませんでしょうか
ググればある
助けてくださいませ。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml " layout="absolute">
<mx:Label x="129" y="193" text="ラベル"/>
<mx:Script>
<![CDATA[
var telll:XML=new XML();
telll= ★★★
<a>
<b>
<c>a</c>
</b>
</a>
trace(telll.b.c);
]]>
</mx:Script>
</mx:Application>
★行で「未定義のプロパティtelllへのアクセスです」とエラーになります。
一行上で宣言してるのに。。。!!!!
すいません、インデントおかしいのでもう一度
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml " layout="absolute">
<mx:Label x="129" y="193" text="ラベル"/>
<mx:Script>
<![CDATA[
var telll:XML=new XML();
telll=
<a>
<b>
<c>a</c>
</b>
</a>
trace(telll.b.c);
] ]>
</mx:Script>
</mx:Applicati
あれ、FlexBuilder持ってないからCS3でやったけど普通に通ったよ あえて言うならセミコロンのつけ忘れ位か
>>669 単純な下のコード
var aaa:String="oo";
trace(aaa);
でも「未定義のプロパティ・・」とか
でるみたいで。。なんかぶっこわれているのかもです。。
再インスコします。
ありがとうございました。
>>670 ファイルのエンコーディングが間違ってるときも未定義のプロパティ云々って言われたりするので注意。
672 :
Now_loading...774KB :2008/06/22(日) 21:45:26 ID:wQ5YXPSb
3.0でeval関数やセットプロパティ関数みたいに、ストリングを渡してやると、オブジェクトの参照が返ったりオブジェクトを宣言出来る関数かクラスってありますか? ない場合はどんな感じで作ればいいですか?
>>672 getDefinitionByName ()
674 :
Now_loading...774KB :2008/06/25(水) 13:59:39 ID:jhM59jD5
>>673 遅くなりましたが、試してみました。
それだとclassの名前しか取得出来ないです。
var suji:int=1234;
trace(getDefinitionByName("suji"));
だと、sujiは未定義ですって出力されます。
trace(getDefinitionByName("ar"+"ray"));
だとclass arrayと出力されます。
もう他にはないっぽいですか?
var suji:int=1234; trace(this["suji"]); 俺は、あまりこういう書き方しないけどね。 配列に入れちゃうかな。
オブジェクトというか、表示リストの子だったら、getChildByNameってのがなかったかな?
あとは
>>675 さんのように配列アクセス演算子使っちゃうかかな?
677 :
Now_loading...774KB :2008/06/29(日) 15:34:34 ID:YC+bZKQ+
>>675 、676
this[]で宣言も出来たんですが、データ型は指定できないですね。
var mc1:MovieClip=new MovieClip();
var mc2:MovieClip=new MovieClip();
var mc3:MovieClip=new MovieClip();
(
)
var mc99:MovieClip=new MovieClip();
var mc100:MovieClip=new MovieClip();
見たいな宣言をfor文で効率よくやりたかったんです。
宣言さえしてしまえばあとからアクセスするのは配列で出来るのですけど、
宣言時にもっとスマートに書きたかったんです。
for(i=1;i<=100;i++){
var "mc"+i:MovieClip=new MovieClip();
}
といった感じに。
for(i=1;i<=100;i++){
this["mc"+i]=new MovieClip();
}
一応これで通ったんですけど、なんとも重くなりそうで。
>>677 ちょっと説明不足だったかもしれないけど、
>>675 みたいな一文が出てきたら可読性を上げるために、俺だったら配列にしちゃう、
という事が言いたかった。
つまり、俺だったら、以下のように書く。
var mcs : Array = new Array();
for ( var i : uint = 0; i <= 100; i++) {
mcs[i] = new MovieClip();
}
AS3の配列はデータ型指定できないけど、
使うときに以下のように取り出せば、MovieClip型で使える。
for (var i : unit = 0; i <= 100; i++) {
var mc : MovieClip = mcs[i] as MovieClip;
}
679 :
Now_loading...774KB :2008/06/29(日) 23:06:15 ID:d0ZHUrEN
ばかでもわかる Flash CS3 ActionScriptの入門書ってないの? どれも難しそうで... ちなみに、デザイナーがメインなので、それほど複雑なことはしませんが、
>>679 今のところタカヒロウ氏の著書が一番簡単そうだよ。
エッセンシャルAS3の日本語版はどうなったんだろか
684 :
Now_loading...774KB :2008/06/30(月) 13:41:17 ID:iTNlqReW
>>677 AS3ならDictionary使おうぜ
var dic = new Dictionary();
for(var i:int=0; i<100; i++)
{
dic["mc"+i]=new MovieClip();
}
trace( dic["mc100"] );
これでOK
>>684 それだったらkeyがString型だから、別にDictionary使う必要ないんじゃね?
686 :
Now_loading...774KB :2008/07/02(水) 12:05:28 ID:zCCxQPp3
わかんねえ! nullでない時処理させるってどーやんの? if ( ins != null ){//この時点でinsがnullだとエラー出やがる ins.removeListenerOn();//リスナー削除作業処理 ins = null; }
687 :
686 :2008/07/02(水) 12:21:20 ID:zCCxQPp3
すまん //この時点でinsがnullだとエラー てのは勘違いだった やりたい事は 現在登録されてるイベントリスナーを全部調べて 一括removeさせたいって事なんだけど なんかいい手はないの? willTrigger () とかEventDispatcher () とか hasEventListener () を使えばいいのか?? ヘルプのEventDispatcherExample.asイマイチわからん
定義してるremoveListenerOnメソッドに 登録される可能性のあるリスナーの削除を 全部書き下していく方法だと何かまずいことでもあるの?
689 :
Now_loading...774KB :2008/07/04(金) 10:43:33 ID:aFFX4npi
AS2で特定のMCの最後のフレームに↓こう書いて _parent.gotoAndStop( 1 ); 自動的に親MCの1fに戻る処理を AS3でやるにはどうすりゃいいの? 親MCの構造は1〜30fくらいまで各子MCがあり 各子MC内のアニメが終了したら 自動的に親MCの1fに戻る という構造でつ 子MCがたくさんあるので1個づつ全部currentFrameで監視するのは大変でつ 何かいい方法はないのかい
>>689 (parent as MovieClip).gotoAndStop(1);
ってことかな?
691 :
Now_loading...774KB :2008/07/04(金) 17:10:07 ID:9uJJAsbN
できますね
693 :
691 :2008/07/04(金) 18:30:21 ID:9uJJAsbN
>>692 beginGradientFill(この中の引数)の調整でできるのでしょうか
すみませんがご教授願えませんでしょうか、お願いします
Actionscript 2.0を独学で学んで少し使えるWebデザイナーです。 時代の流れから、なんとか3.0も勉強していきたいと思いますが「Flexを導入」したほうがいいでしょうか(個人的な意見でも参考になります) また、「Actionscript3.0関連の本」も読み漁ったほうがいいのでしょうか(2.0の本は誤字が多い気がしました) 現在はEclipseにActionscript2.0用のプラグインを入れて時間がある時に、本やブログを参考に仕事以外で開発(勉強)をしています。
連投、重複レス、スイマセン Actionscriptに力を入れるクリエイターはデザインにも常に力を入れていますか? 「インタラクションデザイン」という点ではFlashは可能性の広い素晴らしいアプリだと思いますが、 「人の生活に身近で豊かにするデザイン」という目的で考えると、Actionscriptだけ力を入れていくことに疑問を感じているのです。
釣れるといいな
何が言いたいんだ? 黙って仕事しろ。
なんだか良くわからんが、プログラマの仕事はプログラマに任せてデザインに専念しろって言われたよ
私はデザイナーです。 デザインを勉強した方がいいのでしょうか? デザイナーはデザインに常に力を入れていますか? デザインだけ力を入れていくことに疑問を感じているのです。
701 :
Now_loading...774KB :2008/07/06(日) 12:45:05 ID:xzS+UXTX
タイポグラファーみたいにデザインに絞らないと到達できない分野もあれば、 フレームワーク作れる人みたいに、コードに絞らないと到達できない分野もある。 yugopみたいに、両方バランスがとれてないと到達できない分野もある。 進みたい方向にあわせて比率を変えればいいんじゃね?
デザインセンス云々、プログラムセンス云々覚えるより、ホームページって、実際何をするかを上手に考えれる方が金になるよね…。
進みたい方向のほかに重要なものとして、進める方向というのもある。
yugoは「インタラクション」であって「デザイナーとしてセンスがあるか」とはまた別次元だと思う
705 :
Now_loading...774KB :2008/07/08(火) 18:32:23 ID:N/dX+0QR
オブジェクトごとセーブするのがわからん 教えて先生 soと hostNamuはコンストラクタで設定 public function dataSave( sData :Object ){//セーブ処理 so = SharedObject.getLocal( hostName ); var obj :Object = so.data; obj = sData; so.flush(); so.close(); }
おお 適当にやったら出来たっぽい! もっとスマートな手法があったら教えて先生 public function dataSave( sData :Object ){//セーブ処理 so = SharedObject.getLocal( hostName ); for ( var i in sData){ so.data[ i ] = sData[ i ]; } so.flush(); so.close(); }
707 :
Now_loading...774KB :2008/07/09(水) 11:27:11 ID:iMrkQFqk
public function dataSave( sData :Object ){//セーブ処理
so = SharedObject.getLocal( hostName );
so.data = sData;
so.flush();
so.close();
}
でいいんじゃね?
>>705 は
var obj :Object = so.data;
obj = sData;
が変。
708 :
706 :2008/07/09(水) 15:35:19 ID:gKTb9IMG
so.data = sData; ↑これができないから困ってんだ 1059: プロパティは読み取り専用です。 て出るんだ
so.data.data = sData;
1つのフォルダに数千のテキストファイルが入ってて そこからURLLoaderであるテキストファイルを読込もうとしています。 1つのフォルダ内のファイル数が多いと 読み込むのに時間がかかるのでしょうか? ActionScript3の問題ではないかもしれませんが 何かご存知でしたらご教授ください。
>>710 時間かかるよ。
電話かける事を想像してみればいい。ひとつひとつは小さくても、そこまでに繋いだり切ったりする手間が数千回分かかるわけだから。
同じ情報量のテキストを、ひとつのファイルにまとめた物を読み込む処理に比べたら、そこだけで数千倍時間がかかる。
712 :
710 :2008/07/11(金) 15:08:27 ID:IoviFMgV
>>711 あー、ごめんなさい!
読み込む必要があるのは数千のうち1つだけの場合なんです。
>>712 お、そうだったのか
サーバ側のディレクトリ情報のデータの持ち方を詳しく知ってるわけじゃないから正確なところは分からんや
Flashに限った事でもなさそうだから、web制作辺りで聞いてみるのがいいんじゃね?
714 :
710 :2008/07/11(金) 16:21:19 ID:IoviFMgV
>>713 お手数おかけしました。ありがとうございました。
ひとつの変数に、いろいろな関数を代入して実行したいのですが 何か方法はありますでしょうか? a = myFunc1; a(); // 実行 a = myFunc2; a(); // 実行
あ、これでいいのか。 ありがとうございます。
変数に関数が入るとは知らなかった・・・。収穫。
内部に addEventListener を設定したMCが、 いずれタイムラインから消える場合は removeEventListener しなくても良いですか? (対応イベントもMC内の関数)
>>719 MCを表示リストから消しても、Event処理は実行し続けてるよ
>>720 わ、本当だ!
気持ち悪い!
どうも有難うございました。
みんな日本語でおK? さっぱりわからん・・・ コンポーネントのTextAreaって外部txtファイル呼び込めないの? もう田舎に帰りたい・・・
俺・・・彼女が出来たら田舎に帰って結婚するんだ。 そんで花屋とか開いてさ・・・ 帰り道の女子高生とかに「こんにちわ〜♪」なんて言いながら・・・ 子供は3人くらい欲しいかな・・・
みんな疲れてんのな・・・
俺も田舎かえりてぇよ 都会なんか行くんじゃなかった 大学時代のあの子と結婚しとくんだった・・
配列に型がないってマジ? job[JobData.Yuusya].Job("勇者", 300, 100);を jobYuusya.Job("勇者", 300, 100);とかとやらなきゃいかんのか。
jobって関数はいったいどっからでてきたんだ
すまそ、それはユーザー関数(クラス)ね。 多次元配列は使えるみたいだからそれで代用するか。
job[JobData.Yuusya] = new Job("勇者", 300, 100); こういうことかな?
お前さんはAS3の前にまず日本語を学んでくることをオススメする
>>732 初期化は荒い(Array)書き方だが、配列で直接書き込んでしまう。
アクセスするときは、Job.abi[Job.Yuusya][Job.Hp]とかする。
public static const abi:Array =
[
["勇者" , 300, 50, 150, 150, 150, 100],
["戦士" , 350, 0, 150, 150, 50, 0],
];
>>733 質素なホームページだな。
スクショも体験版もない?から試しようがない。
>>733 安いし買ってみれば?
というか、Livedocで十分
×内容と ○内容
>>735 データはクラスのフィールドにしてJob.abi[Job.Yuusya].hpとかで
アクセスできるようにしたほうが効率いいんじゃないかな
>>739 フィールドと、メンバ変数とかの違いがいまだに分からん・・
それとどうやって初期化するん?↓とかは思いつくけど。
private static var job0:JOB_ABI_CLASS;
private static var job1:JOB_ABI_CLASS;
...
public static var job:Array = [job0, job1, ...];
後、能力値の方(2元目)も配列にすると、
for(j = 0; j < JOB_SUU; j++)for(a = 0; a < JOB_ABI_SUU; a++)
とかやって、表示するときやセーブするときなどに使いやすいかなと思った。
>>740 オブジェクト指向をちょっと学ぶか、そのまま独自の道を突っ走ればいいと思うよ。
>>741 AS3は解説サイトみたいなのが少なく、C#も勉強しているがさっぱり。
ゲーム自体は完成させられそうなので、ひとまずは独自の道をつっぱしるか。
743 :
Now_loading...774KB :2008/08/05(火) 13:00:37 ID:rLBqUfi0
>>742 AS3の教本はMaking Things Moveという本の日本語版を買うといいよ。
糞高いけどおすすめ。
俺はJAVAの入門書でオブジェクト指向勉強した。 AS3似てるし本とかネット情報も豊富
papervision3Dの質問はどこで受け付けてますか。 FLASH板、Web制作板では見当たらなかったもので…。
747 :
Now_loading...774KB :2008/08/08(金) 12:35:00 ID:HPaUECg/
>>747 ありがとうございます。
PV3D_1_7での質問です。
private var scene: Scene3D;
private var cube: DisplayObject3D;
上記で
scene.addChild(cube) した際にcube側でADDEDのイベントを発生させたいのですが、
当然のように
import flash.events.*;しただけでは動作しないようです。
このあたりかと思い
import org.papervision3d.events.InteractiveScene3DEvent
も追記しましたがやはりイベントが発生してないようです。
上記について、お助け願います。
>>749 何がすごいって軽さだよなw
3Dライブラリを自作して使ってるみたい
はいはい、エコだエコだ
Flex2で、ボタンイベントを作成しております。 これをクリック以外のタイミングで意図的に起動したいのですが。 hButton.addEventListener(MouseEvent.CLICK, oppai); public function oppai(ev:MouseEvent):void{ trace("おっぱい"); } ってな具合で、 oppai(new MouseEvent()); とやると「引数の数が正しくありません。正しくは 1 です。」 と怒られちまいます。なんとかおっぱい見たいのですが、 教えて下さい。
>>753 MouseEvent() が間違い
引数が必要
おれもおっぱい見たいです
MouseEventのイベントを直接呼び出したければ public function oppai(ev:MouseEvent=null):void{ ってやればいいんじゃない?
756 :
753 :2008/08/11(月) 10:45:28 ID:nXt/q0lM
>>754-755 御二方ありがとうございました!
どちらのやり方でもおっぱいを拝むことが出来ました。
BitmapDataからJPEG画像作成のために変換するJPEGEncoder.asなんて コードがありますが、これと同じように複数のBitmapDataから 動画ファイルを作成するありがたいコードってどこかにないでしょうか? 動画ファイルの形式はなんでもOK(要はYouTubeにアップしたい)
ねーよそんなもんw エンコードにどんだけ細かい種類と設定あると思ってんだw 単体のライブラリでどうこうできるもんじゃねーよw
760 :
758 :2008/08/16(土) 15:37:08 ID:NBN7YRP+
あ、いや、「どれも」じゃなくて 例えばAVI1つでもいいから作成できんかな、と
無圧縮AVIでいいなら自分で仕様見て作った方がはやいよ AVIの作り方なんて腐るほど解説がある
762 :
Now_loading...774KB :2008/08/19(火) 03:12:31 ID:gqp6u6F+
ECMA4なんてさっぱり意識してなかったヘタレだけど 大事そうですね なんか、シカトされてるようだやだなぁ・・
この際、Javaに近づけてくれ
ECMAとかよく分かってないんだが 独自路線で行くのか、3.1に準拠するかで 大きく変わりそうだな
3.1と4の違いがわからない俺には、痛くもかゆくもないぜ。
誰か3.1と4の違いおせーて
他の言語から入ってくる人に優しいか辛いかの話だろ? 俺的には独自路線でも別に問題ないな。
そのブログで語られているとおり、ECMA4に含まれるはずだった 名前空間(パッケージ)、静的な型宣言、継承などが3.1では無い(もしくは未定)なのよ Adobeにとっては、AS3のECMA4準拠をベースに、Tamarin (
途中で送信しちゃった Tamarinを流行らせ、さらにはAdobe AIRなどでこの業界のデファクトスタンダードになるつもりが その最初の一歩であるActionScript 3.0で躓くことになるかもしれないと思う MSのSilverlight(C#)がECMA3.1準拠で作られているかどうかは知らないけど・・
調べてみたらちゃんと現行のECMA3.0準拠で、3.0からの正当な進化っぽい3.1にはそのまま移行できそうだね>C# 逆に4.0は3.1との互換性が完全に全くなくなりそうだから、ASはこのまま独自路線を突っ走るか、中途半端にECMAに似せるか まぁ今はAdobeが何かしら発表するのを待つしか無いのかな
>>762 のリンク先にも書いてあるけど、これはECMAScript準拠をやめるいい機会でしょう
>private コンストラクタや関数オーバーロード機能の実装など
みたいな、より便利な機能が実装される方がこのまま準拠続けるより遥かにいい
まあクロージャ使えば現状のECMAScriptでも、 クラスベースの言語に出来るような事は大概できるんだけど どちらかというと、コンパイラによる最適化やチェックが きくところがActionScriptのメリットになっていきそうだね
よく分からんが、CS3買った自分が 涙目になるほどでは無いってことでOKなんでしょうか?
うん今すぐどうこうなる事じゃないよ でもこれが長期的に見た場合のターニングポイントにはなるだろうね
俺はいやだー!
>>777 どうもです
namespaceとか使いこなしてない(勉強中)なんで、どうしたものやらw
こらっ、そこの怪しい奴!! ちょっと事務室まで来い。
質問させてください。 Loaderから読み込んだ画像を縮小したくて、Loader.widthで 小さくしようとしているのですが、 Loader.widthを設定(★箇所)すると、画像が見えなくなってしまいます。 ★箇所をコメントアウトすると、画像が見えます。 アドバイスよろしくお願いします。 package { public class test02 extends MovieClip { public function test02(){ //Sprite var sprite:Sprite=new Sprite(); sprite.graphics.lineStyle(2,0x000000); sprite.graphics.beginFill(0xBBBB); sprite.graphics.drawRect(80,50,200,300); sprite.graphics.endFill(); sprite.x=30; this.addChild(sprite); //loader var url:URLRequest= new URLRequest("img/image07.jpg"); var Loader01:Loader =new Loader(); Loader01.load(url); sprite.addChild(Loader01); ★★ Loader01.width=15;
>>781 読込が終わっていないのかも
読み込み終了のイベント拾ってから処理するのでは
>>782 san
まさにその通りでした。
ありがとうございました!
var hoge:Object = new Object(); var hoge:Object = new Object(); こう書くと変数名が重複とエラーがでるのに for (var i:int = 0; i < 10; i++ ){ var hoge:Object = new Object(); } こう書いたらエラーがでない なぜなんでしょうか
>>784 for文を一回行うごとに宣言してはスコープ範囲外になって消えてるんじゃないか
推測だけど
>>784 AS3では関数中の変数宣言はコンパイル時によって関数の最上位に移動される。
つまり後者は
var hoge:Object;
for (var i:int = 0; i < 10; i++ ){
hoge = new Object();
}
と同等。よって変数の定義は重複していない。
>>785 AS3にブロックスコープはありません
787 :
Now_loading...774KB :2008/08/31(日) 21:09:54 ID:3LhJ0Cg+
function test():void{ function do():void{ trace("test"); } } do(); を呼び出したいのだけど どうしたらいいんですか?
>>787 おれならこうする
public var function_do:Function;
function test():void{
function_do=do;
function do():void{
trace("test");
}
}
としておけば呼び出したいところからfunction_do();でいけんじゃね?
789 :
Now_loading...774KB :2008/09/01(月) 16:22:43 ID:PrURlSni
790 :
Now_loading...774KB :2008/09/01(月) 19:59:40 ID:PrURlSni
var bgm0:Sound = new BGM0(); var channel0:SoundChannel = new SoundChannel; function SoundPlay(_channel:SoundChannel,bgm:Sound){ _channel = bgm.play(); } function SoundStop(_channel:SoundChannel):void{ _channel.stop(); } SoundPlay(channel0,bgm0); SoundStop(channel0); とやると、 サウンドがなって、すぐとまるようにしたいのですが、 サウンドがなりっぱなしになってしまいます。。。 どうしてかわかりますか?
791 :
Now_loading...774KB :2008/09/02(火) 02:19:56 ID:gh2ur3XO
>>790 これがなぜか
SoundPlayを呼んだあとでも、channel0は最初にnewした部分を指しているんだな。
SoundPlay内のsoundchannnelオブジェクトとは別物。
だから
function SoundPlay(_channel:SoundChannel,bgm:Sound):SoundChannel{
return bgm.play();
}
と定義してそれをchannel0に代入ってしないと動かないのよ。
なぜかはわからん。
えらいひと教えてください。
>>790 処理はフレーム上に書いてる? 同じフレーム内の処理は一気に処理されるから、SoundStopしてもchannel0はオブジェクト化されていないとみなされてるんじゃないかな
例えば10フレーム後にSoundStop(channel0);を書けば有効だと思ふ
フレーム上じゃなくASファイルに処理書いてるんだったらTweenerとかで何秒後にSoundStopする、とか制御すればいんじゃない
793 :
Now_loading...774KB :2008/09/02(火) 22:10:27 ID:gHsCpm3C
>>791 サンクス
>>792 >処理はフレーム上に書いてる?
かいてます。
ボタンから呼び出してもできないんで、
処理の順序の問題じゃないかなと思います。
_channelはchannel0の参照を格納しているが変数自身を指しているわけじゃない。 あとは分かるな。
795 :
Now_loading...774KB :2008/09/03(水) 03:15:29 ID:X49I0Hv7
soundchannel1 = new SoundChannel(); soundchannel2 = soundchannel1; soundchannel2 = sound.play(); 結局、soundchannel1は最初にnewしたところをさしていると・・・
796 :
Now_loading...774KB :2008/09/03(水) 14:07:39 ID:Ls/U6nt3
>>795 それはそうですね。
>>794 変数自身を指すにはどうしたらよいですか?
1週間前からAS2からAS3に移行してて全体的に無知でスミマセン。。。
>>796 アバウトなコントロールでいいなら、これでいいんじゃない?
参照理解の問題でAS3特有の問題じゃないから分かってないとAS2でもダメなはず。
var bgm0:Sound = new BGM0();
var channels:Dictionary = new Dictionary();
function soundPlay( bgm:Sound ):void {
channels[bgm] = bgm.play();
}
function soundStop( bgm:Sound ):void {
if ( channels[bgm] ) {
channels[bgm].stop();
}
}
soundPlay( bgm0 );
soundStop( bgm0 );
ブラウザにswfを直で表示させた場合、フラッシュが拡大されて(引き伸ばされて) 表示されるのですが、swfは引き伸ばさずに、ブラウザの大きさに合わせて stage.stageWidth(とstageHeight)を動的に広げる事はできますでしょうか?
799 :
Now_loading...774KB :2008/09/03(水) 19:30:06 ID:Ls/U6nt3
>>797 参照についてちょっくら勉強してきます。
ありがとうございます。
800 :
sage :2008/09/04(木) 05:15:01 ID:xsUB424G
>>798 stage.scaleMode = StageScaleMode.NO_SCALE;
にすればのびないんじゃね?
>>800 をををを!なるほど〜
ありがとうございます。
ちなみに座標(x,y)を左上(0,0)に固定したままに
することはできないですかね・・・?
802 :
Now_loading...774KB :2008/09/04(木) 17:31:45 ID:xaUu3zhW
stage.align = StageAlign.TOP_LEFT; にすればできんじゃね?
>>802 んふう〜 なるほど!
タンキューソーマッチでした。
var nc:NetConnection = new NetConnection(); var ns:NetStream = new NetStream(nc); var videoObj : Video = new Video(); addChild(videoObj); videObj.attachNetStream(ns); ns.play("test.flv"); function videoClear():void{ ns.close; nc.close; nc = null; ns = null; removeChild(videoObj); videoObj = null; } videoClear()を呼び出すと消えるんだけど 暫くしてもビデオ分のメモリあがりっぱなしなんですけど。 これってGCされてないん?
System.gc()して比べてみればわかるんじゃね?
>805 やっても下がらないのだ。 で、どうやったらGCされるのかと?
> ns.close; > nc.close; コード見た限りではストリームを close() してないと思うのだが
> ns.close; > nc.close; これじゃクローズされないの? どうやってやるんすか?
さては他のスクリプト言語出身だな? ASだとちゃんと最後にカッコを付けないとメソッド呼び出しされないよ
810 :
Now_loading...774KB :2008/09/10(水) 15:05:04 ID:4Q6PZCDX
失敬。でも ns.close(); nc.close(); にしてもさがらないんだよね。
開放されるタイミングというものがなかったっけ? 任意でメモリを開放したい場合は、 それ専用の命令がたいていあると思うけど flushとかそんなの、ヘルプにのってないかな
GCのタイミングは、VMまかせだよ。
>>みなさんサンクス GCのタイミングうんぬんは理解した。で、 ns.close(); で ns はガベコレの対象になっている? なんかナッテナイような気がするんですけど。 どうなんでしょ?
closeは接続を閉じるだけだら、GCは関係ないよ
どうすれば、ムービーをガベコレできるんすか?
>>817 ガベコレの対象になるのですか?
ですね。
参照全てなくさないとgcされないよ ncとnsにnull代入しれ
ローカル変数にもnull代入しないとGCされないの?
ヌルしてんだけど、 GCされないんだよね。 してるのかな。。。 ムービー読み込み前 totalMemory = 8220000 ↓ FLV(29M)読み込み後 totalMemory = 20090000 ↓ nc,ns=close, video.clear nc,ns=null, System.gc()しる totalMemory = 19700000 ↓ いくら強制GCしても、時間たってもメモリ減らず。。。 俺だけの現象なのか?コレ?
video.clearじゃ消えないんじゃないの videoはnullにしてないの?
>>822 video=nullしても変わらない。。。
最近周囲でよく話題に登ってますが、Progression Frameworkのスレって無いですよね? 簡単という触れ込みで触ってみましたが、それはコンポーネント製作の場合で 継承だのオーバーライドだのと無縁でやってた人間にはクラスベース難しいですね・・・勉強にはなりますが
>>824 ないですね
Progression気にはなってるがまだ触ってない
ゲームでPキーを押したときにポーズをかけたいのですが onEnterFrame以外にもTweenerを動的に多様していたりします。 停止・再開を上手く制御できる方法はないでしょうか?
onEnterFrameって何ですか? スレ違いだろ
828 :
Now_loading...774KB :2008/10/02(木) 11:07:39 ID:iRFGRqeO
>>827 Event.ENTER_FRAME ですすいません
停止・再開を上手く制御できるようにプログラムする。 としか言いようがないな。
HTMLタグで、SWFを規定の大きさをデフォルト以外に変えられたときに、 SWFの内容のスケールが変わらないようにしたいのです。 widthとheightを取得して規定サイズとの倍率を計算し、 内容のscaleX scaleYに乗算したのですが、 誤差がでているのかピッタリ合いません。 なにか良い方法はありませんか?
noScaleでいいんじゃね
>>831 おお!
上手くいきました!
ありがとうございます!
833 :
Now_loading...774KB :2008/10/03(金) 14:51:47 ID:2fS/YBss
以前のsonyサイトのようなフラッシュのサイトを探しています。 どこかありませんでしょうか。
833 のFlashがどんなのだったのか気になる。
835 :
Now_loading...774KB :2008/10/11(土) 00:23:43 ID:ReDMBZx3
僕も探してみます。
KeyboardEventで取得したkeyCodeを使って処理を行っていますが wmode = opaque の為「↓」キーを押すとブラウザページ画面が下にスクロール してしまいます。 keyCode取得の処理を行った後、入力を無かったものにするには どのように記述すればよいでしょうか。
Flex3 + FlashDevelopで開発をしています。 一つのクラス内でしか使わないような ローカルな構造体を使いたい時は 大人しくObject型を使うしかないのでしょうか? 一つ一つclassで定義していると、 1 fileにつき 1 classの縛りから、 ソースファイルが膨れ上がってしまいます。
>>837 パッケージの外にクラス配置して利用できるよ
//Test.as
package
{
public class Test{
public var unit:Unit;
public function Test():void{unit = new Unit("hoge");}
}
}
class Unit
{
public var name;
function Unit(__name){name=__name;}
}
で、
trace(new Test().unit.name); //hoge
>>837 クラス数が増えまくっても怖くないよ
大丈夫だよ
840 :
837 :2008/10/18(土) 20:31:58 ID:YgDWu7ht
>>838 おお・・・おお・・・ブラボー!!
バッチリ適用できました。有難う御座います。
>>839 怖かったんです。私、怖かったんです。
sdkで音の生成機能を試してるんだが 音系に詳しい人じゃないといいものは作れないな 時報の音ぐらいしか俺には無理だw
airでローカルファイル名のリネーム操作って可能でしょうか??
>>841 普通に微分積分とかの世界だから、3Dとかよりよっぽど難しいとおも
質問です 環境:eclipse(AIR GEARプラグイン) やりたいこと:AIR(Flex)でTimerを使用する 問題:Timerの引数エラーが発生する 「Timer.start」が未定義になる 以下コード: 〜省略〜 var myTimer:Timer = new Timer(1000); myTimer.start(); 〜省略〜 以上の部分で、 「1000の引数部分は、0個でなけらばならない」 「.startが未定義」 というエラーが発生するんですが、これはバグなんでしょうか? リファレンスを見てもコーディングは正しいはずなんですが…
Timerクラスを見せてくれないとわからんお コンストラクタで引数受けてないんじゃないか? startメソッドはちゃんと定義してるの? publicでないとだめだお あとstaticにしたらだめ
ちょっと教えてもらえないだろうか? .txtを外部読み込みして 変数に格納する…というモノを作っているんだけど ローカルでは改行を認識するのに サーバにうpすると認識しないのです 改行の代わりに何かの記号を行の最後に入れとけば回避できるとは思いますが どうしても入れたくない場合はどうしたらよいのでしょう?
すんません自己解決しました 改行のキャラコードが2種類あったのね 10と13 サーバにうpすると13のコードだけ無くなる… なぜかはわからんが
OSがちがうからだお
おお解説dです コード10、13が LFとCRって違いなのかな? ウチの環境(win)では問題なく動きました 10と13 両方認識させておけば他のOSの人でも動くのか…? 近いうちにマカーの知り合いにテストしてもらってみます
>>846 ご指摘ありがとうございます
別に作ったらすんなり通ったんで、一応問題は解決したんですが…
何が悪かったか分からず仕舞いなんですがは、忙しいので後で見直してみようと思います
ありがとうございました
>>851 Webサーバーで多く使われてるのが
LinuxやFreeBSDなどのUnixの子孫なので、改行コードはLF(改行、0x0A)
0x0Aってのは16進数の0Aなので10進数に直すと10
手元のマシンがWindowsで、サーバーもWindowsIISの場合の改行コードはCR+LF(復帰+改行、0x0D0A)
十進数でいえば13と10の2バイト連続。
FFFTPなどの近年のFTPクライアントソフトではこの違いをASCIIモード転送では自動変換してくれる
だから毎回その*.txtをバイナリモードで転送するか、FTPクライアントがASCIIモードで自動変換しないように*.binに拡張子を変えてやればいい。
Windows側で*.binをテキストエディタに関連付けすれば、無理に*.txt拡張子を使う必要がない。
あるいは*.txtであっても、改行の代わりに「,」を使うのが一番シンプルかもしれない。
Unixの家系図
http://ja.wikipedia.org/wiki/%E7%94%BB%E5%83%8F:Unix_history.svg
854 :
Now_loading...774KB :2008/11/06(木) 13:20:45 ID:5a1Hrn2y
教えてくれ〜い AS3でのテキストフィールド(入力)に最初からフォーカスをセットしたいんだ 色々調べたんだがわからんす setFocus(); てのを見つけたがコンポーネント用で どうやら違うらしい
>>854 stage.focus = textField;
かな?
>>855 ありがとうございます できました!
しかしあのヘルプはひどい シロートには絶対わからん… クソですなw
AS3のヘルプはかなり良くできてると思うけどなあ。
858 :
Now_loading...774KB :2008/11/06(木) 18:22:07 ID:aQ9WZZsg
var flag :DaedFlag = new DeadFlag(); if(この戦いが終わったら...) :void { flag = 激しい戦闘の後、死亡; }
>>858 君は一から学び直した方がいい、あまりにもひどすぎる
なんかXFLとかいうファイル形式になるらしいな 名前からするとXML系かな
もはやCS4いらないんじゃないか?
カスタムイベントの使い所ってどういった場合特に役立つのでしょうか 自分が勉強不足なのもありますが、明確な具体例のようなものってありませんか? 主にネットで紹介されてる記事ソース等を貰ってきて弄って覚えて来たのですが ココはカスタムイベントを・・・みたいな使い所感覚みたいのが全然掴めないままです エロい方どうかご教授下さい
>>862 例えば、複数の画像の読み込みが終わったときとかに使えるんじゃない?
後は、イベントオブジェクトに色んな情報を含めて送りたいときとか
話は変わるけど、設計方法はみんなどうしてるんでしょうか?
MVCとかあるけど、あまりそういう話は出ないし
864 :
Now_loading...774KB :2008/12/04(木) 19:26:00 ID:FHqoRBPY
AS3.0の事というかプログラミングな事なんですが、ナビゲーションのギャラリーページのボタンを押したら 1、Sprite作ってaddChild 2、Loaderで画像読み込んで終わったら1のスプライトにaddChild 3、TextField作って画像の説明表示とaddChildで終わり こんな流れで、この状態からナビゲーションの他のアバウトページ・アクセスページをクリックしたら このギャラリーページを表示させなくして1,2,3で作った物をromoveChildとnullで消して、指定先のページを表示。 こんな流れの場合、上記の3の時点まで処理が進んでいれば1,2,3で作った全てを指定して削除作業すれば住むのですが、 例えば1や2の途中で他のページへ移行された場合、Textfieldが無いといったエラーになったりしてしまいます。 こういった推移管理?のセオリーみたいのってあるんでしょうか。 今は一応一つBoolean=false初期値の変数を作って、ナビゲーションのボタンが押されたらBoolean変数にtrueを入れ、 今の処理functionから次の処理functionへ移行する時 if(Boolan) { 終了処理function( 識別ナンバー ) } else { 次の処理function() } こうして、終了処理functionで識別ナンバーを元にswitchを使って判別して、その時点で存在している筈のLoaderとSpriteを消して、 存在してない筈のtextFieldにはノータッチみたいな方法を取ってますが、全体的に異様にif文が増えたり、なんだか処理の確実性もあまり感じられません。 こういった処理の的確な書き方があれば教えて欲しいです。お願いします。
>>864 削除したいものが既に存在してるかどうか調べながら削除すればいいんじゃね?
ダメかな……
>>865 if(Boolan) {
終了処理function()
} else {
次の処理function()
}
終了処理function():void {
if( Sprite != null ) {
removeChild(sprite);
sprite = null;
}
if( Loader != null ) { }
if( TextField != null ) { }
}
レスありがとうございます。
上記みたいな感じで終了処理で総当り的に存在してるか調べてという事でしょうかね。
ダラダラとコードが長くならず、他に効率のいいテクニックでもあったりするのかと思っていたので、総当りな方法が通常テクのようで安心しました。
Sprite 継承したギャラリークラスみたいの作れば removeChild(gallery) するだけで以下まるごと消せるよ つまりガベコレ頼み もちろん参照を持つのは gallery の親のみでの話ね でも自分なら最初から TextField とかを全部作っておいて、 add/removeChild せずに visible を設定して一時的に消すだけにする あるいは TextField を使い回す 内容によってはメモリ食うかもしれんので 画像とかムービーはその都度完全に破棄してもいいけど
>>866 いや、ギャラリーページから抜ける時に終了処理function()を呼ぶだけでいいんじゃないかと
そうすればbooleanで判定とかなくてすむからスッキリするんでは
869 :
たけし :2008/12/26(金) 10:27:14 ID:qlwGzjuU
AS3.0のif文で、 「もしok_mcが10フレーム以上にある時」という 条件式を作るときは、どのように書けばいいのでしょうか? 例えば「もしxプロパティが10以上にある時」ならば if (ok_mc.x >=10) { だと思うのですが、 フレームになるとどう書けばいいか分かりません。 どなたかご存知の方いらっしゃいましたら、 どうかご教授よろしくお願いいたします。
if (ok_mc.totalFrames >= 10)
ああ、よく読んでなかった。 フレーム数じゃなくて、現在フレームか。 if (ok_mc.currentFrame >= 10)
872 :
初心 :2008/12/26(金) 10:44:29 ID:qlwGzjuU
>871さん ありがとうございます!! 早速試して結果報告します!
873 :
初心 :2008/12/26(金) 10:49:21 ID:qlwGzjuU
>871さん できました!感動です! ありがとうございました!
あけおま〜 AS3で特定のMCから同階層にあるtinkoMCを動かしたいんですが何か方法はないでつか? (parent.tinkoMC as MovieClip).gotoAndPlay(2);//エラー //親の階層で名前付ける this.tinkoMC.name = "tinko"; var target: Object = parent.getChildByName("tinko"); target.gotoAndPlay(2);//エラー
876 :
Now_loading...774KB :2009/01/14(水) 23:04:51 ID:4yK4UtX0
877 :
875 :2009/01/15(木) 01:48:55 ID:MH+TJHAw
すいません 違う方法で解決しました… ちなみに スクリプトは子MCのタイムラインに書いてました そのテクニカルノート見ましたが やはり子から親へさかのぼっての 参照はできないぽいですね
コリン・ムックに”テラ”って言葉を覚えさせたの誰だよ
知り合いからオブジェクト指向で作られたFlashの改良を頼まれてるんだけども、まず解析しなきゃならないんだが…。 そういうファイルを簡単に理解できるようにするツールとかってない?
多機能エディタぐらいしか思いつかない AS3ならFlexBuilderじゃだめなの?
FlashDevelop使っとけ
882 :
Now_loading...774KB :2009/01/27(火) 03:01:15 ID:XnerRQbe
FlexBuilder3とFlashDevelopを比較して後者のほうが優れていると言う人が多い気がするけど、 値段を考えず機能面や使いやすさだけで見てもやっぱりFlashDevelopの方が優れているんだろうか? ちなみに2008年頭の情報だけど、中村勇吾(とthaの人たち)はFlexBuilderを使ってたっぽい 今はどうか知らないけれど。 個人の場合と、プロジェクトとして複数で制作する場合でもまた違ってくるんだろうか
>>883 ActionScriptをゴリゴリ書いていくだけならだんぜんFlashDevelopのほうがいい
でもFlexBuilder3にはmxmlのデザイン機能があるしデバッガがある
どっちっていうよりかは使い分けかなー と思う
885 :
883 :2009/01/28(水) 22:56:58 ID:JEPAVPED
>>884 レスThx
確かに調べてるときに最初のベースと最後の吐き出し・デバッグをFlexBuilder3で作って
コーディング部分はFlashDevelopって使い方してる人も見かけた覚えがあるなー
総合的に見るとFlexBuilder3で、コーディング特化がFlashDevelopって感じぽいんだね
学生証があればFlexBuilder3も無料で手に入るし、AS3周りはいい環境になったね
これ作者おつではないのだが、 flash3.0やるやつはActionScript3.0アニメーションを 買うべきだ。 非常によくできている。 Flashで初めていいやつにであった。
いい本なんですけど高いですよねーあれw
イマドキflash3.0やるやつはいないがな。
詳説ActionScript3.0も高いけど最高やで
ほんまでっかー?
892 :
886 :2009/02/03(火) 00:44:33 ID:AUVhcSxP
ごめんなさい. AS3.0です。 非常にわかりやすい。 外国人でここまでわかりやすい本は初めて。 おれは買った。確かに高い。たかすぎる。 でも初めてのAS3.0(オライリー)よりはいいと思う。 ほんとに初心者は AS3.0プロフェショナル→初めてのAS3.0→AS3.0アニメーションで いいと思う。 Flash Math & Physics Design:ActionScript 3.0による 数学・物理学表現[入門編] (大型本)これも参考にすべきだと思う。
宣伝乙。ついでにマルチ乙。
なんかそう言われるとかなしいです。
初めての〜とアニメーションは トピックのカバー範囲が全然違う本な訳で どちらが良いとか比較できる類のものじゃないだろ 本当に読んで理解して言ってるのか怪しいもんだ というか本当に読んで理解してるんならflash3.0なんて間違いしないだろうけどな
929 名前:919だよ[sage] 投稿日:2009/02/03(火) 00:51:09 ID:AUVhcSxP NO9jMB6Wさんへ ぜひActionScript3.0アニメーションをかってみてください。 すぐにその問題は解決しますよ。 あと本5冊ってなにを買いました。 もし初心者なら、 AS3.0プロフェショナル→初めてのAS3.0→ActionScript3.0アニメーション をお勧めします。 自分はこれで覚えました
こんなアホが読んで勧めてる時点で魅力ゼロ
いや、こんなおバカさんでも理解できるほどいい本なんだよw
正直理解はまだまだ程遠い。 みなの言うとおり。 自分で選んで買うべきです。 すいませんでした。 ActionScript3.0アニメーションはpart2まで読んだ。 これからもがんがる
■入門>中級〜上級 初めてのAS3>詳説AS3 ■数学部分だけに特化した場合の入門>中級〜上級 Math&Physics>AS3アニメ それらの本をもし勧めるならこうじゃないか? 詳説もアニメも最初に買うには全然適してない
flash10で音関連が強化されたけど、その辺りが詳しく書かれてる本ない?
Math&Physicsは解説が丁寧でいいと思う。 ただ、ウソのタイトルは詐欺に近い。 数学でも物理学でもない。 理系の人間で数学や物理学に興味があるやつは、騙されるな。 あくまで文系人間がカッコつけて理系っぽいことをやりたいというノリ。
904 :
902 :2009/02/04(水) 19:10:02 ID:q/wog24G
>>903 理系(特に数学物理学系)の人間の言う「数学・物理学」の意味と
文系の人間が言う意味は全然違う。
内容は理系で言う所の数学物理学ではなくて、
ただ単に重力とか反発とかの運動をアニメーションで表現するためのscript解説。
てか読んでないだろ。
自分だけが本質を見抜いてる、周りのやつは分かってない、 って思うと つい説明したくなっちゃうよな
Flashで何作る気なのかねその人は
>あくまで文系人間がカッコつけて理系っぽいことやりたいというノリ 別に物理を学ぶ本でもないのに馬鹿にした言い方しなくても お前が偉いのは分かったからさ
>>904 >理系(特に数学物理学系)の人間の言う「数学・物理学」の意味
馬鹿ですまんが、こっちの具体例をあげてくれない?
もちろん「Flash&ActionScript」を前提とした場合での意味の、ね
もちろんがどこから来たのか気になる
910 :
902 :2009/02/04(水) 22:56:16 ID:q/wog24G
>>908 確率変数の分散の可視化とか、
フーリエ解析してローパスフィルター作るとか、
流体力学モデルを使って気象シミュレーター作るとか、、、etc
数学・物理学と謳うなら、せめてそれくらいの内容を期待するけど、
別に新しくもないどこにでもあるアニメーションの作り方が解説されてるだけ。
ただ、そういう内容なのでアニメーション初心者にはバッチリの内容だと思う。
解説もやたら丁寧なのは前述の通り。別に内容にケチをつけるつもりはない。
タイトルだけ見て期待しすぎない方がいいよ、っていう指摘をしてるんだよ。
AS3アニメ最高です。
>>910 1行目読んだだけで、お前が文系だと分かった。
913 :
902 :2009/02/05(木) 00:44:44 ID:WQM/pAIM
>>912 俺は理系の大学出て文系の仕事してるからある意味正解だな。
原理を説明せずにやり方だけ書いてるってことじゃないの? 特定の計算をすれば3Dの処理できるけど、どうしてそういう計算でうまくいくのかわからんみたいな まあ読んでないからその本はどうだか知らんけど
確かにタイトル見て中身見たらガッカリするな ま、オレはタイトルだけ見て買ったりはしないが
>>914 それは違うよ
910も書いてるけど、原理からスクリプトに表現されるまでがかなり丁寧に書かれてる
ただ、3Dとか回転とか物理学ではあるけれどニュートン力学の初歩の初歩(高一レベル)だし
9章なんて「惑星の動き」なんて題だから
引力と遠心力が干渉しあうような空間上の複雑な円運動かと思ったら
ビックリするくらい単純な円運動を再現してるだけw(一応空気抵抗っぽいパラメータはあるが)
フィボナッチ数列とか知らない人には何やら難しそうに聞こえるのかもしれないけど、
足し算ができれば作れる数列じゃん
そんな単語を帯にいっぱい書いているあたりがサムいという感覚はわかる気がするw
>確率変数の分散の可視化とか、 >フーリエ解析してローパスフィルター作るとか、 >流体力学モデルを使って気象シミュレーター作るとか、、、etc 俺はよく知らんけどflash開発者で(理系だろうが文系だろうが) こんなことの原理や実装を解説してる本を期待してる奴っているのか? ところで、ニュートン力学って数学でも物理学でも無くて何なんだ?
>>917 デザイナーにはほとんどいないだろうね
AS3になってからプログラマーがいっぱい使い出してるだろうから
研究開発用途とか実用系のwebアプリなんかだと、
ブラウザだといままでjava appletくらいしか選択肢がなかった
でも書店に並んでるflash本てデザ向けばっかりなんだな
ニュートン力学は物理学に入るだろうけど、中学か高1レベルだから
「Math&Physics」なんて御大層にいうことではないな
さっき気付いたけど「惑星の動き」で空気抵抗ってw んでご丁寧に惑星にドロップシャドウを付ける方法まで説明されてるww
>>917 俺は期待してるデザイナーなんだけど・・・そこまで行くと純粋な物理の本読めばいいやってなる。
それよりエクスメディアの「。fla」みたいな本がもっと出て欲しい。
AS3わかんね(つД`) もうやだ ぐだぐだ勉強してる間にもう納品の期限が迫ってる。 自分の低脳ぶりに全俺が泣いた 一人デスマーチ乙
どの辺がわからないんだ 言ってみ
923 :
902 :2009/02/05(木) 16:08:44 ID:WQM/pAIM
>>918 本の話ではないけど、
ASをバリバリ使いこなしていた今までのデザイン系FLASHERが、
プログラマの大量移入で及び腰になってる気がするな。
個人的には、デザインの領域に少しずつ入り込んできた敏腕プログラマ達より
AS3をマスターしてライブラリなんかを自在に使いこなして
サッサとサービスを形にしていくデザイナの方がFLASH的には強いと思う。
ライブラリはどっかの優秀プログラマさんに作らせりゃいい、てなくらいの意識で。
つまり、このスレにいるようなやつらは
もっと自信を持ってこれまで培ったスキルとか経験を活かしていってもいいと思うよ。
>>921 つ [ 標準 ActionScript3.0入門 ]
今読み進めてる参考書だけどかなりおすすめ。
文法レベルの話をとにかく丁寧に書いてるので
エセ知識じゃなくてしっかりとした3.0の書き方が理解できる。
Flash5時代にあった書籍『ActionScriptバイブル』と同じ匂いを感じた。
>>922 ボタンに直接書いてたのも駄目になったりで、今までの誤魔化しが利かなくなった
アニメーション的な動きは作れてもデータ引っ張ってきたりとかわからなくて
本見て見よう見まねでASいじってみても同じ変数名が…とかエラーばっかりでて
何となくこう書けばいいとかいう流れは予想できても
全然書けなくて悔しい(つД`)
>>924 型とか文法とか、もっと基本的なところから
勉強しないと駄目だな…とちょうど思っていた。
多分俺プログラミング向いてないけど。
一生懸命勉強してたらちゃんと使えるようになるかな…。
読んでみる、教えてくれてありがとう。
>>916 > 9章なんて「惑星の動き」なんて題だから
確かにアレは酷かったね。タイトル詐欺だと思ったよ。
>>925 AS2しかやった事無い俺でも使えるようになったんだからできるよ
まずは色々といじりたい気持ちを抑えて
当時は書籍も揃ってなかったから、リファレンスを繰り返し読んだりして
基礎を徹底的に叩き込んだ
基礎を疎かにしてたら、途中で嫌になって辞めてたと思うし
ある程度理解出来てくると面白くなるよ
手間は掛かるかも知れないけどAS2よりコード書いてて面白い
標準 ActionScript3.0入門は2冊でてるけど 両方買った方がいい?
929 :
924 :2009/02/05(木) 23:40:39 ID:t1plIzbl
AS3.0の本でCS4対応だと何が違うの?
>>930 CS4(Player10)から新しく増えたクラスに関して補足的に言及がある。
(型指定できる配列のVectorクラスとか)
あとはページ内のスクリーンショットがCS4準拠とか、そんなもんかな。
さっきまで一生懸命本とかWebのソースこぴって ずっとやろうと思ってた複雑な処理 実行したら上手くいって MCの数増やそうといじってたら予期せぬエラーとかでいきなり固まって 保存しそびれてて 書き直しても上手くいかなくて ぼろぼろ泣いてます もういやだ…
あ、うごいた… よかった…(つД`。)
煽る訳じゃないが、 動いて良かったレベルの人とは、一緒に仕事したくないわ。 思ったとおりに動かすのは当たり前。 いかにメンテナンス性や拡張性を維持してコーディングするかが腕の見せ所。
>>934 俺も綺麗なソースをさくさく書けるようなりたいけど…
勉強しつつ試行錯誤でやっと動かせてるレベルだ
934みたいな人がもしいたら、
俺なんかがいきなりスクリプト
書かなきゃいけないような羽目にはならなかったんだろうな。
申し訳ないやら理不尽やら。
>>935 コーディングは、学習に掛けた時間に比例して上達する分野なので、
がんばってください。
本やWebのサンプルソースは、理解を深めるためのテストコードであって、 大抵そのままの形で自分のプロジェクトに組み込むことはできないよ。 それを実用するには、その内容一行一行を咀嚼して自分の血肉にせにゃならない。 そういう訳で、他所のソースをコピペっていうのは、ある意味死亡フラグ。 (上手いことコピペを使う方法っていうのも無くはないけれど。でもやっぱり内容を理解してないと危険) (中略) 結論、「テストコードを沢山書こう。」
煽りじゃなくてマジ質問だけど、 AS3でしか実現できない場合以外、AS2でやった方が早くてわかりやすいんじゃないの? あと、作りながらアイデアを拡張していくっていう作り方はAS2の方が向いてると思うんだけど。 小さいプロトタイプを速攻で作って(数分〜数十分で)試して本体に実装していったり、 ちょっとした修正とか、どこをいじるのかステージ上の方がわかりやすくない?
AS2に慣れきったデザイナー脳はどうだかしらんが、 プログラムにある程度慣れた人ならAS3のほうがわかりやすくいじりやすい
慣れればAS3でも小さいプロトタイプを速攻で作れる
作るものによるのかな? ここ半年ほどAS3ばっかりでやってきたけど、 AS2の時はちょっと作ってすぐプレビューして、 そこでもっといいアイデアとか出た時にすぐに仕様変えてまたプレビューして・・ てな感じでオーサリングツールというよりインスピレーションツールな面があったけど、 AS3だとある程度組み上げないとプレビューできないし、 組み上げちゃったら仕様変えるのが億劫になってアイデア実装より とりあえず安定した実装優先、みたいな気になるんだよな。それはそれでいいことなんだろうけど。 AS2もAS3も両方使える人、どうですか?
いい加減うっとおしいんだが おまえはAS2がお気に入りなんだろ? それでいいだろが
AS1.0が最もストレートに開発できるよ!
インターフェースデザインを考える場合 デザイナが初めにタイムラインベースでざっくり色々と作って 各所からokが出た後、 プログラマがクラスベースでその動作を再現する、という場合はある この場合、デザイナはAS1やAS2でスクリプトを記述したりするかな
>>942 わかる気がする。
最初に枠組みを決めるか、部分的な具体化から積み上げられるかって違いはあるね。
でも後者だと、個人で小規模のものを作るのが限界だと思う。
AS2.0だとしても、やっぱり最初にきっちり組み上げないと、後で適当な積み上げの
ツケを払わされるよ。
おれは最初に枠組みを決めるか。 AS3.0が好き。大好き。今後はたぶん3.0が主流に なってくると思うので、おれはAS2.0の人も3.0をやるべき だと思うよ。
>>946 それはわかる。
ただ、FLASHで大規模なコンテンツ制作なんてそうそうないと思う。
広告系なんてほとんど一発ネタだし、
WEBアプリでも単一機能モノか、それを単純に集めたモノだし、
仮にECサイトをフルFLASHでやっても中規模程度。
管理画面をフルFLASHでやると結構な規模になると思うけど、
そんな需要あるか?
AS2でもいい場合は、まだたくさんあるだろうけど 将来性のない言語だからAS3に移行すべきだと思うけどね AS2にこだわる理由も特にある訳じゃないと思うし
AS3.0 理解して使いこなしてる奴は
>>948 のような事は絶対言わない
そもそも適材適所で使い分ければいいだけなので 3.0 を否定する必要も無い
2.0 でいいじゃん、と必死に同意を求めるのは
3.0 であっぷあっぷしてる人だけ
次スレいらないよな
正直AS2もAS3もさして変わらない気がするんだが
ECMAScript3.1の標準化が決定しちゃったし、AS3.0にどこまで将来性あるのか疑わしいよ。
そもそも標準化自体にあまり意味感じないですけどね Flash専用に特化してまったく問題なし
>>952 Flash/AS3に将来性がないとして、みんな何を使うようになるの?
Ajaxじゃ代りにならんし、SilverlightとかUnityWebPlayerとか誰も使ってねーし
まさかAS2とかJavaアップレットとか言わねーよな
AS3の登場で一番変化したのはブラウザゲーだと思うんだ
あいまいな型のECMAScriptは元々ゲームに向いてなかった
んじゃ、AdobeはなんでES3.1の軍門に下ったの? AS3.0の言語仕様のまま拡張してったらダブルスタンダードだよね? ES企画を蹴飛ばさなかったんだから、次期ASをES3.1に準拠させるってメッセージと受け取ったよ?
>>954 将来性を考えて言語選択なんかしてないな
適材適所だね
適材適所≒習得時間と活躍できる期間のコスパ≒将来性
>>952 AS2に将来性がないってのは
ASの範囲でって事ね
似た機能を持つ言語であえて新機能がサポートされる事がまず無い
AS2を使い続けるメリットはないかと、liteは別として
>>956 にも書いてあるけど今後は独自路線で行きそうだな
言語なんぞよりコンパイラをひたすら改良してほしいね。
>>950 話がまた原始的に所に戻ってるな。。
誰も否定なんかしてないからオチツケ。
AS3に移行はしてみたものの、
AS3が真価を発揮するFLASHでの大規模案件てのはなかなかなくて、
ほとんどが小中規模案件で、(ウチだけかもしれないが)
これだったらAS2でやればいいんじゃない?って話。
適材適所ってのは無理になんでもかんでもAS3でやる必要はないってことだろ?
その上で、じゃあAS3を活用できる大規模案件てどんなのがある?
一例は
>>948 の通り
1年くらいAS3やってるとスケッチ感覚で組めるようになるけどなぁ。 「わざわざAS3で」「無理になんでもかんでもAS3で」って言われてもその感覚がわからん。
>>961 あなたの会社の事情なんて知らないし
AS2でやればいいじゃん、てのは上司に言うべき事
ここで言われても 正直好きにしてくれとしか言えない
AS3の真価 = 大規模案件てのはわかるけど
それをしばりに 例を出せと迫る傲慢さ
>>963 どちらかというとあんたの方がスレ違いだけどね。
flashに限らずweb系は新しい技術が出ても一過性で衰退してしまうものが多いから
こういう疑問を投げかけるスレも必要なんだよ。
shockwaveとかflash generatorとかと同じ道を辿る可能性もあるし。
少なからずそう思っている人はいると思うよ だからfrocessingやsketchbookみたいなライブラリがあるんだし 自分は使ってないけどこういうのじゃ事足りないの?
>>959 ES4路線で独自路線?
adobeは昔から規格統一が下手だな。
AS3は、糞仕様過ぎるのでとっととAS4出してほしい。 抽象クラスとオーバーロードは、必ず付け加えるように。 Flexのソース見たら、引数の型調べまくりでワロタ。
AS4は型推論ついてくれないかなー 今の仕様だとArray.forEachとか使いにくくてたまらん
AS3いらないね。覚えるだけ時間の無駄ってことでFA。 独自路線なのに将来性もクソもねーよ。 1年もかけてマスターしたやつ乙w
Adobeは風呂敷広げすぎたね ES4が白紙になった事への Adobeからの公式なコメントとやらは結局どうなったんだろう 今後どうするかのAS開発者?のコメントは見たけれど
マイナー言語のほうが参入障壁があがるから、儲けるにはいいんじゃない。 ただ、Silverlightに負けて仕事自体なくなるってこともありえそうだけど。
多少の差異など参入障壁にもならんけどねw
ごめんAS3のどこが難しいかまったく分からない。 むしろ、プロトタイプベースのオブジェクト指向のほうが 継承関係が複雑になるほど難しくなっていくと思うが。
オーバーロードは、スクリプト言語だと引数の数や中身を調べて実装する のが普通じゃない。RubyでもPHPでもJavaScriptでもみんなそうやってるよ。
AS3大好き
AS3は一般にメリットないっていうけど、 Progression Frameworkとか便利なライブラリ増えて 十分メリットあるじゃん。
>>973 難しいんじゃなくてメンドクセーんだよ。
言語なんてなんでもいいじゃん
>>978 おまえはFORTRANでFLASHを動かしテロ
as3になってからコード書くのが好きなった、不思議
AS3は良くできた言語だと思うけど、結構意見分かれるのかね? プログラマー側から参入した人にはおおむね好評で、デザイナー側からの参入で難しくなって不評 ってのが大ざっぱな印象だがどうか
Flexはやけに流行ってるよね 一部で
>>981 ここに来て堂々巡りになりそうな話題ふんなw
のんびり消費しようじゃないか
as1とかjava、phpもそうだったけど、 発表された時にワクワク感とか勢いがあったけど、 as2はまだしもas3はドンヨリしてるな。 少なくともFLASHでこんだけ賛否両論で雲行き怪しい感じは今までなかった。 既存デザイナーを裏切るような形になって、 今やもうWEBサイトではFLASHはなるべく使わないという方向になってる。 そこにはas3が言語的に良くできたとかわかりやすいとか、そんな次元の概念はない。
業務系では増えてるけどな・・・ 今後は対抗馬次第だが、めぼしいのないからなぁ・・・
>>984 Flashの評判が悪くなったのもデザイナーが
単に着飾る為に使いすぎたせいな気がする
>>986 いえてる。
アホなクライアントが騙されたか勘違いしたかで
とにかく派手なFlash要求しまくりとか
知識がない製作サイドが無理矢理作ったFlashで
重かったり使いづらかったりエラーが出たりとか
要はFlashやAS3.0じゃなくて、作り手、使い手の問題じゃないかな。
いやいやいや、デザイナーが発展させ続けて 提案し続けたからここまでメジャーになったんだろうよ デザイナーが使わなかったらここまでになってない
Flash使っているダメサイトは五万とあるが Flash使っていないダメサイトは それ以上に五万とあると思うんだがw
Flash使ってるダメサイトよりかはFlash使ってないダメサイトのがいくぶんマシ
底辺を比べてどっちがマシとかねーよw どんだけFlash嫌いなんだよお前は 作りの問題だろw
Flashは好きだが、
>>990 には同意。
Flashは、音、動画、アニメ等々要素が多い分、ダメな場合のダメージも多くなりがち。
ブサイクを見るだけと、ブサイクが見苦しい踊りを踊って下手な歌を歌うのとでは
後者のダメージが大きいのと同じだと思う。
逆に、優れたFlashサイトは、他が追随できないというかFlash抜きじゃ作れない
実に素晴らしいサイトだったりもするけど。
ブサイクではなく ちゃんとブスと言いなさい ブスと
ブスは3日で慣れるという。
やっとインフラが整った段階でプログラマが参入して食い物にして ボロボロにして捨てられるAS3
最近は、JavaScriptでUI作る技術が普及してるから 敢えてAS3使うまでもないってのあるよね。 でもJQueryのソースなんか見てみると、 遥かにAS3のほうが簡単だと思うけどね。
正直フラッシュ必要ないなと思う。 なんか、もう飽きられてる気がする。 テキストと画像だけで十分な気がしてきた。
次スレはないのかな?このスレは色々勉強になって好きだったんだが
このスレの必要性を主張した人が居たから 立てるかと思ったら うんともすんともないからな 正直 野中とかのいるコミュニティをROMってた方が勉強にはなると思う
1000 :
Now_loading...774KB :2009/02/14(土) 16:16:59 ID:5IqY2WAk
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。