0
我正在處理一個非常簡單的項目的第一步:內存時間軸。基本上,他們列出了幾年的時間表。這是一條線,你應該能夠水平移動它去到你選擇的年份,然後添加事件和信息。Flash水平拖放問題
現在,我試圖實現該行,我認爲這將是無限寬,並拖動功能。
我有一些工作,但它是錯誤的,我沒有看到有什麼問題。我對Flash沒有經驗,所以我在這裏問。
這是代碼。舞臺是空的,時間線上沒有代碼。僅這一個文檔類,從屬性創建:
package {
import flash.geom.Rectangle;
import flash.events.MouseEvent;
import flash.display.Sprite;
public class Document extends Sprite {
// rootMc, global container
public static var rootMc:Sprite = new Sprite();
public var test:Sprite = new Sprite();
public function Document() {
test.graphics.beginFill(0x000000);
test.graphics.drawRect(0, stage.stageHeight/2, 2000, 6);
test.graphics.endFill();
test.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
test.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
addChild(rootMc);
rootMc.addChild(test);
}
function mouseDownHandler(evt:MouseEvent):void {
trace("mouseDownHandler");
var sprite:Sprite = Sprite(evt.target);
sprite.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
//Limit the drag to a horizontal rectangle
sprite.startDrag(false, new Rectangle(0, sprite.y, 2000, 0));
}
function mouseUpHandler(evt:MouseEvent):void {
trace("mouseUpHandler");
var sprite:Sprite = Sprite(evt.target);
sprite.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
sprite.stopDrag();
}
private function mouseMoveHandler(evt:MouseEvent):void {
trace("mouseMoveHandler");
evt.updateAfterEvent();
}
}
}
的問題是:當我點擊正是上線
- 拖動&下降纔有效。我希望在那裏有一些空間,我也可以點擊。但是這條線絕對不能垂直移動,而不是一個像素。我現在不知道如何實現這一點。
- 與第一個問題相關:只有當我的光標在行上時,纔會調用mouseUpHandler。如果它即使是一個像素關閉,我放開鼠標按鈕,拖動將繼續。然後我必須回到線路上,再次點擊並放開。我想要讓拖動停止,無論我放開鼠標按鈕。或者當鼠標離開舞臺時。
這可能只是缺乏經驗。我不知道有什麼功能來處理這個功能。所以我在這裏問這個。同時,這是一個獲得代碼反饋的機會。
謝謝stage.addEventListener! – W55tKQbuRu28Q4xv