Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.09.2010, 01:10
iillyyaa вне форума Посмотреть профиль Отправить личное сообщение для iillyyaa Найти все сообщения от iillyyaa
  № 1  
Ответить с цитированием
iillyyaa

Регистрация: Apr 2010
Сообщений: 147
По умолчанию как программно нарисовать несколько кадров?

скажем рисую я прямоугольник, он наверно имеет 1 кадр..
как мне добавить ему второй кадр и нарисовать туда что то ?

интереснее даже наверно иметь контейнер в котором нарисован к примеру желтый круг и 2 линии образуя крест (всего 3 элемента выходит)
вот хотелось бы у этого контейнера иметь второй кадр, в котором желтый круг заменить на оранжевый...

или как это лучше сделать ?

что бы при наведении мышки просто менять кадр и всё.

Код AS3:
private function smena2(e:MouseEvent){ e.target.gotoAndStop(2); }
private function smena1(e:MouseEvent){ e.target.gotoAndStop(1); }

Старый 03.09.2010, 01:13
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Если компилируешь FlexSDK - то можно посмотреть в сторону FrameFactory.
В целом "лёгкими" путями - никак.

Старый 03.09.2010, 01:19
iillyyaa вне форума Посмотреть профиль Отправить личное сообщение для iillyyaa Найти все сообщения от iillyyaa
  № 3  
Ответить с цитированием
iillyyaa

Регистрация: Apr 2010
Сообщений: 147
FlexSDK что есть я не знаю
я на as3 хочу написать..

тоесть, средствами as3 нету выбора после создания спрайта рисовать во втором фрейме к примеру ?

как нарисовать крестик в кружке не проблема, засунуть всё в контейнер... вот бы создать и запихнуть бы что то ещё во второй кадр...

Старый 03.09.2010, 01:35
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 4  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Цитата:
Сообщение от iillyyaa Посмотреть сообщение
вот бы создать и запихнуть бы что то ещё во второй кадр...
Не стоит этим утруждаться. Сделайте себе что-то вроде "состояний" для вашего элемента (программно) и при смене состояния, меняйте начинку кнопки.

Старый 03.09.2010, 11:55
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Во-первых, у Спрайта нет и не было кадров. Кадры есть только у МувиКлипов.
Во-вторых, в своем спрайте создаете необходимое количество других спрайтов, каждый из которых представляет "кадр" и вместо перехода по временной линейке gotoAndStop() используете addChild(), помещая свои кадры в список отображения. По-моему разницы никакой в объеме и заморочности работы, просто другое мышление - не лентой картинок со смещением по ней, а колодой изображений, из которой нужное выкладывается на стол.
__________________
Reality.getBounds(this);

Старый 03.09.2010, 14:13
iillyyaa вне форума Посмотреть профиль Отправить личное сообщение для iillyyaa Найти все сообщения от iillyyaa
  № 6  
Ответить с цитированием
iillyyaa

Регистрация: Apr 2010
Сообщений: 147
Wolsh, только проблема в том, что будет куча имен.. и нужно как то узнать имя..
можно поидее делать массив внутри контейнера, находить ссылку на контейнер, смотреть что внутри, удалять со сцены тот спрайт что есть, добавлять нужный по индексу массива.. но перейти по кадрам в разы проще..

значит создать програмно 2х кадровый мувиклип нельзя ?

Старый 03.09.2010, 15:20
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 7  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
FlexSDK что есть я не знаю
я на as3 хочу написать..
FlexSDK - это компилятор такой. Пишите на AS3, компилируете им и получаете новые кадры с помощью метатегов, но это не очень приятно =)
Wolsh прав. Если очень хочется - можно написать свой gotoAndStop. В интернете кстати видел (у etc в блоге (etcs.ru) помоему, не помню) пример создания "мувиклипа" с кадрами программно.

Добавлено через 6 минут
iillyyaa, от всей души сделал Вам пример:
Код AS3:
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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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