2015-10-09 1 views
0

Obtention de cette erreur sur AS3. TypeError: Erreur # 1006: la valeur n'est pas une fonction. Je suis nouveau et ne peux pas comprendre pourquoi cette erreur se produit. Toute aide est grandement appréciée.Obtention de cette erreur sur AS3 .TypeError: Erreur # 1006: la valeur n'est pas une fonction.

var wallet = false; 
var bag = false; 
var lunch = false; 
wallet.addEventListener(MouseEvent.CLICK, walletClick); 
    lunch.addEventListener(MouseEvent.CLICK, lunchClick); 
    bag.addEventListener(MouseEvent.CLICK, bagClick); 
    function walletClick(event:MouseEvent) 
    { 

    if (wallet == true) 
    { 
     trace("You Already found your Wallet,look Elsewhere"); 
     TextBox.text ="You Already found your Wallet,look Elsewhere"; 
    } 
    else 
    { 
     trace("You found your Wallet"); 
     wallet = true; 
     TextBox.text = "You found your Wallet"; 
    } 
    } 

    function lunchClick(event:MouseEvent) 
    { 
     if (lunch == true) 
    { 
     trace("You Already found your Lunch Box,look Elsewhere"); 
     TextBox.text ="You Already found your Lunch Box,look Elsewhere"; 
    } 
    else 
    { 
     trace("You found your Lunch Box"); 
     lunch = true; 
     TextBox.text = "You found your Lunch Box"; 
    } 
    } 



    function bagClick(event:MouseEvent) 
    { 
     if (bag == true) 
    { 
     trace("You Already found your bag,look Elsewhere"); 
     TextBox.text ="You Already found your bag,look Elsewhere"; 
    } 
    else 
    { 
     trace("You found your bag under the Table"); 
     bag = true; 
     TextBox.text = "You found your bag under the Table"; 
    } 
    } 

Obtention de cette erreur sur AS3. TypeError: Erreur # 1006: la valeur n'est pas une fonction. Je suis nouveau et ne peux pas comprendre pourquoi cette erreur se produit. Toute aide est grandement appréciée.

Répondre

2

vous avez 3 booléens:

var wallet = false; 
var bag = false; 
var lunch = false; 

puis vous ajouter des écouteurs d'événement pour eux. mais comme ce ne sont pas des instances de EventDispatcher, vous obtenez cette erreur

Pourquoi faites-vous cela? Vous devez ajouter des écouteurs d'événement de clic aux objets d'affichage. Si vous avez ces objets d'affichage (portefeuille nommé, sac et déjeuner), alors vous les observez avec des booléens ici. Dans ce cas Renommez vos vars ici (et tous leurs occurences, à l'exception des lignes avec addEventListener Par exemple, pour walletClicked, bagClicked, lunchClicked

Et aussi:. Toujours utiliser les annotations de type, puisque vous êtes en AS3

.
var wallet:Boolean = false; 

alors wallet.addEventListener(...) PROVOQUERONT erreur de compilation, pas erreur d'exécution qui est beaucoup plus facile de corriger

mise à jour:..

Vous devriez également envisager de réécrire ce code d'une manière plus générale d'exclure les répétitions de code:

var walletFound:Boolean = false; 
var lunchFound:Boolean = false; 
var bagFound:Boolean = false; 

wallet.addEventListener(MouseEvent.CLICK, onItemClick); 
lunch.addEventListener(MouseEvent.CLICK, onItemClick); 
bag.addEventListener(MouseEvent.CLICK, onItemClick); 

function onItemClick(event:MouseEvent):void { 
    var found:Boolean; 
    var itemName:String; 
    switch (event.currentTarget) { 
     case wallet: 
      found = walletFound; 
      itemName = "wallet"; 
      walletFound = true; 
      break; 
     case bag: 
      found = bagFound; 
      itemName = "bag"; 
      bagFound = true; 
      break; 
     case lunch: 
      found = lunchFound; 
      itemName = "lunch box"; 
      lunchFound = true; 
      break; 
     default: return; 
    } 

    var text:String; 
    if (found) { 
     text = "You Already found your " + itemName + ",look Elsewhere"; 
    } else { 
     text = "You found your " + itemName; 
    } 

    trace(text); 
    TextBox.text = text; 
} 

pas testé, mais devrait fonctionner.

+0

Merci l'homme, ça a marché !! – Raul