MX ActionScript днес – Създаване на събития!

Страницата по-долу е само част от огромен сайт, посветен на различна компютърна документация, сайтът съдържа повече от 800 MB информация. Ако не сте намерили това, което търсите в тази статия, опитайте да погледнете тук, попитайте във форума или потърсете информацията, от която се нуждаете, в нашата директория с връзки към компютърни сайтове.

Ако искате да закупите хартиено копие на представените тук материали , моля, свържете се с нашата книжарница.

С най-добри пожелания, екип за разработка на eManual.ru

[MX] ActionScript днес – създаване на събития!

[MX] ActionScript днес: Създаване на събития!

---> И какво ще правим ? : ние ще изобретим вечен двигател с велосипедно задвижване (ако по принцип). По-конкретно, нека да видим как с помощта на AS[MX] можете да създадете ново събитие (събитие), което ще действа не по-зле от стандартните събития (като добре познатите onEnterFrame, onMouseDown и т.н.) // ---> за какво ? : това е философски въпрос - "защо" :) никога не задавайте такъв странен въпрос на програмист - може да се обиди :)) въобще - може да е много удобно. например, можете да създадете събитие onDoubleClick, което ще се задейства при двукратно щракване на мишката, можете да направите събитие onMiddleMouse, което да се задейства при натискане на средния бутон на мишката и т.н. и т.н. Не трябва да се фокусирате само върху мишката. ако нещо ви ограничава тук, това е само вашето развинтено въображение ;) плюс - понякога трябва да накарате обект да реагира на събития, дефинирани за напълно различен клас обекти. един начин (и доста удобен) да постигнете това е да използвате няколко недокументирани функции на MX. // ---> о, колко объркващо ибез документи. : успокой се. седнете :)) всичко може да се счита за документирано - защото можете да намерите информация в мрежата (на сайтове "за измръзнали" (гурута в смисъл :) )) и тъй като информацията е налична в мрежата, какви други документи са ви необходими? никога не знаете какво macromedia не е искала да включи в помощта! :))

1. Събития ________________________________________________________________

-- какво е това: по принцип всичко може да бъде събитие - от щракване на бутон на мишката до промяна на състоянието на някаква променлива. onEnterFrame, onKeyDown, onMouseMove - всички те са до болка познати събития :) за обекти, за които тези събития са в списъка със 'събития', те се задействат автоматично: просто трябва да дефинирате функция с желаното име и сте готови - тази функция ще се задейства при всеки сигнал от съответното събитие. MX предоставя начин за създаване на такива събития. За тази цел сигналите за събития се предават като "съобщения", всяко от които има име и списък с параметри (евентуално празен).

-- откъде идват съобщенията: генерирани от обекти в ситуации, които дефинирате. това може да бъде всяка ситуация, в която имате нужда от отговор на произволен брой обекти от някакъв клас. (стандартен пример - всички обекти от класа MovieClip получават съобщението onEnterFrame с определена честота)

--- до кого се изпращат тези съобщения: всички обекти, които работят за получаване на "съобщенията" на генериращия съобщение обект на този обект.

–- какви съобщения се изпращат: "име" на съобщението за събитие е името на функцията, която трябва да бъде извикана на всички обекти , които ще получат това съобщение (ако има параметри, тогава те съответно се предават на функцията).

например: onMouseDown есъбитие с име "onMouseDown", без параметри, , което се изпраща до всички "слушащи" обекти веднъж, когато се натисне левият бутон на мишката.

>> така че всичко, от което се нуждаем, за да "създадем събитие" е: > научете как да изпращате такива съобщения > научете как да активирате даден обект да получава съобщения

2. слушател и addListener() ___________________________________________________________ - какво е слушател: слушателят е обект, способен да получава съобщения за събития от някакъв друг обект. Списъкът "слушатели" на много стандартни обекти дава предварително дефинирани имена за събитията, които този обект може да изпраща. например списъкът със слушатели на обекта Mouse има "onMouseDown", "onMouseUp" и "onMouseMove". това означава, че със съответните събития на мишката, всички обекти, добавени към списъка с слушатели на обекта на мишката, ще получат съответното съобщение. Добавянето на обекти към списъка с получатели на събития е само функцията addListener.

където "source" е обектът, който излъчва събитията, а "receiver" е обектът, който слуша за тези събития. Всички слушатели на обекта се съхраняват в (отново, недокументирано) свойството _listeners. > пример: // ---------- testListener = ; // обект от клас Обект с име на свойство testListener.onMouseDown = function() trace("MouseDown задейства!"); >; Mouse.addListener(testListener); // сега обектът testListener приема съобщения за събития от обекта Mouse trace(Mouse._listeners[0].name); // уверете се, че testListener е добавен към масив от слушатели // ----------

3. ASBroadcaster _________________________________________________________________ ASBroadcaster е обект, предназначен за програмно предаване на съобщения засъбития. метод ASBroadcaster.initialize(обект); позволява генерирането на събития за този обект. Обектът, който предадохме на метода за инициализация като аргумент, вече може да изпраща съобщения за събития. Събитието се предава на всички слушатели, използвайки broadcastMessage("message", parameters); където message е име на низ на събитието, а parameters е списък (възможно празен) от параметри. Най-лесно е да разберете какво се случва с пример: // ---------- // /* тази функция ще издава съобщение за събитието "onSecondFrame" всеки втори кадър. например, предават се пет параметъра (въпреки че може да има или да няма произволен брой параметри) */ _root.onEnterFrame = function() if (флаг) this.broadcastMessage("onSecondFrame", 1, 2, 3, 4, 5); флаг = невярно; > else флаг = вярно; > >; // регистрирайте _root като обект за разпространение на събития ASBroadcaster.initialize(_root); // създайте слушател a = <>; // дефинирайте манипулатор на събитие onSecondFrame a.onSecondFrame = function() // извежда предадените аргументи trace("Se cond Frame :: "+аргументи); >; // разрешаване на обекта "a" да слуша събитията на обекта _root _root.addListener(a); // // ---------- ----------------------------------------------------------------

това всъщност е всичко :)) остава творчески да преосмислим и приложим всичко това :)) основното нещо е да не се изгради реактивен двигател там, където има достатъчно скутер :))