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

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

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

Регистрация: Aug 2012
Сообщений: 297
По умолчанию Проблема с прорисовкой маски

Здравствуйте!

Когда я присваиваю объекту маску во время движения, то часть объекта остаётся в одном месте, потом появляется уже в движущимся объекте.

Как можно это исправить?

crovels.swf   (97.1 Кб)
Вложения
Тип файла: swf crovels.swf (97.1 Кб, 77 просмотров)


Последний раз редактировалось Dip52; 12.11.2013 в 17:13.
Старый 12.11.2013, 17:18
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
маску куда добавляете?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 12.11.2013, 17:50
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 3  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от GBee Посмотреть сообщение
маску куда добавляете?
Есть класс Кровел. Он привязан к MovieClip объекту. В этом классе есть переменная objectMask. Этой переменной я присваиваю другой объект MovieClip. Потом в классе Кровел пишу: objectMask.mask = this.
Кровел и другой объект MovieClip находятся в одном MovieClip.

Старый 12.11.2013, 18:02
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Этим кодом вы назначаете объекту objectMask в качестве маски всё содержимое класса Кровел. Так и задумано? А не наоборот ли хотели?

Старый 12.11.2013, 18:32
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 5  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от samana Посмотреть сообщение
Этим кодом вы назначаете объекту objectMask в качестве маски всё содержимое класса Кровел. Так и задумано? А не наоборот ли хотели?
Наоборот не могу.

Старый 12.11.2013, 21:25
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 6  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Странно.
Сделал разделение MovieClip круга в кровеле (объекте с двумя линиями) и проблема с маской исчезла (ну почти).
crovels.swf   (110.4 Кб)
Вложения
Тип файла: swf crovels.swf (110.4 Кб, 47 просмотров)

Старый 12.11.2013, 21:28
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 7  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Скажите, объект objectMask добавлен как ребёнок в классе Кровел?

Старый 12.11.2013, 21:30
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 8  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от samana Посмотреть сообщение
Скажите, объект objectMask добавлен как ребёнок в классе Кровел?
Нет.

Код AS3:
package classes
{
	import flash.events.Event;
	import flash.display.MovieClip;
	import classes.fond.Fields;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	import flash.display.Sprite;
 
	public class Crovel extends MovieClip
	{
		private var randomRotation:Number = 180; //Кровел двигается в ту сторону в которую он повёрнут, поэтому его движение будет меняться через какой-то интервал:
		private var timerSetRandomRotation:Timer = new Timer(Settings.ROTATION);	//Таймер задающий случайное движение кровелу:
		private const SPEED:Number = Settings.SPEED;
		public var objectMask:Sprite
 
		public function Crovel(liquid:MovieClip)
		{
			rotation = randomRotation;
			Fields.FIELDFORCROVELS.addChild(this);
			objectMask = liquid;
			objectMask.visible = false;
			Fields.FIELDFORCROVELS.addChild(liquid);
			this.addEventListener(Event.ENTER_FRAME,rotationHorns);
			timerSetRandomRotation.addEventListener(TimerEvent.TIMER,setRandomRotation);
			timerSetRandomRotation.start();
			this.addEventListener(Event.ENTER_FRAME,move);
		}
		//Движение кровела:
		private function move(event:Event):void
		{
			objectMask.x = x;
			objectMask.y = y;
			var p:Number = Prohibition.prohibition(this);
			if(p == Number.MAX_VALUE)
			{
 
			}
			else
			{
				rotation = randomRotation = p;
				timerSetRandomRotation.reset();
				timerSetRandomRotation.start();
			}
			y -= SPEED * Math.cos(randomRotation * (Math.PI / 180));
			x += SPEED * Math.sin(randomRotation * (Math.PI / 180));
		}
		//Вращение усиков:
		private function rotationHorns(event:Event)
		{
			hornsOne.rotation -= 10;
			hornsTwo.rotation += 5;
		}
		//Установка случайного движения кровелу:
		private function setRandomRotation(event:TimerEvent):void
		{
			var choice:int = Math.random() * 3;	//Выбор положительной или отрицательной стороны:
			if(choice == 1)
			{
				randomRotation = Math.random() * -360;
				objectMask.mask = this;
				objectMask.visible = true;
			}
			else
			{
				randomRotation = Math.random() * 360;
				objectMask.mask = null;
				objectMask.visible = false;
			}
			rotation = randomRotation;
		}
	}
}
liquid - это то, что я использую как маску (или в качестве маски).

Старый 12.11.2013, 21:39
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 9  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Но если я правильно понял ваш код, то liquid (он же objectMask ) вы не используете как маску. А используете класс Crovel как маску для liquid (он же objectMask ).
Код AS3:
objectMask.mask = this;
Маской для объекта objectMask, служит this. А this - это ссылка на текущий класс, то есть Crovel.

Старый 12.11.2013, 21:49
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 10  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от samana Посмотреть сообщение
Но если я правильно понял ваш код, то liquid (он же objectMask ) вы не используете как маску. А используете класс Crovel как маску для liquid (он же objectMask ).
Код AS3:
objectMask.mask = this;
Маской для объекта objectMask, служит this. А this - это ссылка на текущий класс, то есть Crovel.
Изначально я хотел сделать так, чтобы от разноцветной картинки (жидкость) были видны только части Кровела (усы и круг). Когда я сделал маской разноцветную картинку, то ничего не было видно. Когда я сделал маску Кровела, то картинка появилась.

Возникла проблема: Когда появляется маска, то круг кровела почему-то отстаёт во время движения. Я это исправил разделив MovieClip круга.
Раз после разделения всё начало нормально работать, то почему оно работает нормально? Ведь усы же тоже MovieClip. Почему они не отстают?

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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