Анимированный баннер запускает полноэкранное наложение видео с сторонними компонентами - PullRequest
0 голосов
/ 23 февраля 2012

Я относительно новичок в такого рода вещах во Flash, поэтому мне очень жаль, если мое объяснение отсутствует в каких-либо областях, и я был бы очень признателен, если бы какие-либо ответы могли полностью объяснить, что я делаю, чтобы я мог учиться в отличие от просто вставить в раствор.

Я пытаюсь создать небольшой анимированный баннер, который при нажатии запускает полупрозрачный оверлей (похожий на LightBox, изначально он был создан с учетом LightBox), охватывающий контент веб-страницы и содержащий видеопроигрыватель. Отныне я буду называть эти элементы «баннер» и «оверлей». Оверлей и баннер содержатся в отдельных файлах .swf.

Баннер является относительно сложным, он анимируется при загрузке, воспроизводит зацикленную анимацию в режиме ожидания и другую анимацию при mouseOver. Нажав на баннер или разрешив анимации mouseOver завершить, запустите наложение. У меня была рабочая версия, которая называла бы лайтбокс jQuery, но теперь меня попросили встроить эту функциональность в использование сторонних компонентов, и это нарушило анимацию и интерактивность баннера.

Это код ActionScript в том виде, в котором он находится в файле баннера.

import flash.external.ExternalInterface;
import flash.events.MouseEvent;
import flash.events.Event;

stop();

curl_mc.alpha = 0;

curl_mc.stop();

hotspot_mc.useHandCursor = true;
hotspot_mc.buttonMode = true;

hotspot_mc.addEventListener(MouseEvent.ROLL_OVER, onLoopRollover, false, 0, true);
hotspot_mc.addEventListener(MouseEvent.ROLL_OUT, onLoopRollout, false, 0, true);

hotspot_mc.addEventListener(MouseEvent.CLICK, screenad.shared.callMethod("launchLayer"));
curl_mc.addEventListener('curlComplete', screenad.shared.callMethod("launchLayer"));

function onLoopRollover(e:MouseEvent):void
{
  loop_mc.alpha = 0;
  loop_mc.stop();

  curl_mc.alpha = 1;
  curl_mc.gotoAndPlay(1);
}

function onLoopRollout(e:MouseEvent):void
{
  loop_mc.alpha = 1;
  loop_mc.gotoAndPlay(1);

  curl_mc.alpha = 0;
  curl_mc.stop();
}

А вот код ActionScript в файле наложения.

screenad.hide();

screenad.shared.'showAd' = function()
{ 
  screenad.show;
}

Они отражают изменения, которые были предложены мне группой поддержки компонентов, но анимация в баннере все еще не работает, как и интерактивность, запускающая наложение.

1 Ответ

0 голосов
/ 25 февраля 2012

Я думаю, что вам нужно сочетание HTML + Flash для решения этой проблемы.

Что я, вероятно, хотел бы сделать, это разделить флэш-объекты.

Баннер и Видео.

Баннер будет простым анимированным компонентом после нажатия, вы можете поместить HTML-оверлей на всю страницу и загрузить в нее флэш-видео компонент.

Вы можете осуществлять связь через flash -> Javascriptчерез класс ExternalInterface.

, например:

AS3

if( ExternalInterface.isAvailable )
{
    ExternalInterface.call("loadOverlayVideo","4")
}

Javascript

function loadOverlayVideo(videoId)
{
    showBlahBlah()
}

Примечание: если ваши функциинаходятся внутри встроенной функции JQuery, вам может потребоваться «экстернализировать» функцию, используя:

window.loadOverlayVideo = loadOverlayVideo

В противном случае Flash не сможет ее найти

Пожалуйста, убедитесь, что вы используете настраиваемые параметры вкаждая функция, и вы получите действительно многократно используемый компонент, который вы сможете использовать столько раз, сколько захотите.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...