Ошибка № 1063: Несоответствие числа аргументов в com.flashden :: MenuItem (). Ожидаемый 1, получил 0 - PullRequest
0 голосов
/ 10 апреля 2010

Я создаю новый сайт, используя скрипт ниже, встроенный в мой SWF. Но я продолжаю получать эту ошибку на всех страницах: Ошибка № 1063: Несоответствие числа аргументов в com.flashden :: MenuItem () Ожидаемый 1, получил 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 Ответ

1 голос
/ 10 апреля 2010

код ошибки означает, что где-то вы создаете экземпляр объекта, не передавая область видимости var. Это часто путем добавления на сцене, а не программно. Проверьте код и убедитесь, что у вас нет вызовов для 'new menuitem ()' без вар. Если вы добавляете на сцену, подумайте о создании функции setcope.

- изменить -

если вы пытаетесь сделать это программно, удалите все элементы этого со сцены, а затем инициализируйте и добавьте его на сцену следующим образом:

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

если вместо этого вы бы предпочли реализовать это для непосредственного добавления к сцене, удалите область видимости из скобок:

public function MenuItem()

удалить эту строку:

this.scope = scope;

затем добавьте функцию, которая выглядит следующим образом:

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

затем в начале кода в вашем приложении вызовите функцию объекта (я использую меню, но переименуйте это, чтобы соответствовать имени экземпляра объекта, как установлено на сцене):

menu.setScope(this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...