Компонент AS3 NumericStepper

#actionscript-3 #flash-cs4

#actionscript-3 #flash-cs4

Вопрос:

Я создаю приложение Actionscript 3 на Flash CS4. Я создал видеоролик с именем dropDown, экспортируя его для Actionscript в виде выпадающего списка. Внутри этого видеоролика я удалил компонент NumericStepper. У меня также есть базовый видеоролик с полем с текстом, в котором говорится Добавить выпадающий экспорт для Actionscript как DropDownBtn. Действительно простой.

выпадающая кнопка Добавить создает экземпляр видеоролика с помощью прослушивателя событий и функции обратного вызова.

Как только экземпляр создан, я, похоже, не могу получить доступ к значению числового шагового параметра. МОЙ код выглядит следующим образом:

    //create the load dropdown button
    var newButton = new DropDownBtn();
    //position the button
    newButton.x = 20;
    newButton.y = 20;
    //and add it to the stage
    addChild(newButton);
    //add the event listener to the button
    newButton.addEventListener(MouseEvent.MOUSE_DOWN, addDropdown);

    function addDropdown(e:MouseEvent):void{

        //create and instance of the drop down
        var newDropDown = new dropDown();

        //move it over beside the add dropdown button
        newDropDown.x = newButton.width 40;
        newDropDown.y = 20;

        //add the instance of the newDropDown to the display stack
        addChild(newDropDown);

        //add the event listener to the dropdown
        newDropDown.addEventListener(Event.CHANGE, useDropDownValue);
    }

    function useDropDownValue(e:Event):void{
        //this is where I need to utilize the value of the Numeric Stepper
        //I thought it would be accessed as follows but it doesn't seem to work
        //I added a trace to make sure this function is being executed and that works
        //when i comment out my attempt at using the Numeric Stepper Value
        trace("useDropDownValue Function Accessed");
        var dropDownValue = newDropdown.value;
    }
  

Ответ №1:

у вас есть

  var newDropDown = new dropDown();
  

область действия находится внутри функции addDropdown

Вам нужно переместить его за пределы этой функции, чтобы придать ему глобальную область видимости

  //create the load dropdown button
    var newButton = new DropDownBtn();
    //position the button
    newButton.x = 20;
    newButton.y = 20;
    //and add it to the stage
    addChild(newButton);
    //add the event listener to the button
    newButton.addEventListener(MouseEvent.MOUSE_DOWN, addDropdown);



// GLOBAL SCOPE HERE
//create and instance of the drop down
var newDropDown = new dropDown();
    function addDropdown(e:MouseEvent):void{


        //move it over beside the add dropdown button
        newDropDown.x = newButton.width 40;
        newDropDown.y = 20;

        //add the instance of the newDropDown to the display stack
        addChild(newDropDown);

        //add the event listener to the dropdown
        newDropDown.addEventListener(Event.CHANGE, useDropDownValue);
    }

    function useDropDownValue(e:Event):void{
        //this is where I need to utilize the value of the Numeric Stepper
        //I thought it would be accessed as follows but it doesn't seem to work
        //I added a trace to make sure this function is being executed and that works
        //when i comment out my attempt at using the Numeric Stepper Value
        trace("useDropDownValue Function Accessed");
        var dropDownValue = newDropdown.value;
    }
  

Комментарии:

1. Он подумал, что это может быть проблема с областью действия. Экземпляр объекта теперь существует снаружи благодаря. Однако у меня есть еще одна проблема. Кажется, я не могу получить значение NumericStepper, которое находится внутри выпадающего видеоролика и создается как newDropDown. Я попробовал newDropDown.value и, похоже, это не сработало. есть идеи?

Ответ №2:

Хорошо, я понял.

Мне пришлось ссылаться на имя экземпляра NumericStepper внутри видеоклипа. Вот так.

 var numericStepperValue = movieClip.NumericStepperInstance.value;
  

спасибо за вашу помощь.