четверг, сентября 20, 2007

Компоненты из ActionScript

Хотел проверить почему происходит ошибка.

import fl.controls.Slider;
var mySlider:Slider = new Slider();
mySlider.move(10, 10);
addChild(mySlider);

Библиотека fl.controls.Slider создала несколько проблем:
  • Под FlashDevelop (Flex SDK) - выдала несколько предупреждений, что некоторые из методов не возвращают никаких значений (не было проставленно :void).
  • Под Flex и Flash CS3 просто не небыло найдено такой библиотеки. То же самое и с другими компонентами.

Поиск показал, что эти библиотеки находятся здесь: "C:\Program Files\Adobe\Adobe Flash CS3\en\Configuration\Component Source\ActionScript 3.0\User Interface".

Честно говоря, непонял, почему компилятор не ищет сам этих библиотек...
Добавил путь в Classpath и всё откомпилировалось.

Да, в хелпе так и написано: добавить "$(AppConfig)/Component Source/ActionScript 3.0/User Interface"

В итоге - мало того, что источник ошибки я не нашел, ошибки выдают и другие компоненты, когда я пытаюсь их создавать:
TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/addChildAt() at fl.controls::BaseButton/fl.controls:BaseButton::drawBackground() at fl.controls::BaseButton/fl.controls:BaseButton::draw() at fl.core::UIComponent/drawNow() at fl.controls::ComboBox/fl.controls:ComboBox::drawLayout() at fl.controls::ComboBox/fl.controls:ComboBox::draw() at fl.core::UIComponent/::callLaterDispatcher()

Разберемся позже.

3 комментария:

Irishka комментирует...

Чтобы компонент Button при создании не бросал ошибок его нужно добавить в библиотеку [myFlash].fla

Анонимный комментирует...

Дорогая Irishka, не могли бы чуть-чуть поподробней рассказать, как добавить компонент в библиотеку, и как его потом связать с кодом в [myFlash].as. Я могу ошибаться, так как очень плохо знаком с AS1-2, но разве библиотека, это не пережиток прошлого и осталась только для совместимости с AS1-2.
И вообще я немного удивлен, эта проблема явно проявляется часто, но о ней нет никакой информации на форумах, в спецификациях и т.д. Неужели народ с ней не сталкивается или она решается довольно банально, чтобы о ней говорить.
Racer, думаю ни один я буду благодарен, если общими усилиями будет найдено решение.

Racer комментирует...

Честно говоря, пока не сталкивался в жизни с этой проблемой. Подозреваю, что если это действительно баг Flex, то его либо уже пофиксили, либо это сделают в обозримом будущем.