MX ActionScript сьогодні – створюємо події!

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

Якщо ж Ви хочете придбати паперову копію представлених тут матеріалів, звертайтесь до нашої книгарні.

З повагою, команда розробників eManual.ru

[MX] ActionScript сьогодні - створюємо події!

[MX] ActionScript сьогодні: створюємо події!

---> що будемо робити ? : будемо винаходити вічний двигун з велосипедним приводом (це якщо загалом і в цілому). якщо конкретніше - то подивимося, як за допомогою AS[MX] можна створити нову подію (event), яка буде діяти нітрохи не гірше стандартних подій (начебто добре знайомих onEnterFrame, onMouseDown і т п) // ---> а навіщо ? : це філософське питання - "навіщо" :) ніколи не ставте таке дивне питання програмісту - він може образитися :)) загалом - це буває дуже зручно. наприклад, можна створити подію onDoubleClick, яка відбуватиметься при подвійному кліку мишки, можна зробити подію onMiddleMouse, яка спрацьовуватиме при натисканні середньої кнопки миші і т д і т п. не варто зациклюватися тільки на мишці . якщо вас тут щось і обмежує, то це виключно ваша буйна фантазія ;) плюс - іноді буває потрібно зробити так, щоб об'єкт реагував на події, визначені для зовсім іншого класу об'єктів. один із способів (і досить зручний) цього досягти - використовувати пару недокументованих особливостей МХ. // ---> ой як все заплутано інедокументовано. : спокійно. сядьте на місце :)) все, можна вважати, документовано - тому що інформацію в Мережі знайти можна (на сайтах "для відморожених" (гуру в сенсі :) )) а раз інформація доступна в Мережі - то які ще документи Вам потрібні? Мало чого макромедія не захотіла в хелп включити! :))

1. Events ______________________________________________________

- що це таке: в принципі, подією може бути що завгодно - від натискання кнопки миші, до зміни стану якоїсь змінної. onEnterFrame, onKeyDown, onMouseMove - все це до болю знайомі події :) у об'єктів, для яких ці події є в списку 'events', вони спрацьовують автоматично: варто тільки визначити функцію з потрібним ім'ям, і все готово - ця функція спрацьовуватиме при кожному сигналі від відповідної події. в МХ передбачений спосіб створення таких подій. для цього сигнали про події передаються у вигляді "повідомлень" у кожного з яких є ім'я, і список параметрів (можливо порожній).

– звідки беруться повідомлення: генеруються об'єктами в ситуаціях, які ви визначите. це може бути будь-яка ситуація, в якій вам потрібна реакція будь-якої кількості об'єктів якогось класу. (приклад із стандартних - всі об'єкти класу MovieClip отримують повідомлення onEnterFrame із заданою частотою)

- кому передаються ці повідомлення: всім об'єктам, які працюють на прийом "повідомлень" даного генеруючого повідомлення об'єкта.

- для чого передаються повідомлення: "ім'я" повідомлення про подію є назвою тієї функції, яку потрібно викликати у всіх об'єктів, які це повідомлення отримають (якщо є параметри, вони відповідно це функції і передаються).

наприклад: onMouseDown - цеподія, з ім'ям "onMouseDown", без параметрів, яка передається всім "об'єктам, що слухають" один раз, при натисканні на ліву кнопку миші.

>> таким чином все, що нам потрібно, щоб "створити подію" це : > дізнатися як надсилати такі повідомлення > дізнатися як включити якийсь об'єкт на прийом повідомлень

2. listener і addListener() ______________________________________________________ -- що таке listener: listener - це об'єкт, здатний приймати повідомлення про події від будь-якого іншого об'єкта. у списку "listeners" багатьох стандартних об'єктів дано зумовлені назви подій, які можуть посилати даний об'єкт. наприклад у списку listener'ів об'єкта Mouse є "onMouseDown", "onMouseUp" та "onMouseMove". це означає, що при відповідних подіях мишки всім об'єктам, доданим до списку лисенерів об'єкт Mouse буде передано відповідне повідомлення. додавання об'єктів до списку події, що приймають, якраз і займається функція addListener.

де "джерело" - це об'єкт, що генерує події, а "приймач" - це об'єкт, який ці події ловить. приклад: // ---------- testListener = ; // об'єкт класу Object з властивістю name testListener.onMouseDown = function() trace("MouseDown triggered !"); >; Mouse.addListener(testListener); // тепер об'єкт testListener приймає повідомлення про події об'єкта Mouse trace(Mouse._listeners[0].name); // переконуємося, що testListener додався до масиву лисенеров // ----------

3. ASBroadcaster ______________________________________________________ ASBroadcaster - це об'єкт призначений для програмної передачі повідомлень проподіях. метод ASBroadcaster.initialize(об'єкт); дозволяє для даного об'єкта генерацію подій. Об'єкт, який ми передали методу initialize як аргумент, тепер може відсилати повідомлення про події. де message - це рядок-ім'я події, а parameters - список (можливо порожній) параметрів. найпростіше зрозуміти що відбувається на прикладі: // ---------- // /* ця функція буде видавати повідомлення про подію "onSecondFrame" кожен другий кадр. для прикладу передаються п'ять параметрів (хоча їх може бути скільки завгодно, а може бути взагалі) */ _root.onEnterFrame = function() if (flag) this.broadcastMessage("onSecondFrame", 1, 2, 3, 4, 5); flag = false; > else flag = true; > >; // реєструємо _root як передавальний події об'єкт ASBroadcaster.initialize(_root); // створюємо лисенер a = <>; // визначаємо обробник події onSecondFrame a.onSecondFrame = function() // виводимо передані аргументи trace("Second Frame :: "+arguments); >; // включаємо об'єкт "a" на прослуховування подій об'єкта _root _root.addListener(a); // // ---------- -------- -------------------------------------------------- ------

ось власне і все :)) залишилося все це творчо переосмислити та застосувати :)) головне - не варто городити реактивний двигун там, де достатньо самокату :))