Поскольку ваш класс button
распространяется SimpleButton
, все общедоступные и защищенные функции и свойства SimpleButton доступны в button
.
Класс SimpleButton имеет свойство downState
, поэтому при попытке объявить функцию под названием downState
в button
классе, вы получите сообщение об ошибке, потому что это столкновение с существующей организацией под названием downState
.
Чтобы исправить эту ошибку, просто использовать имя, которое еще не существует в области видимости (clickHandler
в моем примере ниже)
package {
import flash.display.DisplayObject;
import flash.display.SimpleButton;
import flash.events.MouseEvent; //add missing imports
public class button extends SimpleButton {
public function button(upState:DisplayObject=null, overState:DisplayObject=null, downState:DisplayObject=null, hitTestState:DisplayObject=null){
//super calls the base class constructor (SimpleButton)
super(upState, overState, downState, hitTestState);
//let's automatically add the click listener when the button is created
addListeners();
}
public function addListeners():void {
this.addEventListener(MouseEvent.CLICK, clickHandler);
}
public function clickHandler(event:MouseEvent):void {
trace('Test');
}
}
}
Также обратите внимание на несколько важных других изменений:
- Я добавил импорт для класса
MouseEvent
(в противном случае вы получите неизвестную ошибку класса).
- Я добавляю прослушиватель кликов к
this
, так как button
относится к классу (а не к экземпляру класса) и даст вам неизвестную ошибку свойства или метода.
- Я изменил конструктор (функция, имя которой соответствует классу и запускается при создании/создании объекта), чтобы принимать все те же параметры, что и SimpleButton.
Ошибка в том, что ваш базовый класс (простая кнопка) уже имеет свойство «downState», поэтому вы не можете создать функцию с тем же именем. – BadFeelingAboutThis
Теперь я получаю сообщение об ошибке: Строка 16 Столбец 31 1046: Тип не был найден или не был константой времени компиляции: MouseEvent – Artsicle