Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Картинка при таскании лагает (http://www.flasher.ru/forum/showthread.php?t=82407)

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

Цитата:

Сообщение от lemegeton
почему лагает?

Может, конечно, далеко не самый лучший способ решения, но первое, что пришло в голову:
вместо
Код:

_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;
}

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


Часовой пояс GMT +4, время: 20:00.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.