Я довольно смущен следующей проблемой и был бы благодарен за некоторую ясность.
В общем, как я работаю, включает в себя проектирование всей моей графики в Flash Authoring, преобразование их в символы Sprite путем изменения базыкласс flash.display.Sprite, присвойте моим экземплярам имена и, наконец, экспортируйте их в ActionScript.
этот подход фактически позволяет мне динамически создавать свойства в коде в моих экземплярах Sprite, которые я экспортировал в ActionScript, так же, какесли бы они были экземплярами MovieClips.Я не совсем уверен, почему я могу это сделать, но я могу.при опросе объектов, чтобы удостовериться в их суперклассе, они действительно являются спрайтами, а не MovieClips.
однако, как и ожидалось, если я запрограммирую новый спрайт с нуля в коде и попытаюсь динамически добавить свойство в новыйзапрограммированный спрайт приведет к ошибке времени компиляции.
package
{
import flash.display.Sprite;
import flash.utils.getQualifiedSuperclassName;
public class Document extends Sprite
{
public function Document()
{
trace(getQualifiedSuperclassName(blueOvalInstance));
//flash.display::Sprite (it's not a MovieClip)
trace(blueOvalInstance.hasOwnProperty("currentFrame"));
//false (ok, ok, it's definately not a MovieClip)
blueOvalInstance.myNewProperty = true;
//dynamically added boolean property on a Sprite instance
trace(blueOvalInstance.hasOwnProperty("myNewProperty"));
//true. fancy that! my Flash Authoring exported Sprite has a dynamically added property
codeSprite();
}
private function codeSprite():void
{
var myCodedSprite:Sprite = new Sprite();
myCodedSprite.graphics.beginFill(0xFF0000);
myCodedSprite.graphics.drawRect(0, 0, 100, 100);
myCodedSprite.graphics.endFill();
addChild(myCodedSprite);
myCodedSprite.anotherNewProperty = true;
//dynamically added boolean property on a Sprite instance, just like before!
//Compile Time Error!!!
//1119: Access of possibly undefined property anotherNewProperty through a reference with static type flash.display:Sprite.
}
}
}
, так почему же я могу динамически добавлять свойства к экспортируемым спрайтам в моем классе документа, если они не MovieClips, тогда как я не могу, если я создаю их самв коде?
на следующем изображении показан новый символ BlueOval, экспортируемый в ActionScript из Flash Authoring с базовым классом Sprite (не MovieClip).обратите внимание на новый зеленый (вместо синего) цветной значок «Видеоклип» на панели библиотеки.