Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника



Ковзання

  1. Відкрийте новий фільм і розмістите на робочому місці инстанс ball_mc.
  2. Перше, що ми зробимо на окремому шарі сценаріїв, це додамо виклик функції slideTo, що буде виконуватися щораз при клацанні мишею користувачем.
  3. Ми будемо передавати функції slideTo три параметри: позицію по осі x, позицію по осі y і ще одне значення, що буде вказувати швидкість ковзання:
_root.onMouseDown = function() { ball_mc.slideTo(this._xmouse, this._ymouse, 4);};
  1. Тепер нам потрібно створити безпосередньо функцію 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, відповідно до тексту коду, наведеному нижче:
_root.onMouseDown = function() { ball_mc.slideTo(this._xmouse, this._ymouse, 4); ball_mc2.slideTo(this._xmouse+19, this._ymouse, 1);};
    • Збережете фільм у файлі issueCommand1b.fla і запустите його. Ви заметете, що другий фільм переміщається значно правее покажчика миші й зі значно меншою швидкістю.

Отже, наш фільм працює як треба, однак при більше детальному розгляді будуть виявлені деякі проблеми при використанні даного підходу. Найбільш помітний недолік полягає в тім, що будь-який фільм може мати тільки одну функцію, привласнену його керуючому елементу onEnterFrame: якщо фільм уже приблизно мав функцію, привласнену його керуючому елементу onEnterFrame, а ми привласнили йому іншу функцію, те друга функція буде записана поверх першої. Це може трапитися, якщо до фільму було застосовано плавне зникнення, збільшення розмірів або по яких-небудь інших причинах.



Інша проблема полягає в тому, що ми поміщаємо у фільм змінні, такі як target, target і speed, які можуть уже використовуватися у фільмі з іншими цілями. Вони будуть просто записуватися поверх старих, що відповідним чином вплине на функціональність фільму. Незважаючи на те, що ми звичайно пам'ятаємо імена, що привласнюються об'єктам у нашім ActionScript, корисно використовувати інформативні й не позбавлені змісту назви.




Дата добавления: 2015-04-05; просмотров: 4; Нарушение авторских прав


<== предыдущая лекция | следующая лекция ==>
Зміна розмірів у русі | Використання порожніх фільмів
lektsii.com - Лекции.Ком - 2014-2018 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты