2011-01-13 5 views
1

私はアバターとして鳥のフラッシュゲームを作っています。そして、鳥がアイアン・バード・ピックアップをピックアップすると、アイアン・マンの曲が演奏されます。しかし、問題は次のとおりです。このオーディオの新しいインスタンスを作成し続けます。だから私は十万オジーの歌を歌っているようだ。しかし、彼らはお互いの間に2番目の遅れがあります。一度だけ曲を再生する機能はありますか?これを行うには小さなスクリプトですか?AS3の10万オジーズ

これは私のスクリプトです:

var IronManMusic:Sound = new IronManSong(); 
var IronManChannel:SoundChannel = new SoundChannel(); 

var backgroundMusic:Sound = new BackgroundMusic(); 
var myChannel:SoundChannel = new SoundChannel(); 
myChannel = backgroundMusic.play(); 

if(ironbird==true){ 
    laatstejump = 9; 
    myChannel.stop(); 
    IronManChannel = IronManMusic.play(); 
} 

ironbirdブールはUpdatescreen機能で発見されました。私はこれが問題だと思うが、わからない。ヘルプは本当に感謝しています! :)

答えて

0

フム...それがあるべきようになっています

if(ironbird==true) { 
    [...] 
    ironbird = false; 
} 

それとも、1目盛り/反復の後に戻っfalseからironbirdを設定する必要が言及した少なくともUpdatescreen機能。

EDIT:あなたは答えとして投稿のコードを見てみると、それはさらに簡単です:

あなたは

if(birdie.hitTestPoint(ironbirdpickup.x,ironbirdpickup.y,true)){ 
    ironbird = true; 
    ironbirdpickup = Null; 
} 

if(ironbird==true){ 
    laatstejump = 9; 
    myChannel.stop(); 
    IronManChannel = IronManMusic.play(); 
} 

をやって、アニメーションや他のもののためにironbird変数を使用しています。サウンドトリガーを移動すると、サウンドが1回だけトリガーされます(またはhitTestPointがトリガーされるたびに頻繁にトリガーされる)。

if(birdie.hitTestPoint(ironbirdpickup.x,ironbirdpickup.y,true)){ 
    ironbird = true; 
    ironbirdpickup = Null; 
    myChannel.stop(); 
    IronManChannel = IronManMusic.play(); 
} 

if(ironbird==true){ 
    laatstejump = 9; 
} 

あなたはまだironbirdfalseにどこかに、f.e.をリセットする必要がありますアニメーションが行われたとき。

+0

ああ...私はそれが簡単なところで欲しい。しかし、私がこれを行うと、Iron Birdのアニメーションは再生されません。そして、オーディオの多くの異なるインスタンスが残っています。しかし、それほど厳しくなる前に。とにかくありがとう! :) – Amacoder

+0

この場合、使用している追加のコードを記入してください。 「アイアンバード」が使用されているすべての部品。また、ブール値を、サウンドをトリガするためだけに使用される 'ironbird_play'変数と、アニメーションなどに使用される' ironbird_whatever'変数に分割することも考えてください。 – schnaader

0

オーディオとアニメーションの部分で正確に何を意味するのかわかりませんが、ここに私のスクリプトがあります。

//loads keyboard events 
import flash.events.KeyboardEvent 

var laatstelook:int = 1; 
var ironbird:Boolean = false; 
var laatstejump = 1; 
var movebirdie:int = 2; 
var birdfatigue : Boolean = false; 
var birdtellery:int = 0; 
var birdtelleryvertrager = 0; 
var vy:Number=0; 
var movement:Boolean=false; 
var springen:Boolean=false; 
var gv:Number=0.1; 
var keyArray:Array = new Array(); 
var i:Number; 
var leftOrrightpressed:Number=0; 
var platformraak=false; 
var PlatformArray:Array = new Array(); 

var IronManMusic:Sound = new IronManSong(); 
var IronManChannel:SoundChannel = new SoundChannel(); 

var backgroundMusic:Sound = new BackgroundMusic(); 
var myChannel:SoundChannel = new SoundChannel(); 
myChannel = backgroundMusic.play(); 

for(i=0;i<222;i++){ 
    keyArray.push([i,false]); 
} 
//creating multiple objects from 1 object 
for (var a:int = numChildren - 1; a >= 0; a--){ 
    var child:DisplayObject = getChildAt(a); 
    if (child.name == "platform"){ 
     PlatformArray.push(child); 
    } 
} 

