2011-03-31 10 views
0

こんにちは、私はキャンバスの成分を増やすためにどのように行列を使うことができるのだろうかと思っていました。 可能であれば、研究のコードを表示してください)Flex。キャンバスをマトリックスで拡大する

+0

「のコンポーネントをキャンバス "はいくつかのことを意味することができます。どうか明らかにしてください。 – cwallenpoole

+0

+0

**キャンバスのサイズをスライダで変更する必要があり、キャンバスの量がスクロールするように見える親コンポーネントよりも大きい** –

答えて

3

まずはcorresponding documentationを探索する必要があります。

その後、次のコードを試すことができます。

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application layout="absolute" minHeight="600" minWidth="955" xmlns:mx="http://www.adobe.com/2006/mxml"> 
    <mx:Script> 
    <![CDATA[ 
     /** 
     * Stores the button size multiplier on roll over. 
     */ 
     public static const SIZE_MULTIPLIER:Number = 2.5; 

     /** 
     * Stores initial button's transfrom matrix. 
     */ 
     private var buttonMatrix:Matrix; 

     protected function zoomedButton_rollOverHandler(event:MouseEvent):void 
     { 
      var zoomedButton:Button = event.currentTarget as Button; 
      // Get initial button transform matrix 
      var matrix:Matrix = zoomedButton.transform.matrix; 
      buttonMatrix = matrix.clone(); 
      // Modify matrix to move button's center to the Canvas (0, 0) point. 
      matrix.translate(-zoomedButton.width/2 - zoomedButton.x, 
       -zoomedButton.height/2 - zoomedButton.y); 
      // Modify matrix to scale using multiplier value 
      matrix.scale(SIZE_MULTIPLIER, SIZE_MULTIPLIER); 
      // Modify matrix to return button back 
      matrix.translate(zoomedButton.width/2 + zoomedButton.x, 
       zoomedButton.height/2 + zoomedButton.y); 
      // Apply resulting matrix 
      zoomedButton.transform.matrix = matrix; 
     } 

     protected function zoomedButton_rollOutHandler(event:MouseEvent):void 
     { 
      var zoomedButton:Button = event.currentTarget as Button; 
      // Restore buttons position 
      zoomedButton.transform.matrix = buttonMatrix; 
     } 
    ]]> 
    </mx:Script> 

    <mx:Panel height="50%" horizontalCenter="0" verticalCenter="0" width="50%" layout="absolute"> 
     <mx:Button label="Test" rollOut="zoomedButton_rollOutHandler(event)" 
      rollOver="zoomedButton_rollOverHandler(event)" x="100" y="50" /> 
    </mx:Panel> 
</mx:Application> 

を私は説明の目的のためにレイアウト=「絶対」でパネルを使用するが、それはキャンバス(あなたが問題なくキャンバスを使用することができます)と同じです。ショートカットとして

そしてもちろん、あなたが(マトリックスを形成し、規模を考慮するCONCAT()メソッドを使用します)と(変換できます)方法:

 protected function zoomedButton_rollOverHandler(event:MouseEvent):void 
     { 
      var zoomedButton:Button = event.currentTarget as Button; 
      var matrix:Matrix = zoomedButton.transform.matrix; 
      buttonMatrix = matrix.clone(); 
      matrix. 
       concat(new Matrix(1, 0, 0, 1, -zoomedButton.width/2 - zoomedButton.x, 
            -zoomedButton.height/2 - zoomedButton.y)); 
      matrix.concat(new Matrix(SIZE_MULTIPLIER, 0, 0, SIZE_MULTIPLIER)); 
      matrix. 
       concat(new Matrix(1, 0, 0, 1, zoomedButton.width/2 + zoomedButton.x, 
            zoomedButton.height/2 + zoomedButton.y)); 
      zoomedButton.transform.matrix = matrix; 
     } 

・ホープこのことができます:)

関連する問題