Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.08.2012, 18:24
SiFF вне форума Посмотреть профиль Отправить личное сообщение для SiFF Найти все сообщения от SiFF
  № 1  
Ответить с цитированием
SiFF

Регистрация: Apr 2007
Сообщений: 57
Question Externainterface возвращает null

Привет, уважаемые.
Когда-то писал "резиновую" флешку, все работало. Возникла подобная необходимость, но столкнулся с проблемой, код:
Код AS1/AS2:
import flash.external.*;
import flash.display.*;
 
_root.scaleMode = "noScale";
_root.MAIN.onEnterFrame=function() {
        w=ExternalInterface.call('function(){return document.body.clientWidth}');
	h=ExternalInterface.call('function(){return document.body.clientHeight}');
	inf.text='wid1='+w;
}
Передает в текстовое поле inf 'wid1=null'
Браузер-хром, ослик.
Помогите разобраться, головой прямо бьюсь
P.S.: Stage.width не предлагать, пробовал, не работает.

Старый 16.08.2012, 19:21
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ну отойдите от флешки, проверьте, как работает document.body.clientWidth в JS, alert-ом например с кнопочки. И на специализированном форуме можно поспрашивать, если то же самое будет.
Сейчас нет возможности проверить просто.
__________________
Идите первым!

Старый 16.08.2012, 19:37
SiFF вне форума Посмотреть профиль Отправить личное сообщение для SiFF Найти все сообщения от SiFF
  № 3  
Ответить с цитированием
SiFF

Регистрация: Apr 2007
Сообщений: 57
Цитата:
Сообщение от mooncar Посмотреть сообщение
Ну отойдите от флешки, проверьте, как работает document.body.clientWidth в JS, alert-ом например с кнопочки. И на специализированном форуме можно поспрашивать, если то же самое будет.
Сейчас нет возможности проверить просто.
Вся проблема в том что код был взят из старого, работающего проекта. А сейчас ни новый, ни старый не работают. Я с ума схожу.

Старый 16.08.2012, 19:54
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Браузеры развиваются, набор свойств и поведение DOM-объектов тоже меняется. Гуглите, на JS-форумах обсуждаются такие траблы.
Ну и с кнопочки проверьте все же, на всякий случай.

К слову, лично я никогда JS не использовал для изготовления резиновых флешек. Stage.width и Stage.height + правильная публикация флешки + правильная верстка. JavaScript тут явно лишний элемент-посредник. Да к тому же избыточный onEnterFrame, когда есть событие Stage.onResize.
__________________
Идите первым!

Старый 16.08.2012, 21:27
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 5  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
mooncar вам все верно описал.
Рискну предположить, что у вас что-то в публикации не то, раз одновременно слетело все, связанное с размерами - stage.stageWidth и document.body.clientWidth , потому что оба варианта 100% рабочие.
для js document.body.clientWidth - правильный, не устаревший.

Добавлено через 7 минут
зы
Код:
ExternalInterface.available
Добавлено через 23 минуты
А нет, стоп. clientWidth-реальный размер области данных, т.е. видимый контент, а не окно браузера, кстати. Но все равно не null должно быть.
document.documentElement.clientWidth правильнее


Последний раз редактировалось Krusty; 16.08.2012 в 22:04.
Старый 25.08.2012, 23:32
SiFF вне форума Посмотреть профиль Отправить личное сообщение для SiFF Найти все сообщения от SiFF
  № 6  
Ответить с цитированием
SiFF

Регистрация: Apr 2007
Сообщений: 57
Цитата:
Сообщение от Krusty Посмотреть сообщение
mooncar вам все верно описал.
Добавлено через 7 минут
зы
Код:
ExternalInterface.available
Пробовал, выдает "правду"
Тут я заметил одно дело: извне, отдельно вставленный в html-страничку, скрипт работает на ура, а при вызове из Flash он не происходит, также, для верности, запихнул элементарную функцию и попробовал вызвать – результат нулевой. Возможно ли, что требуются какие-то особые параметры публикации или еще что-либо?

Старый 25.08.2012, 23:46
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 7  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
"результат нулевой" - звучит загадочно.
Что за функция, что за результат?
NULL, 0, ExternalInterface.call вообще не работает, то есть функция вообще не вызывается?

Кстати, если не используете SWFObject для публикации, сделайте это.
И укажите там параметром allowScriptAccess: "always".
__________________
Идите первым!

Старый 25.08.2012, 23:49
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 8  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
null или секьюрити еррор?
allowScriptAccess за это отвечает, показывайте публикацию.

Добавлено через 2 минуты
зы. Что тема делает в разделе as1-2?

Старый 25.08.2012, 23:55
SiFF вне форума Посмотреть профиль Отправить личное сообщение для SiFF Найти все сообщения от SiFF
  № 9  
Ответить с цитированием
SiFF

Регистрация: Apr 2007
Сообщений: 57
получается не работает(не вызывается)...возвращает null(запрос ширины)
функция:
Код:
function my_function() {
alert("This function is called from ActionScript!");
}
Вызов:
Код:
ExternalInterface.call("my_function()");

Старый 25.08.2012, 23:58
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 10  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Да все просто
Код:
ExternalInterface.call("my_function");
скобки не нужны, разумеется.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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