在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 :(得分: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 });
}
}