Передача ссылки во flash-баннер из html

Бывает так: есть flash-баннер, который должен ссылаться на какую-то странцу сайта. А адрес этой страницы неизвестен и станет известен только тогда, когда баннер собственно будет внедряться в код сайта. Или нужно иметь возможность менять ссылку во flash-баннере время от времени.

В обычном случае приходится брать исходник баннера и исправлять в нём ссылку, а потом компилировать баннер заново.

А хотелось бы иметь возможность изменить ссылку, на которую будет переводить баннер при клике, прямо из html-кода. Иными словами, передавать баннеру ссылку в виде параметра.

Как?

А вот как!

Подготовка flash-баннера

В сам баннер в первый кадр нужно добавить код для приёма параметра. А кнопку, которая осуществляет переход, изменить соответствующим образом.

Первый кадр flash-баннера

В него нужно добавить такой код:

// _level0.bannerLink is passed via FlashVars
if (_level0.bannerLink == undefined) {
	// Default link will be used if no other link was specified via params
	var bannerLink:String = "http://www.sprinthost.ru";
} else {
	var bannerLink:String = _level0.bannerLink;
}

bannerLink — это параметр, который будет передаваться в ролик. В коде также предусмотрена ссылка по умолчанию.

Код кнопки

Сама кнопка для клика получает следующий код:

on(release) {
    getURL(bannerLink);
}

На этом с самим роликом всё. Осталось ещё добавить собственно передачу параметра в html-код.

Добавление параметров баннера в код html

В тэг <object>, который используется для внедрения баннера, нужно будет добавить код, который выделен жирным:

<object
  type="application/x-shockwave-flash"
  data="banner.swf"
  width="170" height="250">
    <param name="movie" value="banner.swf">
    <param name="wmode" value="transparent">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="FlashVars" value="bannerLink=http://www.google.com">
</object>

В данном примере ролику передаётся параметр, согласно которому он будет ссылаться на www.google.com.

Всё!

Поздравляю с достигнутым счастьем.

