эта [строка] не может быть добавлена ​​в мувиклип - PullRequest
0 голосов
/ 12 марта 2011

Допустим, у меня есть MovieClip под названием «Box», а «String» на самом деле «box», но это не MovieClip

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не могу использовать что-то вроде circle.addChild (this [String])

Я попытался отследить эту ячейку [Strin] ==, и результат возвращает true. И когда я удаляю circle.addChild (этот [String]), он не добавляет Box в него. НО, когда я проследил, есть ли какой-либо новый объект, добавленный к кругу, количество все еще остается тем же.

Есть идеи, в чем здесь проблема?

Ответы [ 2 ]

2 голосов
/ 12 марта 2011

Если я вас понял, вы пытаетесь добавить MovieClip с именем (имеет имя экземпляра) String внутри другого MovieClip с именем Box , верно?

Ну, вы не можете дать имя String объекту, потому что String - это имя класса в ActionScript 3.0
Вы не можете назвать объект с любым именем класса или защищенным ключевым словом, например if, for, class, Boolean ...
Это слова, которые ActionScript использует глобально (это ключевые слова верхнего уровня).

Также обратите внимание, что хотя вы можете назвать объект (дать ему имя экземпляра) MovieClip, Sprite, Loader, Stage и т. Д., Все имена тезисов используются ActionScript в качестве имен классов, внутри пакетов, которые можно импортировать в вашу анимацию / приложение, и Flash автоматически импортирует почти каждый из них для вас.
Если вы называете свои объекты этими словами, вы рискуете, например, кодами, которые не работают должным образом или не компилируются вообще ...

Как указано @ Bosworth99 и @ merv , вы также можете отметить соглашения об именах, используемые ActionScript, UpperCamelCase и lowerCamelCase .

Классы (по соглашению) пишутся с помощью UpperCamelCase (с заглавной первой буквой), которая указывает, что name является именем класса.
Объекты, как правило, пишутся с помощью lowerCamelCase (с нижней первой буквой и каждым новым составным словом с верхним регистром), что указывает на то, что слово является именем объекта (или другим ключевым словом, которое уже может быть зарезервировано).

0 голосов
/ 12 марта 2011

Ваш синтаксис немного странный - вы говорите, что у вас есть MC с именем 'Box'.Вы создаете это во флэш-идеале или программно?в любом случае - вы, кажется, ссылаетесь на классы, а не на экземпляры класса (объекта).Попробуйте:

var _circle:MovieClip;
var _box:Sprite;

private function createDisplayObjects():void
{
_circle = new MovieClip();
this.addChild(_circle);

_box = new Sprite();
_circle.addChild(_box);

}

И - в соответствии с общепринятой практикой, имена классов пишутся с большой буквы, а имена экземпляров - lowerCamelCase.Мне также нравится подчеркивание префиксов частных переменных.

NemoStein абсолютно прав - зарезервированные ключевые слова будут мешать вашему коду каждый раз ...

удачи

...