tag:crieit.net,2005:https://crieit.net/tags/Flex/feed 「Flex」の記事 - Crieit Crieitでタグ「Flex」に投稿された最近の記事 2010-04-21T12:04:52+09:00 https://crieit.net/tags/Flex/feed tag:crieit.net,2005:PublicArticle/14441 2010-04-21T12:04:52+09:00 2010-04-21T12:04:52+09:00 https://crieit.net/posts/flex flexコンポーネントが重い <p>mxmlで配置したImageコンポーネントを移動させると、かなり重い。<br /> 同じ画像でも、動的に作成したBitmapをCanvasにaddChildして動かすと<br /> 速さが全然違う。<br /> 性能のいいPCだと違いは分からないが、CPUの弱いPCだと顕著にわかる。</p> <p>自分の環境で確認したところ、<br /> Imageコンポーネントをひとつ動かすだけでも平均17fpsだったが、<br /> Bitmapにすると設定通りの30fpsになった。<br /> もちろん、Imageコンポーネントを動かさないで配置しているだけなら<br /> 全く問題はないようだ。<br /> これは気を付けた方がいいかもしれない。</p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/14446 2008-03-06T12:03:12+09:00 2008-03-06T12:03:12+09:00 https://crieit.net/posts/e993a84b6b9d35563dbc512c744a7ce2 サウンドをループ <p>flexでサウンドをループする方法。<br /> BGM等に使用したい場合。<br /> あと、主に複数サウンドをならしたい時に<br /> 一つのリスナー関数で終わらしたい時の話。<br /> Soundを再生する時、以下のようにチャンネルオブジェクトが出てくる。<br /> その時そのチャンネルオブジェクトにイベントを設定。</p> <blockquote> <p>|java|<br /> var channel:SoundChannel = snd.play();<br /> channel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete);<br /> ||</p> </blockquote> <p>で、ぐぐっても出なかったしリファレンスにも<br /> ちゃんとした情報が載っていなかったのだけど、<br /> リスナーで受け取ったパラメータに、SoundChannelが割り当てられている。<br /> なのでSoundとSoundChannelをなにかで結びつけて保存しておけば、<br /> どのSoundが終了したのかを判別できる。</p> <blockquote> <p>|java|<br /> public function onSoundComplete(evt:Event):void<br /> {<br /> for (var name:String in m_sounds)<br /> {<br /> if (m_sounds[name].channel == evt.target)<br /> {<br /> m_sounds[name].sound.play();<br /> break;<br /> }<br /> }<br /> }<br /> ||</p> </blockquote> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/14447 2008-03-05T11:03:42+09:00 2008-03-05T11:03:42+09:00 https://crieit.net/posts/d82e04ba8573b9be2df63d6cf067b249 画像の回転 <p>flexでBitmapオブジェクトを回転させる際、<br /> リファレンスを見るとrotaionというプロパティがあり、<br /> それを変更することで簡単に回転が出来る。<br /> が、よくよく見るとx=0, y=0の部分で回転しているため、<br /> ちゃんと真ん中で回転してくれない。<br /> リファレンスを見ると、その基準点を変更するための<br /> プロパティも何も無いようだ。</p> <p>色々調べていると、行列変換が使えることが分かった。<br /> これで回転どころか何もかも好き勝手に出来る。<br /> さすがflex。携帯のアプリとは違う。</p> <p>具体的には、Bitmap.transform.matrixに<br /> Matrixオブジェクトを代入しておけばよい。<br /> 行列を知らない人はなんのこっちゃと思うかもしれないが、<br /> 特に難しいことはない。</p> <blockquote> <p>|java|<br /> var matrix:Matrix = new Matrix();<br /> matrix.rotate(angle);<br /> ||</p> </blockquote> <p>という感じで何も分からなくても簡単に変換行列は作成できる。<br /> で、具体的に回転させるのは、<br /> まず基準点を画像の中心に合わせ、<br /> それから回転、スケール変更を行い、<br /> 表示する位置に移動する、という作業。<br /> 内容的にはこれだけ。</p> <blockquote> <p>|java|<br /> var matrix:Matrix = new Matrix();<br /> matrix.tx = -bitmap.bitmapData.width / 2;<br /> matrix.ty = -bitmap.bitmapData.height / 2;<br /> matrix.scale(scalex, scaley);<br /> matrix.rotate(Math.PI * angle / 180);<br /> matrix.tx += x;<br /> matrix.ty += y;<br /> bitmap.transform.matrix = matrix;<br /> ||</p> </blockquote> だら@Crieit開発者