stage.addEventListener(KeyboardEvent.KEY_DOWN,checkKeysDown); 
stage.addEventListener(KeyboardEvent.KEY_UP,checkKeysUp); 
this.addEventListener(Event.ENTER_FRAME, UpdateScreen); 
function UpdateScreen(event:Event):void{ 

    //No multiple jumps in air 
    if(springen==true){ 

     birdie.gotoAndStop(laatstejump); 
     birdtelleryvertrager+=0.2; 
     birdie.y-=15; 
     birdie.y+=birdtelleryvertrager; 
     birdtellery++; 

     if(isKeyDown(39)==true){ 
      birdie.x += 5; 
      background.x += 1; 
      vcam.x += 5; 
      if(birdie.x <= 261.95){ 
       vcam.x = 275.5; 
       background.x -= 1; 
      } 
       if(ironbird != true){ 
        birdie.gotoAndStop(5); 
       }else{birdie.gotoAndStop(13);} 
     } 

     if(isKeyDown(37)==true){ 
      birdie.x-=5; 
      vcam.x -= 5; 
      background.x -= 1; 
      if(birdie.x <= 261.95){ 
       vcam.x = 275.5; 
       background.x += 1; 
      } 
      birdie.gotoAndStop(6); 
     } 

     //bird falls down 
     if(birdtellery>25){ 
      birdfatigue == true; 
      if(isKeyDown(39)==true){ 
       birdie.x-=4; 
       vcam.x -= 4; 
      } 

      if(isKeyDown(37)==true){ 
       birdie.x += 4; 
       vcam.x += 4; 
      } 

      birdtelleryvertrager+=0.8; 
     } 

     //bird can jump again (when on platform) 
     if(birdtellery>30){ 
      springen=false; 
     } 

    }else{ 
      if(birdfatigue == true){ 
       birdie.gotoAndStop(7); 
      } 

      //if right arrow button is pressed 
      if(isKeyDown(39)==true){ 
       birdie.x += movebirdie; 

       if(birdie.x >= 261.95){ 
        vcam.x += movebirdie; 
        background.x += 0.5; 
       } 
       if(ironbird != true){ 
        birdie.gotoAndStop(2); 
        laatstelook =1; 
       }else{birdie.gotoAndStop(11); 
         laatstelook =9; 
        } 

       laatstejump =5; 
       leftOrrightpressed =1; 

      } 

      if(isKeyDown(39)==false){ 
       if (leftOrrightpressed ==1){ 
        birdie.gotoAndStop(laatstelook); 
       } 

      } 

      //if left arrow button is pressed 
      if(isKeyDown(37)==true){ 

       birdie.x -= movebirdie; 
       background.x -= 0.5; 
       vcam.x -= movebirdie; 
       if(birdie.x <= 261.95){ 
        vcam.x = 275.5; 
        background.x += 0.5; 
       } 
       if(ironbird != true){ 
        birdie.gotoAndStop(3); 
        laatstelook =4; 
       }else{birdie.gotoAndStop(12); 
         laatstelook = 10; 
        } 

       laatstejump=6; 
       leftOrrightpressed =2; 
      } 

      if(isKeyDown(37)==false){ 
       if (leftOrrightpressed ==2){ 
        birdie.gotoAndStop(laatstelook); 
       } 
      } 

      //if space button is pressed 
      if(isKeyDown(32)==true && springen==false){ 
       springen=true; 
      } 

     } 

    if(birdie.hitTestPoint(ironbirdpickup.x,ironbirdpickup.y,true)){ 
     ironbird = true; 
     ironbirdpickup = Null; 
    } 

    if(ironbird==true){ 
     laatstejump = 9; 
     myChannel.stop(); 
     IronManChannel = IronManMusic.play(); 
    } 



    addEventListener(Event.ENTER_FRAME,ctrl_birdie); 


    function ctrl_birdie(e:Event){ 

     //when bird touches one of the platforms, bird stops falling 
     for(var a in PlatformArray){ 
      if(PlatformArray[a].hitTestPoint(birdie.x,birdie.y,true)){ 
       birdtelleryvertrager=0; 
       birdtellery = 0; 
       birdie.y-=1; 
      } 
     } 
    } 

    if(birdie.hitTestPoint(platform.platformboundingbox.x,platform.platformboundingbox.y,true)){ 
     trace("hit"); 
    } 

    //gravity 
    vy = 10; 
    birdie.y+=vy; 
} 

//checks if certain key is pressed 
function checkKeysDown(event:KeyboardEvent):void{ 
    keyArray[event.keyCode][1]=true; 
} 
function checkKeysUp(event:KeyboardEvent):void{ 
    keyArray[event.keyCode][1]=false; 
} 
function isKeyDown(X){ 
    return keyArray[X][1]; 
} 

私はオランダですので、いくつかの変数が奇妙です。 xDあなたがそれを手に入れていないかどうか尋ねるだけです!