2012-02-28 2 views
0

私は、要素をホバー上で(下に)展開する必要があるAS3プロジェクトで作業しています。問題は、AS3がすべてのコンテンツを自動スケーリングせずに要素を拡張する方法を理解できないことです。例えばAS3でオートスケーリングを無効にする

thisSpriteです):

private function expand(event:Event):void { 
    TweenLite.killTweensOf(this); 
    TweenLite.to(this, .2, { 
    height: _dimensions.tall_height 
    }); 
    return; 
} 

は自動的に利用可能なスペースを埋めるためにthisのすべての子を育てます。私はこの機能を無効にし、以前に表示されたコンテンツをその場で残して、新しい空間で追加のコンテンツを公開できるようにしたいと考えています。 TweenLiteステートメントのscaleYで遊んでも何もしないようです。

これがデフォルトの動作である理由は私には分かりませんが、私はHTML(「ボックスモデル」と考える)レイアウトの考え方から来ているので、困っています。

おそらく私は完全に間違った考えを持っているのでしょうか?thisを「拡張」して余分なコンテンツを表示するAS3に適した方法がありますか?

答えて

1

これで、Flashでの拡大/縮小を無効にすることはできません。オブジェクトの一部だけを表示したい場合は、マスクと呼ばれるものを使用する必要があります。

var m:Sprite = new Sprite(); 

var g:Graphics = m.graphics; 
g.beginFill(0); 
g.drawRect(0, 0, box.width, 200); 
g.endFill(); 

// Apply mask 
box.mask = m; 

あなたがオブジェクト全体を明らかにしたいとき今後で、あなたは、単に再描画することができます

は、オブジェクトbox(スプライト)を持っている、とあなたはトップのみ、このオブジェクトの200pxのを表示したいとしマスク:

var m:Sprite = Sprite(box.mask); 

// Redraw mask, now 400px 
var g:Graphics = m.graphics; 
g.beginFill(0); 
g.drawRect(0, 0, box.width, 400); 
g.endFill(); 

// Reapply mask 
box.mask = m; 

など。

AS3プロジェクト(Flexではなく)で作業している場合は、幅と高さの設定をかなり忘れることがあります。

+0

恐ろしい!おかげさまで、これは完璧なスタートでした。また、(ディスプレイリストにマスクを追加した後で)それが高さのトゥイーンを作成できることもわかりました - まさに私が探していた効果! –

1

Sprite自体を拡張する代わりに、背景要素を展開してください。これにより、うまくいけば9スライススケーリングが有効になります。

マスクを使用して追加のコンテンツを非表示にしているようです。あなたは単にマスクの高さを変更することを検討することができます。