Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.05.2009, 22:01
Интересующийся
Отправить личное сообщение для DaeMooN Посмотреть профиль Найти все сообщения от DaeMooN
 
Регистрация: 04.05.2009
Сообщений: 12

ActionScript и JavaScript
Возникла проблема.
Я делал мост с AS3 в JS.
1. Вставляю в html swf.
2. Нахожу по id нужный объект
3. Пишу функцию взятую с AS3. Например, obj.setValue(val); - и она не работает!
4. Пишу туже функцию в событии например при нажатии на кнопку, работает отлично.

как сделать так что бы можно было пользоватся функциями сразу после создания объекта???

если коротко, то типа такого кода:

obj = getSWF("objectSWF_ID");
obj.setValue(100); - полсе этой строки код не работает!


если писать так, то работает:

obj = getSWF("objectSWF_ID");
btn.onclick = function(){
     obj.setValue(100); 
}
Ответить с цитированием
  #2 (permalink)  
Старый 13.05.2009, 22:43
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

наверно, потому что на момент инициализации obj флешка еще не прогрузилась, а значит и методов никаких еще нет.
ориентируйтесь на событие window.onload либо аналогичное для флешки.
с флешками я не работал, но полагаю, что должно сработать такое:
obj = getSWF("objectSWF_ID");
obj.onload=function(){
obj.setValue(100);
}
Ответить с цитированием
  #3 (permalink)  
Старый 13.05.2009, 22:52
Интересующийся
Отправить личное сообщение для DaeMooN Посмотреть профиль Найти все сообщения от DaeMooN
 
Регистрация: 04.05.2009
Сообщений: 12

не выходит...единственный плюс в том что код который расположен ниже теперь работает...но функция сама всеравно не работает
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2009, 01:41
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

м?
Сообщение от DaeMooN
единственный плюс в том что код который расположен ниже теперь работает...но функция сама всеравно не работае
как это ?код работает, а функция не работает?
вы внримательно читали мое сообщение, или только код себе скопировали, не вникая?
Ответить с цитированием
  #5 (permalink)  
Старый 14.05.2009, 01:50
Интересующийся
Отправить личное сообщение для DaeMooN Посмотреть профиль Найти все сообщения от DaeMooN
 
Регистрация: 04.05.2009
Сообщений: 12

тогда код расположенный после импортированной функции неработал вообще

если эту функцию впихнуть в событие onload то она также невыолпняется, но код идущий после события теперь работает

у меня там создается кнопка...в первом случае ее нет, в другом - она есть и работает на ней onclick

кину код весь...
мне кажется что я чета с событиями нето делаю

<script language="javascript">

function DSWFLib(lib_file,style){
	
style.width = style.width||style.w||100;
style.height = style.height||style.h||100;
style.x = style.left||style.x||5;
style.y = style.top||style.y||5;

var frm = DFrame(style);
frm.setDrag({method:"drag"});



var swf = '<object '+
   'id="SWFLIBNAME'+frm.id+'" width='+style.width+' height='+style.height+'   '+     
   'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"   '+
'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'+
   '<param name="movie" value="'+lib_file+'" />'+
   '<param name="allowScriptAccess" value="sameDomain" />'+
  ' <param name="wmode" value="transparent">'+
   '<embed'+
      ' src="'+lib_file+'"'+ 
	  ' wmode="transparent"'+
      ' name="SWFLIBNAME'+frm.id+'" align="middle"'+
       'play="true" loop="false" quality="high" allowScriptAccess="sameDomain"'+
       'width='+style.width+' height='+style.height+' scale="exactfit" '+
       'type="application/x-shockwave-flash"'+
       'pluginspage="http://www.macromedia.com/go/getflashplayer">'+
   '</embed>'+
'</object>';
frm.innerHTML = swf;

frm.getSWF = function(){
	var M$ =  navigator.appName.indexOf("Microsoft")!=-1;
	return (M$ ? window : document)["SWFLIBNAME"+frm.id];
}
frm.object = frm.getSWF();

frm.onProgress = DGUI_EMPTY_FUNCTIONS;
frm.onCompleted = DGUI_EMPTY_FUNCTIONS;

return frm;

}


var swf = DSWFLib("lib/DSound.swf"+DCacheOff(),{x:10,y:10,w:200,h:200});
//swf.object.setContext(400,true); // если эту строку разкоментить, то они и код после нее не работает

