|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Проблема с прорисовкой маски
Здравствуйте!
Когда я присваиваю объекту маску во время движения, то часть объекта остаётся в одном месте, потом появляется уже в движущимся объекте. Как можно это исправить? Последний раз редактировалось Dip52; 12.11.2013 в 17:13. |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Есть класс Кровел. Он привязан к MovieClip объекту. В этом классе есть переменная objectMask. Этой переменной я присваиваю другой объект MovieClip. Потом в классе Кровел пишу: objectMask.mask = this.
Кровел и другой объект MovieClip находятся в одном MovieClip. |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Наоборот не могу.
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Странно.
Сделал разделение MovieClip круга в кровеле (объекте с двумя линиями) и проблема с маской исчезла (ну почти). |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Нет.
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 (он же objectMask ) вы не используете как маску. А используете класс Crovel как маску для liquid (он же objectMask ).
Маской для объекта objectMask, служит this. А this - это ссылка на текущий класс, то есть Crovel. |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Цитата:
Возникла проблема: Когда появляется маска, то круг кровела почему-то отстаёт во время движения. Я это исправил разделив MovieClip круга. Раз после разделения всё начало нормально работать, то почему оно работает нормально? Ведь усы же тоже MovieClip. Почему они не отстают? |
Часовой пояс GMT +4, время: 00:31. |
|
« Предыдущая тема | Следующая тема » |
|
|