基本的拖放滚动算法存在一些问题。这是我的算法:
当鼠标按下时,我设置boolean dragging = true并将当前鼠标x和y位置存储在stored_position变量中。
当鼠标按下时,我设置了boolean dragging = false。
在每一帧上,我检查拖动== true,如果是,我计算dx = current_mouse.x - stored_position.x和dy = current_mouse.x - stored_position.y。然后我将当前鼠标位置存储为新的stored_position并通过此dx dy滚动我的视图(它是2D摄像机对象),因为Camera.x - = dx,Camera.y - = dy(我需要因为相机而反转一个特异性的)。
此算法的问题在于,当我拖动相机时,它开始闪烁并移动/摇动。我认为这是因为当我从左向右移动鼠标时,它会像这样跟踪dx:
71
-67
69
-68
69
-68
8
-5
所以我认为这是鼠标抽搐(我的意思是当我们试图划线时鼠标会跳回来)。任何改变算法的想法,也许我想念一些东西? 以下是此问题的示例:https://dl.dropbox.com/u/78904724/as_host/buld_build_other.rar(您需要运行index.html选择级别并尝试拖动屏幕)。
更新 这是示例完整源链接(这是随机图片,我发誓):https://dl.dropbox.com/u/78904724/as_host/scroll_test.rar 这是我使用的代码(例如我使用本机flash事件而不是使用axgl检查来混淆某人,我有两个例子,它会导致同样的问题):
//variables with comments
private var dragging:Boolean = false; //dragging flag
private var current_mouse:Array; //stored mouse position array [0] - x, [1] - y
private var d:Array; //dx dy array [0] - x, [1] - y
[Embed(source = "test.jpg")] public static const _sprite:Class; //sprite graphics
private var view_sprite:AxSprite; //some image on the stage to drag it
//this is the class constructor code
view_sprite = new AxSprite(0, 0, _sprite);
add(view_sprite);
current_mouse = new Array();
d = new Array();
Ax.stage2D.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
current_mouse[0] = Ax.mouse.x;
current_mouse[1] = Ax.mouse.y;
dragging = true;
});
Ax.stage2D.addEventListener(MouseEvent.MOUSE_UP, function(e:MouseEvent):void {
dragging = false;
});
Ax.stage2D.addEventListener(MouseEvent.MOUSE_MOVE, function(e:MouseEvent):void {
if (dragging) {
d[0] = Ax.mouse.x - current_mouse[0];
d[1] = Ax.mouse.y - current_mouse[1];
Ax.camera.x -= d[0];
Ax.camera.y -= d[1];
current_mouse[0] = Ax.mouse.x;
current_mouse[1] = Ax.mouse.y;
}
});
答案 0 :(得分:0)
我很困惑,但问题是这两个字符串(感谢axgl作者帮助我): current_mouse [0] = Ax.mouse.x; current_mouse [1] = Ax.mouse.y; 当我删除它们时,拖动将完美地工作。但是......我发誓我之前尝试过这种情况,没有任何事情会发生,相机刚开始移动速度更快而现在......现在......它有效! 谢谢大家帮助我。如果有人会遇到类似的问题,那么完整的工作来源是:https://dl.dropbox.com/u/78904724/as_host/scroll_test_worked.rar 这是axgl.org上的主题:http://axgl.org/forums/viewtopic.php?f=12&p=394