Просмотр полной версии : как из флеша изменить метод объекта родительского окна
sergeyrg
29.09.2009, 12:55
всем доброго времени суток,
вопрос такой:
у меня флешка находится в диве с display:none
по нажатию на уменьшенную катинку (onclick=flash_show(); ) этот display делается block
как мне сделать чтобы по нажатию в поле флешки в родительском файле активировалась заготовленная JS-функция flash_hide() {var mapblock = document.getElementById('big_map');
mapblock.style.display='none';} которая скроет этот див (а не закроет флешку насовсем)
заранее спасибо.
alexcon314
29.09.2009, 13:00
ExternalInterface
sergeyrg
29.09.2009, 13:29
я очень извиняюсь за назойливость, но у меня не очень с английским и возможности нет скачать 2х метровый архивчик, да и развёрный ответ наверное пригодится кому то ещё, не могди бы вы рассказать для "особо одарённых" попроще, типа: берёш бэкграуд флешки, делаешь кнопкой, жмешь ф9, пишешь "комманда".. ну или типа того
буду оооочень признателен :)
alexcon314
29.09.2009, 14:15
Пример:
флэш:
import flash.external.*;
btn.onPress = function() {
var jsFunction:String = "sayHello";
var param:String = "browser";
var retValue:String = String(ExternalInterface.call(jsFunction, param));
};
JS (в теле страницы):
<script>
function sayHello(name) {
alert(">> Hello " + name + ".");
return ">> Hi Flash.";
}
</script>
sergeyrg
29.09.2009, 17:57
ничего не получается :(
в коде AS :
import flash.external.*;
bg_button.onPress = function() {
var jsFunction:String = "show_map";
var param:String = "none";
var retValue:String = String(ExternalInterface.call(jsFunction, param));
}
встроенный дебагер ругается:
**Error** Scene=Scene 1, layer=bg, frame=1:Line 1: Statement must appear within on handler
import flash.external.*;
**Error** Scene=Scene 1, layer=bg, frame=1:Line 2: Statement must appear within on handler
bg_button.onPress = function() {
Total ActionScript Errors: 2 Reported Errors: 2
изменил на:
import flash.external.*;
on (press) {
var jsFunction:String = "show_map";
var param:String = "none";
var retValue:String = String(ExternalInterface.call(jsFunction, param));
}
перестало ругаться на вторую строку
я просто нигде не могу найти нормальное описание функции import, насколько я понимаю эта функция позволяет импортировать внешние классы, так это получается что мне нужно ещё написать отдельный класс??
я принцип понять не могу :(
мне нужно скриптом в файле name.html (флешка находится в нем же) запустить жаваскриптовую функцию show_map() с параметром "none"
<script>
function show_map(vall) {
var mapblock = document.getElementById('big_map');
mapblock.style.display=vall;
}
</script>
что я не так делаю???
Добавлено через 49 минут
нашел вариант решения:
on (press) {
getURL("javascript:history.go(0)");
}
но но к сожалению не прячет флэшку а перегружает страницу на которой флешка изначально спрятана
гуру флэша - помогите добиться задуманного
alexcon314
30.09.2009, 11:44
Код надо писать не на кнопке, а на главной временной шкале. btn - это instance name вашей кнопки на сцене.
sergeyrg
30.09.2009, 12:42
Код надо писать не на кнопке, а на главной временной шкале. btn - это instance name вашей кнопки на сцене.
спасибо большое, всё заработало
может поможете ещё с двумя вопросами?
1. при установке прозрачности wmode='transparent' в FireFox сбивается половина кнопок по координатакм
2. как вычислить координаты мыши - мне нужно отследить уход курсора с флешки и на это событие повесить функцию, сделал фон кнопкой, прописал на RollOut, но при наведение на любую другую кнопку тоже срабатывает, а мне нужно чтобы отрабатывалось только при покидании курсором пределов всей флешки
Добавлено через 5 часов 21 минуту
ничего не пойму, толи у меня софт не такой, короче - если делать так как здесь советуют по всем топикам: в главной форме описывать
bg_button.onPress = function() {
.....
}
то ничего не работает - но и дебагер не ругается,
а если в самой кнопке писать:
on (press) {
.....
}
тогда всё работает
что за бред? в настройках стоит AS2
софт - macromedia flash professional 8
что это может быть?
alexcon314
01.10.2009, 08:29
Выкладывайте исходник.
sergeyrg
01.10.2009, 11:15
у меня не получилось уменьшить так чтобы архив был меньше 300к, поэтому разбил его на 2 тома, чтоб распаковать нужно стереть .zip у обоих томов и распаковать (сжимал програмой 7zip)
в 3м архиве хтмл-ка
alexcon314
01.10.2009, 18:24
Ваш исходник работает. Все что нужно сделать, это найти на сцене кнопку kharkov и на панели свойств указать для нее Instance Name kharkov.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.