Вход

Просмотр полной версии : Картинка при таскании лагает


lemegeton
12.07.2006, 11:53
Вот флешка - http://www.stilpost.ru/flash/untitled-1.swf. Народ скажите почему лагает картинка?
Вот код:
this.createEmptyMovieClip ("mcMaska", 0);
this.mcMaska.lineStyle (0, 0);
this.mcMaska.beginFill (0);
this.mcMaska.lineTo (350, 0);
this.mcMaska.lineTo (350, 263);
this.mcMaska.lineTo (0, 263);
this.mcMaska.lineTo (0, 0);
this.mcMaska.endFill ();
_root.createEmptyMovieClip("map",1);
with(_root.map)
{
createEmptyMovieClip("conteiner",0);
with(_root.map.conteiner)
{
loadMovie("img.jpg");
_xscale = 50;
_yscale = 50;
_x = 0;
_y = 0;
}
_x = 0;
_y = 0;
}
this.map.setMask (this.mcMaska);
_root.map.onPress = function()
{
_root.map.onMouseMove = function()
{
_root.map._x = _root.map._xmouse;
_root.map._y = _root.map._ymouse;
}
}
_root.map.onRelease = function()
{
delete _root.map.onMouseMove;
}
_root.map.onReleaseOutside = function()
{
delete _root.map.onMouseMove;
}
_root.attachMovie("Button","plus",_root.getNextHighestDepth());
with(_root.plus)
{
_x = 30;
_y = 480;
label = "zoom+";
}
_root.plus.onPress = function ()
{
_root.map.conteiner._xscale = 100;
_root.map.conteiner._yscale = 100;
}

iNils
12.07.2006, 12:13
http://www.flasher.ru/forum/showthread.php?t=79864
А вот правила раздела и пункт 3 в нем.

lemegeton
12.07.2006, 12:28
я извиняюсь. iNils, скажи пожалуйста почему лагает?

motor4ik
12.07.2006, 12:32
явно в коде ошибка какая то ))) ищите друг. а вообще я бы советовал найти исходник, это распространненый пример )))

iNils
12.07.2006, 13:03
Я честно говоря не понял, в чем проблема то?

vooparker
12.07.2006, 13:07
почему лагает?
Может, конечно, далеко не самый лучший способ решения, но первое, что пришло в голову:
вместо
_root.map.onPress = function()
{
_root.map.onMouseMove = function()
{
_root.map._x = _root.map._xmouse;
_root.map._y = _root.map._ymouse;
}
}
_root.map.onRelease = function()
{
delete _root.map.onMouseMove;
}
_root.map.onReleaseOutside = function()
{
delete _root.map.onMouseMove;
}

написать:

_root.map.onPress = function()
{
startDrag('_root.map', 0);
}
_root.map.onRelease = function()
{
stopDrag();
}
_root.map.onReleaseOutside = function()
{
stopDrag();
}

Так вроде работает нормально

iNils
12.07.2006, 13:31
Я наконец-то догадался нажать на картинку и начать ее таскать :D
Ошибка из-за этого кода
_root.map._x = _root.map._xmouse;
_root.map._y = _root.map._ymouse;
Вы присваиваете координатам объекта координаты мыши внутри него. Но ведь объет двигаетеся вместе с мышью, и соответственно эти значения не меняются.

lemegeton
12.07.2006, 13:59
да согласен
можно написать так:

_root.map._x = _root._xmouse;
_root.map._y = _root._ymouse;

но тогда при движении мышью клип левым верхним углом равняется с координатоми мыши, встает вопрос - как поменять координаты регисрации клипа?

iNils
12.07.2006, 14:12
Элементарно. В момент клика записать разницу между координатами клипа и мышки. А потом эту разницу вычитать из координат мыши при движении.

А чем не подходит вариант vooparker с startDrag?

__i
12.07.2006, 15:25
mc.onPress = function(){
this.onMouseMove = function(){
trace(this._x+' '+ this._y);
}
this.startDrag();
}
mc.onRelease = function(){
delete this.onMouseMove;
this.stopDrag();
}
//////////
mc1.onPress = function(){
this.x = this._xmouse;
this.y = this._ymouse;
this.onMouseMove = function(){
this._x = _root._xmouse - this.x
this._y = _root._ymouse - this.y
trace(this._x+' '+ this._y);
}
}
mc1.onRelease = function(){
delete this.onMouseMove;
}

при МаусМуве не всегда целые координты, при Драге всегда!

lemegeton
12.07.2006, 16:04
большое Вам спасибо

kayama
12.07.2006, 19:10
Вот код:
_root.map.onMouseMove = function()
{
_root.map._x = _root.map._xmouse;
_root.map._y = _root.map._ymouse;
}

До такого еще дадуматся надо было! 5 баллов за оригинальность.
Но startDrag мне в этом случае больше по душе.