![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2009
Сообщений: 30
|
надо сделать такую штуку.
Есть простенький Shape -квадрат, размером 1x1 пиксель с заданным цветом. Хочу сделать кучу однотипных спрайтов с немного различающейся графикой внутри и с этим шейпом в качестве фона и, что самое важное, поменять потом цвет шейпа(фона) во всех спрайтах за 1 клик. Как лучше реализовать? До этого делал те же манипуляции, но не надо было менять цвет. У меня был спрайт в библиотеке и всё работало. Но вот теперь добавился цвет и я затупил... ![]() |
|
|||||
|
Регистрация: May 2009
Сообщений: 30
|
Цитата:
там был не то, чтобы однопиксельный квадрат, был на самом деле аж целый спрайт с минимальной графикой, который я потом использовал, где только можно. а сейчас смысл в том, что есть динамически созданные спрайты, которые можно двигать после создания, удалять и т.д. раньше я брал из библиотеки "спрайт-образец" и изменял его, как нужно, а теперь еще и цвет этого образца надо менять..ну в общем ок, буду копать transform/Matrix, пасиб! p.s. чета пока не найду связь межу матрицей и задачей =( Последний раз редактировалось a7z; 18.09.2010 в 20:32. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
flash.display.DisplayObject#transform.colorTransform
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: May 2009
Сообщений: 30
|
вооот. я пробовал colorTransform-работает, но у меня не получилось задействовать его для своих делать, вот что в таком случае делать?
упрощенно, что хочу сделать. есть код var cvet:Shape=new Shape(); function IzmenenieCveta(koordinataX:int,koordinataY:int):void { cvet.graphics.beginFill(0x999999); cvet.graphics.drawRect(0,0,100,100); var s:Sprite=new Sprite(); s.x=koordinataX; s.y=koordinataY; s.addChild(cvet); this.addChild(s); } var cvetColorTransform:ColorTransform = cvet.transform.colorTransform; cvetColorTransform.color = 0x000000; cvet.transform.colorTransform = cvetColorTransform; IzmenenieCveta(0,0); IzmenenieCveta(100,100); )..Если я делаю так: function IzmenenieCveta(koordinataX:int,koordinataY:int):void { var cvet:Shape=new Shape(); cvet.graphics.beginFill(0x999999); cvet.graphics.drawRect(0,0,100,100); var s:Sprite=new Sprite(); s.x=koordinataX; s.y=koordinataY; s.addChild(cvet); this.addChild(s); } var cvetColorTransform:ColorTransform = cvet.transform.colorTransform; cvetColorTransform.color = 0x000000; cvet.transform.colorTransform = cvetColorTransform; IzmenenieCveta(0,0); IzmenenieCveta(100,100); Вот как сделать, чтобы и функция работала и цвет менялся?? ![]() |
|
|||||
|
http://help.adobe.com/ru_RU/AS3LCR/F...Transform.html
Товарищ хелп вам поможет, там внизу пример применения, а вы применяете неверно.
__________________
тут я |
|
|||||
|
Регистрация: May 2009
Сообщений: 30
|
Цитата:
Даже если я не правильно применяю, то дело не в цвете. Я не знаю, как правильней сделать это изменение для n-ого количества спрайтов, которые являются детьми других спрайтов. |
|
|||||
|
Цитата:
Я бы загнал все ссылки на фоны в массив, потом тупо циклом прогонялся и менял. Или можно сделать у класса фона статичный метод, он будет один для всех фонов, один раз применить - вуаля! Хотя, статичный метод не подразумевает использование this... Хм, Тогда наверно первый способ. Скорее всего, есть более рациональное решение.
__________________
тут я Последний раз редактировалось КорДум; 19.09.2010 в 13:01. |
|
|||||
|
Регистрация: May 2009
Сообщений: 30
|
Цитата:
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Можно и без циклов, но проще не будет. Если сделать эти фоновые спрайтики своего класса, определить в нем метод перекраски (проще по-моему перерисовки с новым цветом заливки)) и при создании каждый экземпляр подписывать на событие "перекраситься!" от управляющего класса.
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:07. |
|
|
« Предыдущая тема | Следующая тема » |
|
|