2013-02-12 73 views
0

在Flash AS3中,我創建了25個正方形與事件(當你向它會以全屏顯示正方形的一個點擊)它的工作原理上的中間方(這是正常的,因爲它是在中間),但它超過了屏幕的其他...我怎樣才能顯示他們都在同一個中間?全屏顯示正方形

package { 
import flash.display.*; 
import flash.events.*; 
import gs.*; 
import flash.text.TextField; 

public class Fenetre extends MovieClip { 
    var mc:MovieClip; 
    var bol:Boolean; 

    public function Fenetre(pX,pY,largeur) { 
     mc = new MovieClip(); // Instanciation de l'objet MovieClip 
     mc.x = pX; // Détermination de sa positon en X 
     mc.y = pY; // Détermination de sa positon en Y 
     addChild(mc); // Affichage de l'objet mc 
     mc.graphics.beginFill(0xFFFFFF); 
     mc.graphics.lineStyle(.1,255);//épaisseur contour, couleur de contour 
     mc.graphics.drawRect(-largeur/2,-largeur/2,largeur,largeur); 

     mc.graphics.endFill(); 
     mc.scaleX = mc.scaleY = .166; //.5=0.5 
     // 
     mc.buttonMode = true; 
     mc.addEventListener(MouseEvent.CLICK,onClique); 
    } 
    private function onClique(e:MouseEvent):void { 
     bol=!bol; 
     if(bol){ 
      TweenLite.to(mc,1,{scaleX:1,scaleY:1,onComplete:plein_ecran()}); 
     } 
     else { 
      TweenLite.to(mc,1,{scaleX:.166,scaleY:.166}); 
     } 
    } 
    private function plein_ecran(){ 
     var num:int=MovieClip(parent).numChildren-1; 
     MovieClip(parent).setChildIndex(this,num); 
    } 
    private function decharger(){ 
     //trace("decharger"); 
    } 
    public function createTextField(x:Number, y:Number, width:Number, height:Number, nbre:int):TextField { 
     var result:TextField = new TextField(); 
     result.x = x; 
     result.y = y; 
     result.width = width; 
     result.height = height; 
     result.text = nbre.toString(); 
     addChild(result); 
     return result; 
    } 
} 

}

我在主類顯示我的方塊:

package { 
import flash.display.*; 
import flash.text.TextFieldAutoSize; 

[SWF(width=600,height=600)] 
public class Main extends MovieClip { 
    var fenetre:Fenetre; 
    var xml:charge_xml; 
    var milieuX,milieuY:int; 
    var i,j,k,l,maxX,maxY:int; 

    public function Main() { 
     milieuX=milieuY=5; 
     xml=new charge_xml(); 
     j=5; 
     l=0; 
     for(j=0;j<milieuY;j++) { // Gère les positions en X 
      for(i=0; i<milieuX;i++) { // Gère les positions en Y et X - Remplissement des cases 
       l++; 
       fenetre = new Fenetre(100*i+100,100*j+100,600); 
       fenetre.createTextField(100*i+100,100*j+100,20,20,l); 
       addChild(fenetre); 
      } 
     } 
    } 
} 

}

對不起,我的英語!我是法國人 ... !

感謝您的幫助!

回答

0

要快速解決您的問題會在你補間的scaleX和scaleY屬性,然後再返回到其原來的位置同時補間正方形的中心位置當方追溯到小尺寸。你將需要只是一對夫婦的小變化對您的Fenetre類:

  • 首先,存儲類變量廣場原來的位置:

    public class Fenetre extends MovieClip { 
        private var mc:MovieClip; 
        private var bol:Boolean; 
        private var x0:Number; 
        private var y0:Number; 
    
        public function Fenetre(pX:Number,pY:Number,largeur:uint) { 
    
        x0 = pX; 
        y0 = pY; 
        //rest of your code is the same... 
    
        } 
    
  • 然後,在你的Mouse.CLICK聽衆,吐溫到中心位置並返回。我想你會需要開始補間改變孩子指數之前,而不是onComplete

    private function onClique(e:MouseEvent):void { 
        bol=!bol; 
    
        if(bol){ 
        plein_ecran(); 
        TweenLite.to(mc,1,{scaleX:1,scaleY:1,x: mc.width/2, y: mc.height/2}); 
        } 
        else { 
        TweenLite.to(mc,1,{scaleX:.166,scaleY:.166, x:x0, y:y0 }); 
        } 
    } 
    
+0

它的工作原理,但我在的位置x和y但由於增添了不少+250! 但現在我試圖在不同的廣場,以顯示我的XML(TXT和JPG)的不同內容..我試圖for循環,但我認爲它必須像TweenLite的一種其他的方式可能? – 2013-02-16 12:03:15

+0

我準確的,我已經收取我的XML!謝謝 – 2013-02-16 12:16:13