Hi,
The basic functionality works, dragging and dropping, but I’m having issues getting the movements to playback automatically should I create a pointer to the MC then apply an onLoad to it, the final goal is converting the AS to a Class:
var pointer:MovieClip=obj.CreateEmptyMovieClip("target_mc",depth);
var mainTimeline:Object = this;
var captureX:Array = new Array();
var captureY:Array = new Array();
var oldTime:Number = Math.round((getTimer()));
var mode:String;
function init() {
captureX.length = 0;
captureY.length = 0;
oldtime;
}
//
init();
//
function captureMove(obj:MovieClip):Void {
obj.onMouseDown = function() {
if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
setMode("record");
this.startDrag();
//trace("Object Dragging");
}
obj.onMouseUp = function() {
setMode("playBack");
this.stopDrag();
//trace("Object Dropped");
};
};
}
//Records the movement of the object.
function record(mode:String):String {
init();
trace("Record Called");
newTime = Math.round((getTimer()));
if ((newTime-oldTime)>10) {
captureX.push(this._x);
captureY.push(this._y);
oldTime = getTimer();
}
return mode;
}
//Should Playback the movements of the object.
function playBack(mode:String):String {
trace("Playback Called");
oldTime = getTimer();
counter = 0;
obj.onEnterFrame = function() {
newTime = Math.round((getTimer()));
if ((newTime-oldTime)>10) {
this._x = captureX[counter];
this._y = captureY[counter];
counter = counter+1;
if (counter>captureY.length) {
counter = 0;
}
oldTime = getTimer();
}
};
return mode;
}
function setMode(mode:String):Void {
if (mode == "record") {
record();
trace("Mode Record");
} else if (mode == "playBack") {
playBack();
trace("Mode Playback");
}
}
captureMove(obj_mc);
The following code from a publication does work when applied to a MC via FLASH 5 syntax:
onClipEvent(load) {
captureX = new Array();
captureY = new Array();
oldTime = int(getTimer());
}
onClipEvent(mouseDown) {
if (this.hitTest(_root._xmouse,_root._ymouse,true)) {
this.startDrag();
mode = "record";
captureX.length = 0;
captureY.length = 0;
}
}
onClipEvent(mouseUp) {
stopDrag();
mode = "play";
oldTime = getTimer();
counter = 0;
}
onClipEvent(enterFrame) {
if (mode == "record") {
newTime = int(getTimer());
if ((newTime - oldTime) > 10) {
captureX.push(this._x);
captureY.push(this._y);
oldTime = getTimer();
}
}
if (mode == "play") {
newTime = int(getTimer());
if ((newTime - oldTime) > 10) {
this._x = captureX[counter];
this._y = captureY[counter];
counter = counter + 1;
if (counter > captureY.length) {
counter = 0;
}
oldTime = getTimer();
}
}
}
Any help is greatly appreciated.