2010年09月03日

Flex4メモ::Scroller

Flex3(mx)でスクロールバーを表示したい場合には、ContainerやContainerを継承したCanvasの中に適当にコンポーネントを配置しておけば、Containerが子供コンポーネントのサイズや位置を計測して勝手にスクロールバーを表示してくれていましたが、Flex4(spark)でスクロールバーを表示したい場合、明示的にScrollerコンポーネントを配置してあげる必要があります。

Scrollerには、IViewPortを実装したコンポーネントを一つだけ配置できます。このIViewPortを実装しているのは、GroupとRichTextEditorだけなので、Groupを一つ配置すると思っておけばよいのではないでしょうか。

mxmlは下記のようになります。

<s:Scroller x="0" y="0"  width="200" height="200">
  <s:Group>
    <s:layout>
      <s:BasicLayout />	
    </s:layout> 
  </s:Group>
</s:Scroller>

この場合子供のコンポーネントが表示領域が200pxを超える場合、スクロールバーが表示されます。

Flex3(mx)でおなじみの、verticalScrollPolicyとhorizontalScrollPolicyもScrollerクラスにあります。autoで自動表示、onが強制表示でoffが常に非表示になります。clipContentが見あたらなかったので、verticalScrollPolicyとhorizontalScrollPolicyを両方offにしろということでしょうか。

この記事を書いている時に、Flexデベロッパセンターに完璧な記事を発見したので、これを読んだほうが手っ取り早いですね。

2010年09月01日

Flex4メモ::ItemRenderer

Flex3では、自作のitemrendererといえばCanvasなどを継承したクラスで作るのが定石だと思いますが、Flex4(spark)ではそのものずばりItemrendererクラスってのが用意されているので、自作のitemrendererを作る時はこれを継承してあげればよいっぽいです。

ItemrendererはDataRendererを継承し、IItemRendererを実装しています。

で、DataRendererはIDataRendererを実装していて、これにお決まりのset dataとget dataが定義されています。

ちなみにListのitemrendererに設定できるのは、このIDataRendererを実装しているものだけです。

ざっと使ってみた感じでは、Flex3と同じノリで、crateChildrenだのset dataだのcommitPropertiesだのをがしがしオーバーライドしていく感じで大丈夫だと思われます。

2010年08月31日

Flex4メモ::sparkではaddChildが使えない

spark系のコンポーネントではaddChildは使えないようです。

SkinnableComponentでもGroupでも下記のようにErrorをスローするようにoverrideされてます。

/**
*  @private
*/
override public function addChild(child:DisplayObject):
DisplayObject
{
    throw(new Error(resourceManager.getString("components", 
"addChildError")));
}

じゃあどうするか。

かわりにaddElementってのを使うことになります。

addChild→addElement

その他は、

addChildAt→addElementAt

removeChild→removeElement

なんかがあります。

ここにmxとspakrの子供の管理方法の違いが載ってます。

2010年08月25日

Flex4メモ::ぼんやり継承関係の確認

Group → GroupBase → UIComponent

GroupBase has _layout:LayoutBase

SkinnableContainer(contentGroup:Group) → SkinnableContainerBase → SkinnableComponent → UIComponent

List → ListBase → SkinnableDataContainer (dataGroup:DataGroup IItemRendererOwner) → SkinnableContainerBase → SkinnableComponent → UIComponent

2010年04月29日

本日のiPhoneアプリ開発メモ~selfと@property~

@property(retain)指定したプロパティをそのクラス自身で使う場合、(セッタ、ゲッタでもいいけど)
(NSString *)hoge = (NSString *)fuge;
としても、fugeのretainCountは増えない。
self.hoge = fuge;
とすれば増える。
selfを明示的に記述して"ドット"でアクセスする必要あり。

2010年03月01日

フルスクリーン時にFLVPlaybackが出現するとブラウザがクラッシュする

最近の案件でフルスクリーン時のFLVPlaybackにはまったのでメモ。

■現象
フルスクリーン時にFLVPlaybackが出現するとブラウザがクラッシュする。

■詳細
フルスクリーン時にタイムラインアニメーションなどで途中からステージにFLVPlaybackが出現すると高確率でブラウザがクラッシュする。
FLVPlaybackが出現してからフルスクリーンにすると大丈夫。

■対応策
1フレーム目から(フルスクリーンにした時から)FLVPlaybackが存在していれば大丈夫。
外部swfをロードした場合も同様に1フレーム目からFlvPlaybackが存在していれば大丈夫。

■原因
↓なエラーを出しているが、不明。
警告 : 宣言されていない変数を参照しています 'FullScreen_MC'
警告 : 'FullScreen_MC' にはプロパティ 'FullScreen_text' がありません
警告 : 'FullScreen_text' にはプロパティ 'text' がありません

※ちなみに、FLVPlaybackがある状態でフルスクリーンにすると、前面FLVPlaybackになってしまします。
これを回避するには、

FLVPlayback(instance).fullScreenTakeOver = false;

fullScreenTakeOver プロパティーをfalseにしてあげれば大丈夫です。

2009年10月29日

FlashPlayr10.1でwmode=transparentでの日本語入力問題が解決したらしい

via.Adobe Edge
※下の方にある日本のユーザー向けの改善点のとこ。

2009年10月23日

15jyugo

代官山にあるjyugoというブランドのサイトをお手伝いさせてもらいました。
というか一方的に作らせてもらいました。

素敵な洋服&お店なので是非行ってみてください。
jyugo

2009年06月24日

c言語でのfor文

c言語ではfor文のfor()内でカウント用変数を宣言すると怒られる。
for(int i = 0; i < 10; i++ )
↑はエラー。
int i;
for(i = 0; i < 10; i++ )
↑正解。

以上。

2009年04月28日

PaperVIsionメモ

bitmapMaterialのコンストラクタの引数には、BitmapDataを与えてあげる。
[Embed(source="assets/tree.png")] public var imgCls:Class;

var bma:BitmapAsset = new imgCls();
var bitmapMaterial:BitmapMaterial = new BitmapMaterial(bma.bitmapData);


BitmapのプロパティのbitmapDataを渡してやる。(ver2.0.0)
あと、SWFProfiler便利。

SWFProfiler.init(this);

以上。簡単。