Сначала я бы предложил добавить оператор if
, который проверяет, является ли свойство stage объекта Main
нулевым, перед выполнением остальной части кода. Если он нулевой (обычно это не так), вы можете добавить прослушиватель событий, который прослушивает ваш Main
объект, который будет добавлен на сцену:
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
Затем вы получаете ссылку на свое текстовое поле и сохраняете ее в локальном TextField
объекте, вызывая метод getChildByName()
свойства stage
свойства и анализируя имя вашего текстового поля (я предполагаю, что оно "thisLogo"?) , Затем вы конвертируете объект DisplayObject
, возвращенный методом getChildByName()
, в TextField
.
var thisLogo:TextField = TextField(stage.getChildByName("thisLogo"));
Теперь попробуйте
thisLogo.setTextFormat(myformat);
В целом это должно выглядеть так:
package
{
import flash.display.Sprite;
import flash.text.TextField;
public class Main extends Sprite
{
private var xmlURL:String = "xml/main.xml";
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}// end function
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var myflashvars:Object = new Object();
if (!this.loaderInfo.parameters.language)
{
myflashvars = { language: "" };
}
else
{
myflashvars = this.loaderInfo.parameters;
}// end else
var langvar:String = myflashvars['language'];
xmlURL = 'xml/main' + langvar + '.xml';
var myformat:TextFormat = new TextFormat();
myformat.font = "Arial";
var thisLogo:TextField = TextField(stage.getChildByName("thisLogo"));
thisLogo.embedFonts = true;
thisLogo.setTextFormat(myformat);
}// end function
}// end class
}// end package