КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Ковзання
Замість того щоб визначати цю функцію для окремого фільму, як ми робили в попередніх функціях ball_mc.checkDistance, ми помістимо її в MovieClip.prototype. Всі функції усередині MovieClip.prototype доступні рівною мірою всім фільмам. Всі убудовані методи фільмів, такі як goToAndPlay, також присутні в movieclip.prototype. При виклику функції вона поводиться так, ніби вона була усередині фільму. MovieClip.prototype.slideTo = function(x, y, speed) { // set up targets and speed variable this.target = x; this.target = y; this.speed = speed; // create onEnterFrame function this.onEnterFrame = function() { // take care of motion this._x += (this.target-this._x)/this.speed; this._y += (this.target-this._y)/this.speed; // check if near target if (Math.abs(this.target-this._x)<0.2 && Math.abs(this.target-this._y)< 0.2) { this._x = this.target; this._y = this.target; delete this.onEnterFrame; } };};Перші три рядки функції беруть параметри, які їй передаються, і зберігають їх у змінних усередині фільму. Потім привласнюється функція onEnterFrame, що пересуває фільм, а також виконується перевірка досягнення кінцевої крапки.
Отже, наш фільм працює як треба, однак при більше детальному розгляді будуть виявлені деякі проблеми при використанні даного підходу. Найбільш помітний недолік полягає в тім, що будь-який фільм може мати тільки одну функцію, привласнену його керуючому елементу onEnterFrame: якщо фільм уже приблизно мав функцію, привласнену його керуючому елементу onEnterFrame, а ми привласнили йому іншу функцію, те друга функція буде записана поверх першої. Це може трапитися, якщо до фільму було застосовано плавне зникнення, збільшення розмірів або по яких-небудь інших причинах. Інша проблема полягає в тому, що ми поміщаємо у фільм змінні, такі як target, target і speed, які можуть уже використовуватися у фільмі з іншими цілями. Вони будуть просто записуватися поверх старих, що відповідним чином вплине на функціональність фільму. Незважаючи на те, що ми звичайно пам'ятаємо імена, що привласнюються об'єктам у нашім ActionScript, корисно використовувати інформативні й не позбавлені змісту назви.
|