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開発者