Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Pop-up баннеры (http://www.flasher.ru/forum/showthread.php?t=65456)

Idollisimo 10.06.2005 06:07

Pop-up баннеры
 
Понимаю, что вопрос примитивный, но не дайте пропасть, ибо слишком много зависит у меня от этого долбаного баннера. Обычный поп-ап, но за весь сегодняшний день мне не дали нормальных рецептов по кодированию следующих вещей:
1) Чтобы Pop-up баннер показывался поверх текста
2) Чтобы он был в середине страницы
3) Чтобы кликом по маленькой специальной кнопке его можно было закрыть.
Единсвенное, что мне насоветовали, это напихать в html-страницу и Флэш немеряную кучу JavaScript... Напихал. Все заработало, кроме закрывания баннера... но не нравится. Понимаю, что это метод года 1997-го... что сейчас можно обойтись несколькими грамотными строчками кода. Плз, помогите разобраться! Если есть желание выслать мне исходник (с html-доком, который открывает баннер) на мыло (idol_emergency (животная) rambler.ru), то моей благодарности не будет предела. Заранее спасибо!
P.S. Объяснять всю технологию в 2 предложениях не нужно - это мой первый поп-ап баннер и, скорее всего, мудрёных речей я просто не пойму. Зато пойму наглядные конкретные примеры.

AlDev 10.06.2005 07:12

юзать div в html, задать ему в style position:absolute. И положить на этот div swf-ку с прозрачным фоном. Причём всё это чудо выровнять по центру. На клик по специальной кнопке ставь getURL('javascript:closebanner();') и пиши в html:
Код:

function closebanner()
{
  document.getElementById('div_with_flash').innerHTML = '';
}

Для прозрачного фона выставь wmode='transparent'
Всё. Вот и вся идея.

D-MAN 10.06.2005 15:12

wmode в Опере не пашет кстати

iNils 10.06.2005 15:16

в 8ой опере уже пашет

Ostgur 11.06.2005 17:50

Код:

<div id="artLayer" style="position:absolute; top:2px;left:2px; visibility: hidden">
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=5,0,0,0"
ID="artFlash" WIDTH=ШИРИНА HEIGHT=ВЫСОТА>
<param name=movie value="твой_ролик.swf">
<param name=quality value=high>
<param name=bgcolor value=#FFFFFF>
<param name=wmode value=transparent>
</object>
</div>


А на ролике, вроде можно создать кноаку и вней скрипт, поправьте, если я неправ:
Код:

on(press){
 getURL("javascript:ИМЯ_СЛОЯ.style.visibility='hidden';");
}


winnner 18.01.2007 01:20

А вот интересно, можно ли такое, и как, из хмл загруженного в клип через линк вызвать? Ато я тут попробовал, не пашет =(

DELer 20.01.2007 16:47

Цитата:

Сообщение от Idollisimo
1) Чтобы Pop-up баннер показывался поверх текста
2) Чтобы он был в середине страницы
3) Чтобы кликом по маленькой специальной кнопке его можно было закрыть.

если баннер планируется для общих сетей(рекламных площадок), а не для какого-то отдельного сайта, все эти вопросы решаются на уровне службы техподдержки сети.. то есть, ты делаешь тольк флеш(рич) баннер с двумя кнопками в одной прописана команда перехода по ссылке, в другой команда закрытия.. обработку этих команд выполняют уже скрипты баннерной сети.. сами команды тоже не везде одинаковы.. большинство на FScommand , у ADBN, например, свои прописки..
скачай легкий баннер http://www.deler.ru/b/Rich/Rich-media7.htm, декомпильни и посмотри кнопки

winnner 21.01.2007 00:36

Что написать во флеш - не вопрос.
Вопрос в том, возможно-ли сделать это из текста хмл файла загруженного во флеш.
Например: имеется флеш-ролик в котором есть текстовое поле в которое, в свою очередь загружается хмл в котором написано < a href..... Так вот, как по линку из этого хмл текста загрузить в 1. рор-up окно, 2. в слой нтмл другую флешку или нтмл документ, учтывая что браузеры давят рорапы, остаётся невидимый слой, который после загрузки должен стать видимым. И как вы передадите эти команды с помощью хмл? Я, например такой возможности не вижу.