комментариев 27

  • Большое спасибо, долго искал код но нигде не было написано так просто и подробно.
    Кстати, если исходники для людей выложите с HTML вообще замечательно будет.
    Сейчас решаю еще проблему:
    1) Как сделать баннер, который бы активировался без двойного щелчка.
    2) Как сделать, чтобы при отсутствии флэша показывался gif

  • Вообще, в заметке приведён весь необходимый html-код. Или Вас интересуют исходники flash-ролика с приёмом параметров?

    По поводу вопросов:

    1) Без двойного щелчка по чему?
    2) Мы обычно используем swfobject для вставки flash, он позволяет и подложку сделать. В документации по нему всё подробно изложено с примерами кода: http://code.google.com/p/swfobject/

    Успехов 🙂

  • Анна Орлова

    ….В тэг , который используется для внедрения баннера, нужно будет добавить код, который выделен жирным…..
    А что выделено жирным? Не могу понять — дизайн блога тёмный.
    Сама баннер на сайт поставила, но он статичный и не ведёт никуда. А что именно прописать, чтобы он вёл на другой сайт так и не поняла.

  • Жирным выделены следующие строки:

    <param name=»allowScriptAccess» value=»sameDomain» />
    <param name=»FlashVars» value=»bannerLink=http://www.google.com»>

    Чтобы банер вёл куда-нибудь, нужно сделать на нём кнопку и прописать ей on(release), как описано в примере.

  • Я не прогамист и мне очень тяжело в этом разбираться! Свой сайт создала по готовым шаблонам, но дальше приходится всё самой!
    Если у меня баннер с расширением gif, то надо все swf поменять на gif? И куда в этих тегах вставлять сам HTML код готового баннера? он у меня в таком виде:

    И размер баннера надо изменить на свой.

  • В статье описана ситуация с flash-баннером. Если у Вас баннер с расширением .gif, то всё гораздо проще: достаточно заключить его в тэг ссылки:

    <a href="http://ссылка_на_Ваш_сайт"><img src="http://ссылка/на/Ваш/баннер/banner.gif"></a>

  • Спасибо!!! Всё получилось!!! Удачи Вам во всём!!!

  • Что-то как-то не получается у меня (сразу говорю, я занимаюсь в большей степени дизайном, поэтому даже c html разметкой на Вы, так что особо не пинайте).
    Делаю все как написано в статье, при запуске готового swf баннер кликабелен и естественно отправляет на sprinthost.ru (строка var bannerLink:String = «http://www.sprinthost.ru»; это и подразумевает, поэтому здесь все нормально).
    Но вот когда запускаю flash с помощью html файла в той же опере (сам html генерирую Adobe Flash CS3), то здесь почему-то никакого перехода по клику на баннер не происходит ( помогите пожалуйста, вот место, куда и добавляю строку кода:

    ….

  • 1. А в других браузерах как?
    2. Скиньте ссылку на то, что получилось, т. к. код в комментарии не очень удобно вставлять.

  • Что такое этот первый кадр флеш-баннера? Я так понимаю этот кадр должен быть выделен в слое с кнопкой?
    В общем если так, то получается следующее: mfarmer.ru/flash/bomba2.html — иными словами ссылка работает только дефолтная, может быть я как-то не так передаю параметры в теге ?
    Что я делаю не так, может кто-нибудь подсказать?
    Буду примного благодарен!
    Спасибо.

  • Первый кадр — это самый-самый-самый-самый-самый-распресамый первый кадр ролика. Важно, чтобы скрипт запустился в самом начале.

    С роликом у Вас всё в порядке. Попробуйте использовать код для внедрения ролика, который приведён в качестве примера в статье.

  • И в прям работает!
    Спасибо!
    А что не так в моём html коде то?
    Спасибо огроменное, ещё раз!

  • В Вашем коде используется старый вариант с embed, который придуман для совместимости со всеми старыми браузерами. В настоящее время этот вариант не актуален и наоборот мешает современным возможностям 🙂

  • Спасибо огроменное! 🙂

  • Пожалуйста, помогите, я вижу вы отлично разбираетесь в этих вещах в отличии от меня… Я далеко не программер, и не флешер, чтоб писать в AS. Я создал баннер в програмке CoffeeCup Flash FireStarter, но столкнулся с этой проблемой… Как задать одну ссылку по умолчанию я понял, но мне нужны разные ссылки на один и тот же баннер… что-то прописать в флешке я не могу, и декомпилировав её тоже ничего утешительного не увидел… Подскажите, можно ли решить такую проблему?.. Как-то настроить данный параметр в самой программе или обойти то, что она написала… Заранее спасибо огромное, на Вас вся надежда…

  • Lego, суть этого решения как раз и состоит в том, чтобы настраивать через html ссылку для Flash-банера, чтобы в разных случаях привязывать к банеру разные ссылки.

    Для того, чтобы изменить ссылку, достаточно поменять html-код, с помощью которого внедряется банер. Пример кода приведен в этой статье.

  • А если ссылка внедряется самой программой при создании баннера, и в html коде её нет?.. Как тогда быть?.

  • В таком случае следует изучить документацию к используемой Вами программе, либо воспользоваться редактором Flash, который разрабатывает компания Adobe: http://www.adobe.com/ru/products/flash/

    Для реализации описанного в статье решения необходимо иметь возможность добавления ActionScript в ролик. Именно за счет взаимодействия ActionScript и параметров html-кода, с помощью которого ролик внедряется на страницу, происходит замена ссылки.

  • Извините за оффтоп. Решила рискнуьь, вдруг Вы сможете мне помочь. У меня такая задача: во флеш-баннер на сайте надо передавать строковую переменную (текст) из вне, то есть текст будет меняться периодически, не хочется каждый раз переделывать fla, swf и грузить на сайт.
    Помогите, пожалуйста.

  • Для этого необходимо передать текст из html в переменную флешки, как описано в статье. После этого Вы можете выводить этот текст в любом месте ролика.

  • В html передаем параметр:

    Во Flash на объекте пишем:
    getURL(_root.link, «_blank»);

    Можно написать и другие параметры открытия:
    _blank — новое окно
    _self — в текущий фрейм
    _top — в полное окно
    _parent — в область фрейма-родителя

    И все работает…

  • 🙂 Хотел чтоб html еще отобразился, но не получается…
    Короче используйте _root. и все будет хорошо

  • А у меня ссылка не заработала ((
    помогите плиз

  • Walentin, советы для начала: убедитесь, что сделали все так, как написано в статье. Почитайте комментарии, в них есть решения для сложностей, с которыми Вы можете столкнуться.

    Техника предполагает знание ActionScript, если Вы его еще не изучали, почитайте по нему документацию. Попробуйте сделать сначала какой-нибудь простой скрипт, выполняющийся в первом кадре ролика.

  • Хочу сделать,чтобы внутри ролика картинки вращались, взрывались и т.п.
    Кто подскажет где взять коды (может есть какая-то база)
    куда их нужно поставить,чтобы анимация заработала?

  • Здравствуйте!
    Есть код баннера партнерки. Как из него можно получить обычную реф ссылку типа : http://www.partner.ru/ref1111 ?

  • Здравствуйте, подскажите пожалуйста, как можно изменить этот код, чтобы при тапе на баннер, ссылка открывалась в новой вкладке? Т.е. можно ли это в хтмл прописать?
    Я пробовал заключить обджект в тег а и прописать хреф с бланком, но почему-то это не прокатило.

    Если прописывать слеш бланк во флеш, то куда именно?

Добавить комментарий