Doppelklick-Klasse (doubleClickListener) [Flash 7 / Flash 8]

Tobias Menzel

Erfahrenes Mitglied
Hi,

hier eine kleine Klasse, mit der auf unkomplizierte Weise Doppelklicks auf MovieClips abgefragt werden können:

Class Quellcode:
Code:
class DoubleClickListener {
	private var _targetObj:MovieClip;
	private var _startTime:Number;
	private var _interval:Number;
	public var onMouseUp:Function;
	
	public function DoubleClickListener(targetObj:MovieClip, interval:Number) {
		_targetObj = targetObj;
		_interval = (interval != undefined)? interval : 0;
		_startTime = getTimer();
		this.onMouseUp = function() {
			if (_targetObj.hitTest(_root._xmouse, _root._ymouse, false)) {
				var intv:Number = getTimer() - _startTime;
				if (intv <= _interval) {
					this.onDoubleClick();
				}
				_startTime = getTimer();
			}
		}
		Mouse.addListener(this);
	}
	
	public function get targetObj():MovieClip {
		return _targetObj;
	}
	
	public function set targetObj(obj:MovieClip):Void {
		_targetObj = obj;
	}
	
	public function get interval():Number {
		return _interval;
	}
	
	public function set interval(intv:Number):Void {
		_interval = intv;
		_startTime = getTimer();
	}
}

Aufruf z.B.:
Code:
var myListener = new DoubleClickListener(myMovieClip, 200);

myListener.onDoubleClick = function() {
    trace("Doppelklick auf " + myMovieClip);
}

Die Getter und Setter sind optional und nur sinnvoll, wenn Zielobjekt und Mindestintervall zur Laufzeit geändert werden müssen.

Achtung: Bei eingeladenen Filmen, die nicht auf den Koordinaten 0|0 liegen und mit _lockroot = true arbeiten, muss in der Klasse statt _root._xmouse und _root._ymouse u.U. _level0._xmouse und _level0._xmouse verwendet werden.

Gruß
.
 

Neue Beiträge

Zurück