Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Ковзання

Керування рухом

Тепер ви вже небагато розбираєтеся в тім, як працюють розглянуті різноманітні методи створення сценаріїв руху. Ми переходимо до розгляду різних способів керування рухом. Метод, що використовувався дотепер, має на увазі використання чималої кількості різних робочих місць, а ми настроїли його на роботу з одним фільмом.

Було б набагато краще брати будь-який певний фільм і створювати myMovieClip.slideTo(100,200), щоб фільм міг переміщатися до цієї крапки й зупинятися, без потреби привласнювати фільму вручну керуючий елемент clipEvent або функцію для перевірки досягнення кінцевої крапки, і т.д.

Далі ми будемо розглядати різні методи створення сценаріїв початку руху об'єкта. Ми не будемо вказувати на той або інший певний спосіб і говорити, що він є найкращим, а замість цього продемонструємо вам кілька можливостей, щоб ви могли вибирати з них потрібне для роботи з вашими проектами.

  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, корисно використовувати інформативні й не позбавлені змісту назви.

<== предыдущая лекция | следующая лекция ==>
Зміна розмірів у русі | Використання порожніх фільмів
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 257; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.023 сек.