PDA

Просмотр полной версии : Отобразить перемещение мыши в клипе


newGron
12.03.2009, 16:41
Здравствуйте. Имеется учебный пример в котором я пытаюсь разобраться. В нем после нажатия на кнопку Enter идет запись координат мыши в массив mouse, затем после 5 секунд(time) объект arrow должен повторить перемщение мыши. Но он неповторяет, а просто переходит к ключевому кадру playRecord. Подскажите что нетак написано. Ссылка клипа практика array.fla (http://narod.ru/disk/6559118000/%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B0%20array.fla.html)

Wigga
12.03.2009, 17:30
stop(); допиши в 20-ом кадре и все будет хорошо.

dimarik
12.03.2009, 17:44
var savedData:Array = new Array();
var arrow:MovieClip = this.createEmptyMovieClip('arrow', this.getNextHighestDepth());
arrow.beginFill(0xFF0000, 100);
arrow.moveTo(0, 0);
arrow.lineTo(10, 0);
arrow.lineTo(10, 10);
arrow.lineTo(0, 10);
arrow.lineTo(0, 0);
arrow.endFill();

setTimeout(this.stopRecord, 5e3, this);

var i:Number = 0;

this.onEnterFrame = function():Void {
this.savedData[i++] = {x:this._xmouse, y:this._ymouse};
}

function stopRecord(scope:Object):Void {
delete scope.onEnterFrame;
scope.playRecord();
}

function playRecord():Void {
i = 0;
this.onEnterFrame = function():Void {
this.arrow._x = Number(this.savedData[i].x);
this.arrow._y = Number(this.savedData[i].y);
if ( !this.savedData[++i] ) delete this.onEnterFrame;
};
}

newGron
12.03.2009, 17:53
stop(); допиши в 20-ом кадре и все будет хорошо.
Да действительно это решило проболему невоспроизведения. Но как сделать чтобы клип при нажатии потом воспроизводился опять.

Добавлено через 3 минуты
Спасибо dimarik за вариант.

Wigga
12.03.2009, 17:57
поставь из первого клипа обработчик кнопки в тот же 20 и на будующее почисти массив координат мышки, чтобы новое записывалось вместо сторого, а не после.

newGron
12.03.2009, 18:05
поставь из первого клипа обработчик кнопки в тот же 20 и на будующее почисти массив координат мышки, чтобы новое записывалось вместо сторого, а не после.
Спасибо Wigga. Все воспроизводится. Только непонимаю почему в изначальном виде неработает. Дело в том что я взял этот пример с обучающего интерактивного курса и все сделал как там указано, а все равно неработало:(

Добавлено через 1 минуту
Кстати а как очтстить массив?

dimarik
12.03.2009, 20:24
arr = new Array();
или
arr.splice(0);