ltise
30.10.2009, 20:41
Привет всем! подскажите плиз, возникла ситуация:
мне нужно двигать объект поверх нарисованной решетки.
я один раз рисую решетку, потом просто двигаю поверх объект...
если шаг решетки большой, то тормозов не возникает, если шаг маленький, то при перемещении объекта за мышью, движение начинает тормозить...
в тестовом примере я специально умножаю предельные координаты сетки на 5 (y0*5), так проблема более явно проявляется. в моей задаче иногда необходимо в бэкграунде рисовать разные достаточно сложные сетки и все начинает тормозить..
код ниже..по умолчанию рисуется сетка с шагом 10, все таскается нормально,
при нажатии на кнопку, рисуется сетка с шагом 2 - возникают тормоза...
в чем может затык, как можно ускорить процесс, что я не так делаю ?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
addedToStage="_addedToStage()">
<mx:Script>
<![CDATA[
private function _addedToStage(): void{
_updateGrid(10);
stage.addEventListener(MouseEvent.MOUSE_MOVE, _mouseMove);
}
private function _updateGrid(n: int): void{
var y0: Number = 0;
var x0: Number = 0;
var x1: Number = stage.width;
var y1: Number = stage.height;
_canvas.graphics.clear();
_canvas.graphics.lineStyle(0,0xff0000, 0.1);
for (var i: int=0; i < x1/n; i++){
_canvas.graphics.moveTo(i*n, -y0*5);
_canvas.graphics.lineTo(i*n, y1*5);
}
for (var i: int=0; i < y1/n; i++){
_canvas.graphics.moveTo(-x0*5, i*n);
_canvas.graphics.lineTo( x1*5, i*n);
}
}
private function _buttonClick(event: Event): void{
_updateGrid(2);
}
private function _mouseMove(event: MouseEvent): void{
var p: Point = _canvas.globalToLocal(new Point(event.stageX, event.stageY));
moved.x = p.x;
moved.y = p.y;
}
]]>
</mx:Script>
<mx:Canvas id="_canvas" top="0" left="0" right="00" bottom="0">
<mx:Canvas x="210" y="289" width="67" height="61" backgroundColor="#FF0000" id="moved">
</mx:Canvas>
</mx:Canvas>
<mx:Button label="Button" right="0" top="0" click="_buttonClick(event)"/>
</mx:Application>
мне нужно двигать объект поверх нарисованной решетки.
я один раз рисую решетку, потом просто двигаю поверх объект...
если шаг решетки большой, то тормозов не возникает, если шаг маленький, то при перемещении объекта за мышью, движение начинает тормозить...
в тестовом примере я специально умножаю предельные координаты сетки на 5 (y0*5), так проблема более явно проявляется. в моей задаче иногда необходимо в бэкграунде рисовать разные достаточно сложные сетки и все начинает тормозить..
код ниже..по умолчанию рисуется сетка с шагом 10, все таскается нормально,
при нажатии на кнопку, рисуется сетка с шагом 2 - возникают тормоза...
в чем может затык, как можно ускорить процесс, что я не так делаю ?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
addedToStage="_addedToStage()">
<mx:Script>
<![CDATA[
private function _addedToStage(): void{
_updateGrid(10);
stage.addEventListener(MouseEvent.MOUSE_MOVE, _mouseMove);
}
private function _updateGrid(n: int): void{
var y0: Number = 0;
var x0: Number = 0;
var x1: Number = stage.width;
var y1: Number = stage.height;
_canvas.graphics.clear();
_canvas.graphics.lineStyle(0,0xff0000, 0.1);
for (var i: int=0; i < x1/n; i++){
_canvas.graphics.moveTo(i*n, -y0*5);
_canvas.graphics.lineTo(i*n, y1*5);
}
for (var i: int=0; i < y1/n; i++){
_canvas.graphics.moveTo(-x0*5, i*n);
_canvas.graphics.lineTo( x1*5, i*n);
}
}
private function _buttonClick(event: Event): void{
_updateGrid(2);
}
private function _mouseMove(event: MouseEvent): void{
var p: Point = _canvas.globalToLocal(new Point(event.stageX, event.stageY));
moved.x = p.x;
moved.y = p.y;
}
]]>
</mx:Script>
<mx:Canvas id="_canvas" top="0" left="0" right="00" bottom="0">
<mx:Canvas x="210" y="289" width="67" height="61" backgroundColor="#FF0000" id="moved">
</mx:Canvas>
</mx:Canvas>
<mx:Button label="Button" right="0" top="0" click="_buttonClick(event)"/>
</mx:Application>