Используйте StyleManager.setStyleDeclaration для установки скинов кнопок во Flex - PullRequest
0 голосов
/ 09 февраля 2010

Я пытаюсь загрузить SWF-файл, который имеет обложки кнопок в качестве изображений (в библиотеке SWF-файла я задал свойства экспорта, который называется «TickMark») и установить обложку гибкой кнопки с помощью StyleManager.setStyleDeclaration. 1001 *

Я получаю ошибки, такие как «Несоответствие числа аргументов в TickMark (). Ожидаемый 2, получил 0. '

Вот что я пытаюсь сделать:

 private function init():void
            {
             loader = new Loader();
             loader.contentLoaderInfo.addEventListener(Event.COMPLETE,styleSWFLoaded);
             loader.load(new URLRequest("styles.swf"),new LoaderContext(false,ApplicationDomain.currentDomain));

            }

  private function createStyle(styleName:String):void
            {

             var style:CSSStyleDeclaration = new CSSStyleDeclaration(styleName);


                var cls:Class = ApplicationDomain.currentDomain.getDefinition(ss) as Class;

                style.setStyle("upSkin",cls);

              }
             }
             StyleManager.setStyleDeclaration(".buttonme",style,true);
            }

Когда я применяю этот новый стиль 'buttonme' к кнопке, я получаю ошибку ниже:

ArgumentError: Error #1063: Argument count mismatch on TickMark(). Expected 2, got 0.

Не уверен, почему это происходит, и странно то, что когда я встраиваю тот же файл SWF, он работает, как показано ниже:

[Embed(source="styles.swf", symbol="Tick")] 
private var GraphicClass:Class;

Если я использую класс GraphicClass в setStyleDeclaration, он работает ... но в основном я хочу его динамически.

Или есть другие простые способы динамического создания гибкой кнопки (изображения)?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2010

Я полагаю, что когда вы встраиваете символ экспорта в ваше flex-приложение, он будет заботиться о размере и, возможно, просто встраивать png напрямую.

Поскольку ваш класс символов расширяет BitmapData, его необходимо создавать, передавая необходимые аргументы в конструктор. Так что, какую бы ошибку вы ни получили, это дизайн и работа, как и ожидалось.

Вы можете заключить png в символы другого типа (спрайт, мувиклип и т. Д.) И экспортировать. Это должно работать нормально при использовании в setStyle (.., ..)

0 голосов
/ 09 февраля 2010

Вы должны иметь возможность динамически настраивать свой скин. Это, вероятно, связано с вашим классом TickMark. Когда вы делаете style.setStyle("upSkin", cls);, я предполагаю, что cls равно TickMark и у него есть два обязательных аргумента конструктора: TickMark(arg1:Object, arg2:Object). Это правда? Где-то в методе setStyle он делает new cls().

Если это так, просто убедитесь, что нет аргументов конструктора, и он должен работать.

Если нет, попробуйте выполнить трассировку стека и использовать точек останова в Flex Builder, если это еще не сделано, это должно помочь выявить проблему.

Лучший, Lance

...