Ковзання
- Відкрийте новий фільм і розмістите на робочому місці инстанс ball_mc.
- Перше, що ми зробимо на окремому шарі сценаріїв, це додамо виклик функції slideTo, що буде виконуватися щораз при клацанні мишею користувачем.
- Ми будемо передавати функції slideTo три параметри: позицію по осі x, позицію по осі y і ще одне значення, що буде вказувати швидкість ковзання:
- Тепер нам потрібно створити безпосередньо функцію slideTo, що повинна буде виконувати дві окремих дії:
- установлювати у фільмі значення target і target;
- набудовувати керуючий елемент enterFrame фільму для забезпечення його ковзання в напрямку до кінцевої крапки.
Замість того щоб визначати цю функцію для окремого фільму, як ми робили в попередніх функціях 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, що пересуває фільм, а також виконується перевірка досягнення кінцевої крапки.
- Збережете ваш файл під ім'ям issueCommand1.fla і запустите його. При клацанні мишею фільм буде сковзати до місця клацання.
- Ми також можемо спробувати застосувати той же самий підхід у двох фільмах - створити копію вихідного фільму ball_mc і дати новому инстансу ім'я ball_mc2 за допомогою Property Inspector.
- Перетягнете инстанс ball_mc2 на робоче місце й потім відкрийте панель Actions для зміни коду onMouseDown, відповідно до тексту коду, наведеному нижче:
- Збережете фільм у файлі issueCommand1b.fla і запустите його. Ви заметете, що другий фільм переміщається значно правее покажчика миші й зі значно меншою швидкістю.
Отже, наш фільм працює як треба, однак при більше детальному розгляді будуть виявлені деякі проблеми при використанні даного підходу. Найбільш помітний недолік полягає в тім, що будь-який фільм може мати тільки одну функцію, привласнену його керуючому елементу onEnterFrame: якщо фільм уже приблизно мав функцію, привласнену його керуючому елементу onEnterFrame, а ми привласнили йому іншу функцію, те друга функція буде записана поверх першої. Це може трапитися, якщо до фільму було застосовано плавне зникнення, збільшення розмірів або по яких-небудь інших причинах.
Інша проблема полягає в тому, що ми поміщаємо у фільм змінні, такі як target, target і speed, які можуть уже використовуватися у фільмі з іншими цілями. Вони будуть просто записуватися поверх старих, що відповідним чином вплине на функціональність фільму. Незважаючи на те, що ми звичайно пам'ятаємо імена, що привласнюються об'єктам у нашім ActionScript, корисно використовувати інформативні й не позбавлені змісту назви.
Дата добавления: 2015-04-03; просмотров: 625;