2010-04-09 3 views
0

Je crée un nouveau site en utilisant le script ci-dessous intégré dans mon swf. Mais je continue d'obtenir cette erreur sur toutes les pages: Erreur # 1063: Incompatibilité du nombre d'arguments sur com.flashden :: MenuItem(). Prévu 1, a obtenu 0.Erreur 1063: Incompatibilité du nombre d'arguments sur com.flashden :: MenuItem(). Expected 1, got 0

package com.flashden 
{ 
import flash.display.MovieClip; 
import flash.text.*; 
import flash.events.MouseEvent; 
import flash.events.*; 
    import flash.net.URLRequest; 
import flash.display.Loader; 

public class MenuItem extends MovieClip 
{ 
    private var scope; 
    public var closedX; :Number 

    public static const OPEN_MENU = "openMenu"; 

    public function MenuItem(scope) 
    { 
    // set scope to talk back to -------------------------------// 
    this.scope = scope; 

    // disable all items not to be clickable -------------------// 
    txt_label.mouseEnabled = false; 
    menuItemShine.mouseEnabled = false; 
    menuItemArrow.mouseEnabled = false; 

    // make background clip the item to be clicked (button) ----// 
    menuItemBG.buttonMode = true; 

    // add click event listener to the header background -------// 
    menuItemBG.addEventListener(MouseEvent.CLICK, clickHandler); 
    } 

    private function clickHandler (e:MouseEvent) 
    { 
    scope.openMenuItem(this); 
    } 

    public function loadContent (contentURL:String) 
    { 
    var loader:Loader = new Loader(); 
      configureListeners(loader.contentLoaderInfo); 

      var request:URLRequest = new URLRequest(contentURL); 
      loader.load(request); 

    // place x position of content at the bottom of the header so the top is not cut off ----// 
    loader.x = 30; 

    // we add the content at level 1, because the background clip is at level 0 ----// 
      addChildAt(loader, 1); 
    } 


    private function configureListeners(dispatcher:IEventDispatcher):void { 
      dispatcher.addEventListener(Event.COMPLETE, completeHandler); 
      dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 
      dispatcher.addEventListener(Event.INIT, initHandler); 
      dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
      dispatcher.addEventListener(Event.OPEN, openHandler); 
      dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
      dispatcher.addEventListener(Event.UNLOAD, unLoadHandler); 
     } 

     private function completeHandler(event:Event):void { 
      //trace("completeHandler: " + event); 
    // remove loader animation ----------------// 
    removeChild(getChildByName("mc_preloader")); 
     } 

     private function httpStatusHandler(event:HTTPStatusEvent):void { 
      // trace("httpStatusHandler: " + event); 
     } 

     private function initHandler(event:Event):void { 
      //trace("initHandler: " + event); 
     } 

     private function ioErrorHandler(event:IOErrorEvent):void { 
      //trace("ioErrorHandler: " + event); 
     } 

     private function openHandler(event:Event):void { 
      //trace("openHandler: " + event); 
     } 

     private function progressHandler(event:ProgressEvent):void { 
      //trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); 
     } 

     private function unLoadHandler(event:Event):void { 
      //trace("unLoadHandler: " + event); 
     }  

} 
} 
+1

@Suzanne: Si vous postez ici, les gens comprendront généralement que vous avez besoin d'aide. Ajouter de l'aide! au début de votre question distrait de ce que vous demandez. Suggérez-vous de raccourcir le sujet afin que les personnes ayant une expertise dans ce domaine sachent ce que vous demandez en un coup d'œil. –

+0

@Suzanne: et si vous avez plus de texte dans votre sujet que votre corps de message (moins le code), alors vous * devriez certainement * résumer le sujet à quelques mots et expliquer ** dans le corps de votre question **. –

+0

@Suzanne: veuillez formater correctement votre code en le sélectionnant dans l'éditeur, puis en tapant Ctrl-K ou en cliquant sur le bouton avec les zéros et les uns. –

Répondre

1

le code d'erreur signifie que quelque part vous instanciez l'objet sans passer la portée var. C'est souvent en ajoutant sur scène plutôt que par programmation. Vérifiez le code et assurez-vous que vous n'avez aucun appel pour 'new menuitem()' sans var. Pensez à faire une fonction setscope à la place si vous ajoutez à la scène.

--edit--

si vous essayez de le faire enlever tous les éléments programatically de ce de la scène, puis initialisez et l'ajouter à la scène comme si:

var menu = new MenuItem(this); 
addChild(menu); 

si au lieu vous préférez mettre en œuvre cette option pour ajouter directement à l'étape, retirer la portée des supports:

public function MenuItem() 

supprimer cette ligne:

this.scope = scope; 

puis ajouter une fonction qui ressemble à ceci:

public function setScope(scope){ 
    this.scope = scope; 
} 

puis au début du code dans votre application appelle la fonction d'objet (im en utilisant le menu, mais renomme ceci pour adapter le nom d'instance du objet tel que défini sur la scène):

menu.setScope(this); 
+0

Je ne sais pas vraiment comment résoudre ce problème. Im édité un script existant. – Suzanne

+0

ive mis à jour le post pour inclure des exemples de code, utilisez ceci comme base laissez-moi savoir si vous avez des problèmes. – longstaff

+0

Im toujours avoir des problèmes. C'est en me donnant d'autres erreurs que le compilateur est en train de lire. J'ai inclus un lien vers mes fichiers http://www.yourmarketingwiz.com/scripfiles/test2.zip Si vous pouvez jeter un coup d'oeil, je l'apprivoise. Les fichiers de script sont dans dev \ com \ flashden, j'apprécie toute votre aide jusqu'ici. – Suzanne

Questions connexes