ActionScrip 3.0 Ajuda!

Mosie

Membro
Boas pessoal.

Eu tenho um pequeno script em AS 3.0 e falta-me um pouco de código,
é um exercicio que eu penso ser fácil mas estou-me a iniciar nisto e estou "encalhado" aqui.

Bem, o que eu quero é:

Com o clique do rato aparecem 1 bola de sabão (estática), e esta nao pode sair do ecra.
ou seja so pode ser criada se se vir A TOTALIDADE da mesma bola.

Temos ainda o facto de nao poderem ser criadas mais de DEZ BOLAS.

Até aqui tudo bem. chega a parte de que quando a primeira bola for criada as seguintes são automaticamente criadas 2PX para a direita e 2PX para baixo.
e nao estou a conseguir fazer istoo. deixo o código que já fiz e peço que alguem me ajude com o este ultimo passo.

PS: A imagem tem 150x150 px, e é uma bola azul. em png, e tem como nome de class "Bubble"

Código:
//Set the number of bubble to showvar numberOfBubbles:int = 0;


//Output stage size
trace("Stage Width = " + stage.stageWidth + "; Stage Height = " + stage.stageHeight);


stage.addEventListener(MouseEvent.MOUSE_DOWN, addBubbleAtLocation);




function addBubbleAtLocation(evt:MouseEvent):void{
    //Obtain MouseEvent Location (on stage)
    var mX:Number = evt.stageX;
    var mY:Number = evt.stageY;
    


    
    //Create a new Bubble
    var bubble:Bubble = new Bubble();
    
    var minLocationX:Number = bubble.width / 2;
    var minLocationY:Number = bubble.height / 2;
    var maxLocationX:Number =stage.stageWidth - minLocationX;
    var maxLocationY:Number =stage.stageHeight - minLocationY;
    
    
        if (mX>=minLocationX && mY>=minLocationY && mX <= maxLocationX && mY <= maxLocationY){
            //Set location of the bubble on the stage
            bubble.x = mX;
            bubble.y = mY;
            
            
            //Maximo de dez bolhas
            if(numberOfBubbles<10){
                //Add the bubble to the stage.
                stage.addChild (bubble);
                numberOfBubbles++; //aumenta a VAR numberOfBubbles
                trace(numberOfBubbles);
            } else{
                trace("You are out of bubbles");
                }
        }else{
            //Output Event Location 
            trace("Out of bound X = " + mX + ";  Y = " + mY + ".");}
}
 
CORRECÇÃO

ONDE SE LÊ:

//Set the number of bubble to showvar numberOfBubbles:int = 0;


deve se ler:

//Set the number of bubble to show

var numberOfBubbles:int = 0;
 
Até aqui tudo bem. chega a parte de que quando a primeira bola for criada as seguintes são automaticamente criadas 2PX para a direita e 2PX para baixo. e nao estou a conseguir fazer isto. deixo o código que já fiz e peço que alguem me ajude com o este ultimo passo.

Faltam alguns detalhes...

Partindo do pressuposto que elas tem que estar sempre visíveis e dentro dos limites da aplicação, tu só crias a primeira bola, as restantes são criadas automaticamente em função da posição da primeira? As posições da bolas adicionadas automaticamente podem ser random? Podem ser adicionadas sobre a forma grelha? Dependendo do aspecto visual que se pretenda pode ser feito de muitas maneiras...

Algumas notas sobre o teu código:
Estas a criar instâncias de objectos Bubble que podem não ser adicionados ao stage caso as validações falhem o que queima processamento para nada;
Não estas a verificar a existência de stage o que pode causar erros;
 
Para apenas permitir criar bolas dentro dos limites é simples mas depende do Anchor Point da bola.
Ou seja.
Se tens uma bola com o AnchorPoint em Top Left, podes criar em todo o lado excepto
Código:
var createBubble:Boolean = true;
if(mX > stage.stageWidth - 150 || mY > stage.stageHeight - 150){
createBubble = false;
}
if(createBubble){
//Cria a bola aqui
}

Porem se o anchor point está no centro
Código:
var createBubble:Boolean = true;
if(mX > stage.stageWidth - 75 || mX < 75 || mY > stage.stageHeight - 75 || mY < 75){
createBubble = false;
}
if(createBubble){
//Cria a bola aqui
}

Não percebo mt bem aquela de as bolas serem criadas 2px para baixo e para direita.
Faz-me crer que serão criadas automaticamente. Se assim fôr aqui deixo um exemplo.
Nota: Estou a assumir que a class Bubble cria uma bola com o anchor point no Top Left com 150x150px.
Código:
var breakEvent:Boolean = false;
var posX:Number = mX; 
var posY:Number = mY; 
while(numberOfBubbles < 10){

if(breakEvent) break;
if(posX > stage.stageWidth - 150 || posY > stage.stageHeight - 150){
breakEvent= false;
}
/*
Código para gerar a bola aqui
*/
posX += 2; posY += 2;
numberOfBubbles++;
}
 
Back
Topo