Форум 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)
-   -   Баннер-расхлоп. JavaScript (http://www.flasher.ru/forum/showthread.php?t=198001)

Маруська 17.04.2013 12:46

Баннер-расхлоп. JavaScript
 
Доброго дня, дорогие!
Вопрос на засыпку: понадобилось сделать баннер-расхлоп.
Везде пишут, что изменение размера реальзуется простейшим JS/ Но вот каким - никто не пишет. Помогите, пожалуйста. Напишите, какой JS и куда нужно писать.

Всякие RollOver и RollOut на кнопку прописала. Всё работает.. вот только необходимо программное изменение размера по высоте с 90px до 240px, никак реализовать это не могу.

Hauts 17.04.2013 12:52

Маруська, реализация зависит от требований площадки, которые нужно уточнить. Универсальных решений нет, поэтому запрашивайте техтребования, изучайте их и, по возможности, ищите пример.

Вполне возможно, что "расхлоп" баннера делается с помощью двух независимых флэшек. Одна постоянно находится на странице сайта (та, которая маленькая), вторая показывается, когда первая получает событие onRollOver, вызывает некоторый метод js (который площадкой и обеспечивается), при этом вторая габаритно закрывает первую, поэтому выглядит, как "расхлоп".

Маруська 17.04.2013 12:56

всё дело в том, что все тех.требования, которых я добилась от сайта выглядят так:
1. Баннер высотой 1100x90, который при наведении:
а) Меняет свою высоту
б) Вызывает внешний js

файл должен быть один

Вот что прислали:
"Пусть это будут глобальные функции adCollapse() и adExpand() без параметров"

Hauts 17.04.2013 13:05

Маруська, очевидно, что информации маловато.

Думаю, что в лучшем случае нужно еще раз запросить у владельцев сайта информацию о том, какой именно js вызывать. Желательно с настойчивой интонацией, конечно.

Если скажут, что можно использовать свой js-код, то вам, в принципе, не составит большого труда "дернуть" свой js-метод через ExternalInterface и поменять размеры у баннера.

Вообще, по своему опыту (лучше б его не было) скажу — баннеры, особенно те, которые всячески трансформируются — это редкостная морока, большая часть которой связана с передачей информации, а не с реализацией. Сделать примитивный баннер и вызывать некоторый метод на странице — проще простого. Но вот получить достоверную актуальную информацию о том, какой же, все-таки, метод "дергать" — уже проблема. И, чаще всего, она связана с тем, что работает "испорченный телефон" из всякого рода менеджеров, которые ничерта не понимают в техническом плане, но очень стараются своими словами что-то передать или запросить.

Маруська 17.04.2013 13:17

"дернуть" свой js-метод через ExternalInterface

Вот мне - это очень большой труд.. вообще не секу в js. И что откуда дёргать - не знаю.

Настойчиво просить там не у кого. они там все дибилы

Добавлено через 8 минут
Вот так от меня требуют

В js мы меняем высоту DOM-контейнера, где содержится объект swf. Но вам надо менять высоту самого клипа

Hauts 17.04.2013 13:59

Маруська, вы правы.

Я, вероятно, все сказал, чем мог помочь. Спрашивайте как называется js метод, который меняет высоту дом-элемента.

Маруська 17.04.2013 14:07

как-то можно внутри swf-ки менять её размер?

Hauts 17.04.2013 14:33

Теоретически да, но вам это весьма проблематично будет.

Маруська 17.04.2013 14:34

Цитата:

Сообщение от Hauts (Сообщение 1130190)
Теоретически да, но вам это весьма проблематично будет.

Но мне это очень нужно.

Hauts 17.04.2013 14:58

Код AS1/AS2:

import flash.external.ExternalInterface;
function resizeInHTML(width, height) {
        _global.__jsId = Math.random();
        if (!_root.__getJsId) {
                _root.__getJsId = function() {
                        return _global.__jsId;
                };
                ExternalInterface.addCallback("__getJsId",_root, _root.__getJsId);
        }
        var callFunction = "function(needId,width,height){";
        callFunction += "var elements = document.getElementsByTagName('object');";
        callFunction += "for(var k = 0 ; k < elements.length; k ++){";
        callFunction += "var element = elements[k];";
        callFunction += "if(element.__getJsId != undefined){";
        callFunction += "if(needId == element.__getJsId()){";
        callFunction += "element.style.width = width;";
        callFunction += "element.style.height = height;";
        callFunction += "return;";
        callFunction += "};";
        callFunction += "}";
        callFunction += "}";
        callFunction += "}";
        ExternalInterface.call(callFunction,_global.__jsId,width,height);
}
 
// Test:
this.onMouseDown = function() {
        resizeInHTML(100 + Math.floor(Math.random() * 100) + "px",100 + Math.floor(Math.random() * 100) + "px");
};

Не ручаюсь, что будет хорошо работать во всех браузерах.

P.S. Тестировать не локально.


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

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