2013-03-08 3 views
2

Я это MXML, что я хотел бы выразить, как: ActionScriptActionBar в чистом Actionscript

<s:titleContent> 
    <s:Label text="Title" fontWeight="bold" fontSize="20" height="20" verticalAlign="top" /> 
    <s:Label text=".com" fontSize="12" height="17" verticalAlign="bottom" /> 
</s:titleContent> 

Я попытался это, но безуспешно:

var chrome:ActionBar = new ActionBar(); 
chromeTitle.text = "Title"; 

chrome.setStyle("fontSize", 20); 
chrome.title = "Title"; 
chrome.title = chromeTitle; 

Как я могу добавить CSS стиль текста к панели действий (несколько ярлыков)? Также можно сделать другие представления наследовать эту панель действий, чтобы мне не приходилось дублировать код (у всех соперников были бы общие элементы)?

ответ

4

Синтаксис:

<s:titleContent> 
... 
</s:titleContent> 

Означает, что вы устанавливаете свойство titleContent на компоненте, что пребывает под. Вы можете определить разницу между свойствами и новыми экземплярами класса из этого случая. Имена классов всегда начинаются с прописных букв; тогда как имена свойств начинаются с строчной буквы. Вы не указали, какой класс это свойство; но поскольку вы имеете дело с мобильными устройствами, я предполагаю, что это view. Свойство titleContent представляет собой массив.

So; вы должны это сделать:

// create the first label and set properties 
var tempLabel :Label = new Label(); 
tempLabel.text = 'Title'; 
tempLabel.setStyle('fontWeight','bold'); 
tempLabel.setStyle('fontSize',20); 
tempLabel.height = 20; 
tempLabel.setStyle('verticalAlign','top'); 

// add label to titleContent array 
this.titleContent.push(tempLabel); 

// create next label 
tempLabel :Label = new Label(); 
tempLabel.text = '.com'; 
tempLabel.setStyle('fontSize',12); 
tempLabel.height = 17; 
tempLabel.setStyle('verticalAlign','bottom'); 

// add second label to titleContent array 
this.titleContent.push(tempLabel); 

Это правильный способ преобразования кода MXML, который вы предоставили в ActionScript. Поскольку ваш собственный код пытался создать новый ActionBar(), я не уверен, что вы, если это действительно то, что вы хотели.

+0

Первая часть очень информативна, спасибо, но код дает мне ошибку: TypeError: Error # 1009: Не удается получить доступ к свойству или методу ссылки на нулевой объект. at views :: HomeView/created() [C: \ Users \ Dominic \ Adobe Flash Builder 4.6 \ Main App Mobile \ src \ views \ HomeView.mxml: 44] | Строка 44: this.titleContent.push (tempLabel); и да tempLabel правильно определен в моем коде. – DominicM

+2

@DominicM Поскольку titleContent изначально имеет значение null, вам просто нужно назначить ему пустой массив ... так что 'titleContent = [];' перед тем, как сделать код выше. –

+0

@SunilD Вот и все! Благодаря! – DominicM