|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2010
Сообщений: 147
|
как программно нарисовать несколько кадров?
скажем рисую я прямоугольник, он наверно имеет 1 кадр..
как мне добавить ему второй кадр и нарисовать туда что то ? интереснее даже наверно иметь контейнер в котором нарисован к примеру желтый круг и 2 линии образуя крест (всего 3 элемента выходит) вот хотелось бы у этого контейнера иметь второй кадр, в котором желтый круг заменить на оранжевый... или как это лучше сделать ? что бы при наведении мышки просто менять кадр и всё. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Если компилируешь FlexSDK - то можно посмотреть в сторону FrameFactory.
В целом "лёгкими" путями - никак.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Apr 2010
Сообщений: 147
|
FlexSDK что есть я не знаю
я на as3 хочу написать.. тоесть, средствами as3 нету выбора после создания спрайта рисовать во втором фрейме к примеру ? как нарисовать крестик в кружке не проблема, засунуть всё в контейнер... вот бы создать и запихнуть бы что то ещё во второй кадр... |
|
|||||
Регистрация: Nov 2008
Сообщений: 528
|
Не стоит этим утруждаться. Сделайте себе что-то вроде "состояний" для вашего элемента (программно) и при смене состояния, меняйте начинку кнопки.
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Во-первых, у Спрайта нет и не было кадров. Кадры есть только у МувиКлипов.
Во-вторых, в своем спрайте создаете необходимое количество других спрайтов, каждый из которых представляет "кадр" и вместо перехода по временной линейке gotoAndStop() используете addChild(), помещая свои кадры в список отображения. По-моему разницы никакой в объеме и заморочности работы, просто другое мышление - не лентой картинок со смещением по ней, а колодой изображений, из которой нужное выкладывается на стол.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Apr 2010
Сообщений: 147
|
Wolsh, только проблема в том, что будет куча имен.. и нужно как то узнать имя..
можно поидее делать массив внутри контейнера, находить ссылку на контейнер, смотреть что внутри, удалять со сцены тот спрайт что есть, добавлять нужный по индексу массива.. но перейти по кадрам в разы проще.. значит создать програмно 2х кадровый мувиклип нельзя ? |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
Wolsh прав. Если очень хочется - можно написать свой gotoAndStop. В интернете кстати видел (у etc в блоге (etcs.ru) помоему, не помню) пример создания "мувиклипа" с кадрами программно. Добавлено через 6 минут iillyyaa, от всей души сделал Вам пример: package { import flash.display.DisplayObject; import flash.display.Sprite; public class CustomMovieClip extends Sprite { private var _frames:Array; private var _totalframes:int; private var _currentframe:int; public function CustomMovieClip():void { _totalframes = 0; _currentframe = 0; } public function addFrame(frame:DisplayObject):void { _frames.push(frame); if (++_totalframes == 1) { super.addChild(frame); } } public function gotoAndStop(frame:int):void { if (frame < 1 || frame > _totalframes) throw new ArgumentError("Invalid frame"); var i:int = _totalframes; while (i--) { var dp:DisplayObject = _frames[i] as DisplayObject; if (frame != i && super.contains(dp)) super.removeChild(dp); } super.addChild(dp); _currentframe = frame; } public function get totalframes():int { return _totalframes; } public function get currentframe():int { return _currentframe; } } } Используя такой подход легко добавить методы removeFrame, gotoAndPlay (используя onEnterFrame), play, stop, addFrameScript и прочие, даже те, которых нету в классическом MovieClip.
__________________
Тут мужик танцует и поёт про флэш |
Часовой пояс GMT +4, время: 13:00. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|