/ / Миготливий прямокутник за допомогою AS3 і drawRect () при використанні математики для координат - actionscript-3, flash, movieclip

Миготливий прямокутник за допомогою AS3 і drawRect () при використанні математики для координат - actionscript-3, flash, movieclip

У мене є дивна проблема, що, можливо, хтось маєтакож досвідчений. Використовуючи функцію ActionScript 3 та функцію drawRect (), щоб створити відеоролик під час запуску, я відчуваю деякий мерехтіння, коли намагаюся використовувати математику, щоб визначити позицію, в якій вона втягується.

Наступний код створює хороший, твердий прямокутник без проблем:

var mc:MovieClip = new MovieClip();
mc.graphics.beginFill(0xFF1230);
mc.graphics.drawRect(mouseX, mouseY, 100, 80);
mc.graphics.endFill();

Однак, коли я починаю намагатися налаштовувати, де прямокутник намальований, на зразок цього:

mc.graphics.drawRect(mouseX - 50, mouseY - 50, 100, 80);

прямокутник нарисується, але буде постійно мерехтіти.

Я спробував багато варіантів лінії, яка дає помилку, пробравши різні типи даних і відокремлюючи математику від власної змінної, але те ж саме відбувається.

Хто-небудь колись зазнав щось подібне раніше? Будь-яка допомога або інформація дуже цінуються!

Відповіді:

1 для відповіді № 1
  1. швидше за все, виникає проблема з програмою для встановлення події, ніж код малюнка. Я думаю, що ви використовуєте MouseEvent. Вам потрібно буде опублікувати цей код для тих, хто допоможе вам з цим (швидше за все, миша миша змінюється, як тільки ви малюєте прямокутник внизу)

  2. вам не потрібно буде перефарбовувати графіку,ви збираєтеся дізнатись, що це вплине на частоту кадрів з плином часу, якщо ви не очистите його () кожного разу. Вам краще зрівняти прямокутник і перемістити позицію кліпу.

подобається це:

var mc:MovieClip = new MovieClip();
mc.graphics.beginFill(0xFF1230);
mc.graphics.drawRect(-50, -50, 100, 80);
mc.graphics.endFill();
addChild(mc);

stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
function onMove(e:MouseEvent):void {
mc.x = mouseX;
mc.y = mouseY;
}

0 для відповіді № 2

Замість перетворення прямокутника на кожну рамку ви можете просто масштабувати його.

var mc:MovieClip = new MovieClip();
mc.graphics.beginFill(0xFF1230);
mc.graphics.drawRect(0,0,1,1);
mc.graphics.endFill();
addChild(mc);

stage.addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event) {
mc.scaleX = mouseX;
mc.scaleY = mouseY;
}