PDA

Просмотр полной версии : Вопрос по FlashVars


forward
25.02.2012, 19:53
Доброго времени суток!

Пишу вот прием flashvars и вывожу в текстовое поле:

package
{
import flash.display.*;
import flash.events.Event;
//
public class Main extends MovieClip
{
public function Main():void
{
var flashVars:Object = stage.loaderInfo.parameters;
var uid:String = flashVars.user_id ? flashVars.user_id : "mytestvalue";
p.pole_uid.text = uid;
}
}
}


Ругается пишет : TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at Main()

Если stage поменять на this то не ругается, но не работает в HTML, кстати вставляю вот так :

<object width="760" height="40" align="middle" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param value="sameDomain" name="allowScriptAccess">
<param value="chat_panel.swf" name="movie">
<param value="opaque" name="wmode">
<param value="high" name="quality">
<param value="true" name="allowFullScreen">
<param value="noscale" name="scale">
<param value="user_id=50478766" name="flashvars">
<embed width="760" height="40" pluginspage="https://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptaccess="sameDomain" quality="high" wmode="opaque" allowfullscreen="true" flashvars="user_id=50478766" src="chat_panel.swf" scale="noscale">
</object>

Inet_PC
25.02.2012, 20:04
var flashVars:Object = this.loaderInfo.parameters; Ибо у стейдж нет флешварс. У стейдж есть флешварс и они совпадают с флешварсами главной флешки. Соответственной будет работать не всегда правильно, лучше с this. Получается флешка не получает флешварсы. Воспользуйтесь как нить готовым эмбедером. Например swfobject. И они вроде должны вот так быть переданы:
<param name="" value="" /> Но я не уверен. Используйте готовый компонент, а уж если сильно хочется самому, то в нем можно посмотреть как сделано.

MikroAcse
25.02.2012, 20:06
Надо подождать, пока stage станет доступным:
package
{
import flash.display.*;
import flash.events.Event;
//
public class Main extends MovieClip
{
public function Main():void
{
if(stage){
init();
} else {
addEventListener(Event.ADDED_TO_STAGE,this.init);
}
}
public function init(e:Event):void {
var flashVars:Object = stage.loaderInfo.parameters;
var uid:String = flashVars.user_id ? flashVars.user_id : "mytestvalue";
p.pole_uid.text = uid;
}
}
}

MikroAcse
25.02.2012, 20:06
InetPC,
Если stage поменять на this то не ругается, но не работает в HTML

forward
26.02.2012, 20:32
InetPC,

Да спасибо работает только вот в этом моменте нужно функции init() передать null ...


if(stage){
init();
} else {

MikroAcse
26.02.2012, 20:39
А ну да :)
Забыл совсем...