var btn1=DHSButton({mainStyle:{x:250,y:100,width:150,height:40},
    firstStyle:{backgroundColor:"#bb5555"},
    secondStyle:{backgroundColor:"#55bb55", display:"none"},
    textStyle:{color:"#9999ff",fontSize:20},
	text:"Загрузить"
});
var btn2=DHSButton({mainStyle:{x:250,y:140,width:150,height:40},
    firstStyle:{backgroundColor:"#bb5555"},
    secondStyle:{backgroundColor:"#55bb55", display:"none"},
    textStyle:{color:"#9999ff",fontSize:20},
	text:"Играть"
});



//////////////////ФУНКЦИИ ПОЛУЧАЕМЫЕ ИЗ ФЛЭША////////////////
btn1.onclick = function(){swf.object.load("music/AkonClapAgain.mp3",false);	} // работа.т отлично
btn2.onclick = function(){swf.object.play("music/AkonClapAgain.mp3",false);	} //работают отлично
////////////////////////////////////////////////////////////




var win_consol=DConsole({x:500,y:100});

var txt = DText("");

swf.onload = function(){
	txt.setText(swf.object);  //функция не работает, но код ниже работает
}


var timer=new DTimer(200);
timer.onTimer=function(){
	win_consol.clin();
	
	win_consol.addLine("Статус: "+swf.object.getStatus());                 //работают отлично
	win_consol.addLine("Загрузка: "+swf.object.getLoaded());              //работают отлично
	win_consol.addLine("Резервный буфер: "+ swf.object.getContext()); //работают отлично
	win_consol.addLine("Ошибки: "+swf.object.getError());                     //работают отлично
}
timer.start();

</script>

</html>

Последний раз редактировалось DaeMooN, 14.05.2009 в 01:56.
Ответить с цитированием
  #6 (permalink)  
Старый 14.05.2009, 02:01
Интересующийся
Отправить личное сообщение для DaeMooN Посмотреть профиль Найти все сообщения от DaeMooN
 
Регистрация: 04.05.2009
Сообщений: 12

Опера выкидывают такую ошибку

message: Statement on line 99: Type mismatch (usually non-object value supplied where object required)
Ответить с цитированием
  #7 (permalink)  
Старый 14.05.2009, 02:28
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от DaeMooN
кину код весь...
если уж выкладываете весь код, то выкладывайте ВЕСЬ код, а не образайте его по краям.
или по вашему мнению. код без начального body - является полным?
Ответить с цитированием
  #8 (permalink)  
Старый 14.05.2009, 10:22
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

1) а флешка в документ вставляется?
2) у тэга object нету события onload (по стандарту), и похоже не только по стандарту - лучше что-то делать по window.onload
Ответить с цитированием
  #9 (permalink)  
Старый 15.05.2009, 12:48
Интересующийся
Отправить личное сообщение для DaeMooN Посмотреть профиль Найти все сообщения от DaeMooN
 
Регистрация: 04.05.2009
Сообщений: 12

Сообщение от Gvozd Посмотреть сообщение
если уж выкладываете весь код, то выкладывайте ВЕСЬ код, а не образайте его по краям.
или по вашему мнению. код без начального body - является полным?
Ну в боди прописан только js файл...он информации ваи никакой не даст.
Код весь, все функции имеют понятные имена, например не трудно догодатся что DHSButton создает кнопку, или DCоnsole создает доп. консоль для вывода промежуточных результатов.

Насчет window.onload попробую..времени небыло пока.
Ответить с цитированием
  #10 (permalink)  
Старый 15.05.2009, 13:24
Интересующийся
Отправить личное сообщение для DaeMooN Посмотреть профиль Найти все сообщения от DaeMooN
 
Регистрация: 04.05.2009
Сообщений: 12

по window.onload странно как-то

в IE пашет норм
window.onload = function(){
swf.obj.setContext(3000);
}

а в Опере только с setTimeout("swf.obj.setContext(3000);",100)

интересно еще что при onload рабоает при значении 100, а если писать сразу вкоде, то толко после 300

хотя по теории ка и в IE должна работать без setTimeout


В IE даже работает window.setTimeout("sound.setContext(3000);",0); с нулем всмысле...типа как я понял ставит в очередь на выполнение.....но Опера упертая...и никак



А можно как-нибудь сделать чтобы страница ваще не работала пока все не загрузится и не создадится? window.onload не совсем выход
Пытался разбить на две функции
1. Загружает флэш
2. Находит object или embed

но суть от этого не поменялась...

Последний раз редактировалось DaeMooN, 15.05.2009 в 14:05.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
Собрался силами, собираюсь освоить Javascript walker Общие вопросы Javascript 14 20.03.2012 16:17
Программист на JavaScript (удалённо) Vadym Работа 1 28.01.2009 13:57
Обращение к именам, полученным через Javascript baal1988 Events/DOM/Window 1 31.08.2008 15:08
Нужен Старший разработчик JavaScript Yandex Работа 17 19.08.2008 16:43