Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   itemRenderer не отображает скин из swf (http://www.flasher.ru/forum/showthread.php?t=120712)

Peregrin 28.01.2009 18:21

itemRenderer не отображает скин из swf
 
Код:

/* CSS file */
.rollOverState {
        overSkin: Embed(source="defaultSkin.swf", symbol="itemRendererOverState");
}

сам itemRenderer для компонента List
Код:

<mx:Style source="styles/listItemRendererStyle.css"/>
<mx:Script>
        ...

        private function rollOverHandler(evenr:MouseEvent):void
        {
                this.styleName = "rollOverState";
        }
           
        ...
</mx:Script>
...

пролема в том, что этот скин никак не хочет отображаться. Может я что-то не так сделал или забыл что-то?

Peregrin 16.02.2009 12:27

вроде все сделано правильно, приложение видит символ itemRendererOverState из библиотеки файла defaultSkin.swf, потому что когда я меняю название символа, то он выдает ошибку. Но если видит, тогда почему не отображает?

GBee 16.02.2009 17:59

Попробуйте задать стиль этот самому листу.
Или сделайте в рендере еще один канвас(или от чего у вас отнаследован рендерер)и прицепить стиль к нему.

Peregrin 16.02.2009 18:51

проблема оказывается в том, что ни у HBox'а, у которого наследует мой itemRenderer, ни у List'а нету свойства overSkin. Когда я его вставлял в CSS-файл, он не выдавал ошибку, а когда вставил к сам компонент (inline), он говорит, что не знает что с этим делать, а когда вставляешь, например, в Button, то нормально все.
Что посоветуете? Как сделать так, чтобы List отображал красивые item'ы, возможно анимированные?

wvxvw 16.02.2009 20:44

Отнаследоваться от чего-то, у чего есть такой стиль, ну, или просто отнаследоваться от VBox'а и дописать такой стейт самому.

Peregrin 17.02.2009 12:25

Разобрался вроде. Для контейнеров нужно испльзовать свойство стиля backgroundImage:
Код:

/* CSS file */
.rollOverState {
  backgroundImage: Embed(source="defaultSkin.swf", symbol="itemRendererOverState");
}
.rollOutState {
  backgroundImage: Embed(source="defaultSkin.swf", symbol="itemRendererUpState");
}

а в самом классе пишу
Код:

private function rollOverHandler(evenr:MouseEvent):void
{
  this.styleName = "rollOverState";
}
           
private function rollOutHandler(evenr:MouseEvent):void
{
  this.styleName = "rollOutState";
}

Цитата:

Сообщение от wvxvw (Сообщение 798892)
отнаследоваться от VBox'а и дописать такой стейт самому.

а на счет стейта интересная тема. Я то работал со стейтами, но со скинами, как видите, не очень. Не могли бы вы написать небольшой примерчик?

wvxvw 17.02.2009 14:02

Посмотри:
http://livedocs.adobe.com/flex/3/htm...kinning_7.html
Creating stateful skin using images
Но там не фонтан пример... я пробовал делать с деграфой, как немного руки дойдут - выложу пример.


Часовой пояс GMT +4, время: 16:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.