/ / Блещукащ правоъгълник с помощта на 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;
}