Sprite
의 Graphics
개체에 단순히 그려주는 AS3 코드에 문제가 있습니다. 그림은 stage
의 ENTER_FRAME
이벤트마다 호출되는 큰 프로 시저의 일부로 발생합니다.드로잉 라인 그래픽은 플래시를 나선형으로 제어 불능 상태로 만듭니다!
플래시가 충돌하거나 오류를 반환하지 않습니다. 대신 CPU를 100 % 가동하고 모든 메모리를 가져옵니다. 프로세스를 수동으로 종료하거나 컴퓨터가 최대 2-3GB까지 올라갈 때 압력을 받으면 컴퓨터가 흔들립니다. 이것은 임의의 시간에 일어나고 사전에 아무런 감속이 없다.
WTF? 이걸 본 사람 있어요?
추 신 : MOUSE_MOVE
이벤트 핸들러 내에서 드로잉을하곤했는데,이 문제는 더 빨리 발생했습니다.
PPS : Linux에서 개발 중이지만 Windows에서 동일한 문제가 재현되었습니다.
업데이트 : 일부 코드를 요청 했으므로 여기에 있습니다. (m_graphicsLayer
가 Sprite
이다)
public static function drawDashedLine(i_graphics : Graphics, i_from : Point, i_to : Point, i_on : Number, i_off : Number) : void
{
const vecLength : Number = Point.distance(i_from, i_to);
i_graphics.moveTo(i_from.x, i_from.y);
var dist : Number = 0;
var lineIsOn : Boolean = true;
while(dist < vecLength)
{
dist = Math.min(vecLength, dist + (lineIsOn ? i_on : i_off));
const p : Point = Point.interpolate(i_from, i_to, 1 - dist/vecLength);
if(lineIsOn) i_graphics.lineTo(p.x, p.y);
else i_graphics.moveTo(p.x, p.y);
lineIsOn = !lineIsOn;
}
}
과 같이 호출 : 드로잉 함수는 다음과 같다
m_graphicsLayer.graphics.clear();
if (m_destinationPoint)
{
m_graphicsLayer.graphics.lineStyle(2, m_fixedAim ? 0xff0000 : 0x333333, 1);
drawDashedLine(m_graphicsLayer.graphics, m_initialPos, m_destinationPoint, 10, 10);
}
당신은 우리에게 몇 가지 코드를 보여 주면서 시작할 수 있습니다 :) –
예, 코드를 보여주세요. 어딘가에 무한 루프가있는 것처럼 들립니다. – CookieOfFortune
네가 enterframe이나 마우스 이벤트에서 드로잉 명령을 실행하기 시작하면 효율적으로 일을 처리하지 않으면 각 반복이 다음 발사와 충돌하기 시작할 수있다. – liquidleaf