1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ActionScrip 3.0 Ajuda!

Discussão em 'Programação' iniciada por Mosie, 11 de Outubro de 2012. (Respostas: 4; Visualizações: 656)

  1. 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 + ".");}
    }
    
    
    
     
  2. 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;
     
  3. infor69

    infor69 Power Member

    Programação multimédia no ismai?
     
  4. patCRUZ

    patCRUZ Power Member

    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;
     
  5. 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++;
    }
    
     

Partilhar esta Página