Kikasso 21.01.2007 00:54

Код:

<a href="asfunction:..
в хml

winnner 21.01.2007 03:15

не не пашет что-то.
написал так
Код:

<p><a href="asfunction: schowLayer, a">Zeugnis</a></p>
в руте:
Код:

function schowLayer(arg:String) {
        if (arg="a") {
                _root.plazeholder._alpha = 100;
        } else {
                _root.plazeholder._alpha = 0;
        }

Где ошибка?

Kikasso 21.01.2007 04:05

Коды свои обводите, есть кнопочка с решеточкой для этото.

Код:

<a href="asfunction:trace,a">Zeugnis</a>
Без пробелов.

winnner 21.01.2007 05:03

все равно не пашет=(

Kikasso 21.01.2007 05:30

Коды обведите свои, исходник сюда. Желательно упрощенный.
У меня пашет.
Код:

var t:TextField = createTextField("my_txt", 1, 200, 100, 500, 28);
t.html = true;
t.htmlText = '<a href="asfunction:trace,работает">кликни</a>';

Это тоже не пашет? Версия флеша какая?

iNils 21.01.2007 16:51

winnner, для оформления своего кода, надо использовать теги [code][/code].

winnner 21.01.2007 16:59

Да нет, Вы не поняли. Текст в это текстовое поле подгружается из хмл документа, в котором написано:

Код:

<p><a href="asfunction:schowLayer,a"><font color="#0066FF">Zeugnis</font></a></p>
А во флеше в руте:

Код:

function schowLayer(arg:String) {if (arg=a) {
                _root.plazeholder._alpha = 100;
                trace("1");
        } else {
                _root.plazeholder._alpha = 0;
                trace("0");}
};
stop();

Так вот при на жатии на ссылку "Zeugnis" ничего не происходит, т.е. ровным счетом ни-че-го!
Если пишу:
Код:

<p><a href="Zeugnis.swf" target="_blank"><font color="#0066FF">Zeugnis</font></a></p>
то открывает ссылку. (я уж грешным делом подумал, может в парсинге дело), но с обычной ссылкой всё работает.
Может я где-то ошибся, прошу меня поправить.

iNils 21.01.2007 17:00

Я сказал не [quote][/quote], а [code][/code].

winnner 21.01.2007 17:01

Цитата:

Сообщение от iNils
winnner, для оформления своего кода, надо использовать теги [code][/code].

Уже исправился :rolleyes:
Понял, не заметил. В дальнейшем учту.

etc 21.01.2007 17:42

А что за условие if (arg=a) ? Может if (arg=='a') ?

winnner 21.01.2007 18:11

Цитата:

Сообщение от __etc
А что за условие if (arg=a) ? Может if (arg=='a') ?

Да у меня в коде всё правильно, это я когда сюда писал ошибся. :bye:
В коде стоит
Код:

function schowLayer(arg:String) {
if (arg == 'a') {
                _root.plazeholder._alpha = 100;
                trace("1");
        } else {
                _root.plazeholder._alpha = 0;
                trace("0");
        }
}
stop();

пробовал и так
Код:

schowLayer.onEnterFrame = function(arg:String) {
        if (arg == 'a') {
                _root.plazeholder._alpha = 100;
                trace("1");
        } else {
                _root.plazeholder._alpha = 0;
                trace("0");
        }
};
stop();

Не помогает. Правда один раз что-то сработало, но не сразу. Я ткнул в эту ссылку в оне броузера, ничего, как обычно, не произошло, я окно свернул и полез экспериментировать дальше, а потом когда окно снова открыл то увидел что сработало. Блин мистика какая-то. А с каким вариантом уже не вспомнить. И почему не сразу, там ведь никаких циклов нет. Флаш 8.

Kikasso 21.01.2007 18:45

если такое:
Код:

function schowLayer(arg:String) { trace(arg); }
не работает, значит проблема в области видимости.
Попробуте тогда функцию сделать глобальной (после объявления).
Код:

_global.schowLayer = schowLayer;

etc 21.01.2007 18:55

asfunction:_root.showLayer,a

winnner 21.01.2007 19:03

Цитата:

Сообщение от Kikasso
не работает, значит проблема в области видимости.

В самую точку!!!
Теперь всё работает. Остаётся один вопрос, почему функция расположенная в руте не видна? Странно, не правда-ли.
Спасибо за помощь! :drinks:
Жаль, что сам не подумал так попробовать. :o

Kikasso 21.01.2007 19:31

Цитата:

Сообщение от winnner
Теперь всё работает. Остаётся один вопрос, почему функция расположенная в руте не видна? Странно, не правда-ли.

вы еще и так не пробовали:
Код:

function wereAmI():Void{ trace(this); }
_global.wereAmI = wereAmI;
txt.htmlText = '<a href="asfunction:wereAmI">кликни</a>';

либо вызывать как __etc говорит
либо делай функцию глобальной - и будет она доступна отовсюду.

etc 21.01.2007 19:54

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

Kikasso 21.01.2007 20:05

Цитата:

Сообщение от __etc
Можно было и _parent вызвать.
Область видимости у asfunction совпадает с областью видимости мувика, содержащего поле. Т.е. _parent ссылается на родителя мувика с полем.

а если там _parent._parent._parent? По мне - лучше такие дела глобализовывать и не мучится. Ну или запустить wereAmI и определиться с местонахождением.

winnner 21.01.2007 22:01

Цитата:

Сообщение от Kikasso
а если там _parent._parent._parent? По мне - лучше такие дела глобализовывать и не мучится. Ну или запустить wereAmI и определиться с местонахождением.

Полностью согласен! Зачем усложнять код? Чем проще - тем эффективнее.

winnner 22.01.2007 15:49

Уважаемый Kikasso, может Вы мне подскажете почему когда я подгружаю в мувик swf ку созданную Flashpaper она ведёт себя мягко говоря странно.
Т.е. во первых масштабируется по каким-то непонятным законам, отображается не полностью, а как бы обрезана снизу ну и другие глюки.
Может кто сталкивался? Залезать в Flashpaper овскую свфку что-бы что-то там править нет ни возможности ни времени, их много.
Что посоветуете?

Kikasso 22.01.2007 15:54

Честно говоря, без понятия. Наверное, лезет поверять Stage.width и прочее, а может версия плеера не совпадает. Не работал ни разу.

winnner 22.01.2007 16:48

Да она создаётся для 6 плеера, но если не подгружать, а просто открыть, то отображается нормально и в 8 м но маленькая, а если сунуть в хтмл - занимает всё окно. Тут просто у меня проблема в следующем, в моём ролике вначале идёт интро, при нажатии на кнопку "ентер", начинается проигрывание, и если по обычной ссылке в ролике кликнуть то в том-же окне, т.к. броузеры давят попапы, загружается эта свф-ка созданная в флешпапере. При переходе броузера назад снова грузится интро, и конечно меня это не устраивает. Поэтому я и хотел подгружать в ролик, а не загружать отдельно.
Может что посоветуете, ато и так плохо и эдак нехорошо.

winnner 22.01.2007 16:54

P.S.
Из этих свф можно легко сделать пдф-ы, но это дела не меняет, т.к. они тоже грузятся в то-же окно. Я тут нарыл такой код на асп который вроде должен предлагать загрузку пдф-а, а не его открытие, но он у меня не работает, а просто отображается как текст.

Код:

<%
filename=Server.MapPath(Request("file"))
Response.ContentType="application/octet-stream"
Response.Addheader "Content-Disposition", "attachment; filename="&filename
Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open
objStream.LoadFromFile filename
Response.BinaryWrite(objStream.Read)
objStream.Close
Set objStream = Nothing
%>



Часовой пояс GMT +4, время: 08:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.