以全屏方块显示

时间:2013-02-12 00:27:56

标签: flash flash-cs5 flash-cs4 flashdevelop

在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);
            }
        }
    }
}

}

抱歉我的英文!我是法国人......!

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

快速修复问题的方法是在补间scaleX和scaleY属性的同时将广场补间到中心位置,然后再回到原始位置< / strong>当广场回到小尺寸时。您需要在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 });
       }
    }