1- Cria uma propriedade que vais usar como holder do state:
private var _currentViewState:String;2- Cria um método ou setter para mudares o view state que faz invalidate ao Skin state:
[Inject("appStateModel.base", bind="true")]
public function set currentViewState(value:String):void
{
if (_currentViewState != value)
{
_currentViewState = value;
invalidateSkinState();
}
}
3- Faz override ao getCurrentSkinState(), um método protegido que o Flex
usa para decidir qual é que é o estado actual da Skin:
override protected function getCurrentSkinState():String
{
return _currentViewState;
}
Se não quiseres, não tens que usar o getter (passo 2), ou a propriedade
(passo 1) - basta fazeres o invalidateSkinState e depois no
getCurrentSkinState fazes a tua lógica para decidir qual é o estado da
Skin. Porém, nós preferimos fazer assim porque nós usamos um género de
máquina de estados ao nível da aplicacão, à qual todas as Views da
aplicacão estão "bindadas" (vê o Inject - isto é Swiz). Desta forma,
quando queremos saltar do ecrã A para o C, mudamos o "appStateModel" que
irá provocar com que as views invalidem o seu skin state alterando assim
os estados (e criando a percepcão de navegacão).
linkedIn <http://pt.linkedin.com/in/jsaleiro> João Saleiro Chief Technology Officer Tel: 00351 916 077 097 Email: [email protected] <mailto:[email protected]> Skype: joao.saleiro <callto://joao.saleiro>Webfuel Solutions <http://www.webfuel.pt> www.webfuel.pt <http://www.webfuel.pt>
Lisbon, Portugal On 17-06-2011 12:02, Ricardo Araújo wrote:
mais uma pergunta rápida, na skin tenho varios states, e quero os controlad apartir do HostComponent... tentei através do currentState = "novoState"; mas rebenta!!! On Jun 16, 6:23 pm, João Saleiro<[email protected]> wrote:Ricardo (e restantes), infelizmente (e j� me "queixei" disso � Adobe) o includeIn aparentemente redesenha as views sempre que se entra num estado. Isto �, da nossa experi�ncia quando o utilizador entra na view a primeira vez o utilizador sente uns millisegundos de tempo de espera. Quando entra a segunda vez, volta a sentir esses millisegundos - que n�o deviam acontecer. A quest�o � que aparentemente a view j� est� instanciada, mas o SDK volta a executar o c�digo da layouting (?). Fizemos testes e mudamos para o visible e includeInLayout em vez do includeIn. O resultado � que a aplicac�o demora mais a arrancar (a instanciac�o das views � passada para o arranque), mas a partir da� a experi�ncia com o utilizador � substancialmente superior, com reac��es imediatas na navega��o. Isto s� se nota em views muito complexas, sobretudo quando se utilizam Forms, Datagrid e/ou muitos item renderers em liquid layout. Curiosamente, tenho que voltar a testar o includeIn para ver se na �ltima actualizac�o do SDK j� houveram melhorias neste t�pico. linkedIn<http://pt.linkedin.com/in/jsaleiro> Jo�o Saleiro Chief Technology Officer Tel: 00351 916 077 097 Email: [email protected]<mailto:[email protected]> Skype: joao.saleiro<callto://joao.saleiro> Webfuel Solutions<http://www.webfuel.pt> www.webfuel.pt <http://www.webfuel.pt> Lisbon, Portugal On 16-06-2011 18:05, Ricardo Ara�jo wrote:(nota: n�s usamos o includeInLayout e o visible neste caso em vez de States por quest�es de performance. Mas isso � outra discuss�o...). btw, qual a diferen�a ent�o entre usar o includeInLayout+visible ou o includeIn? usas na mesma os states... e quando o componente � criado no includeIn depois continua em memoria!!! ... On Jun 16, 5:38 pm, Ricardo Ara�jo<[email protected]> wrote:J� percebi ... ... desculpa J.Fernandes, n�o estava a entender.... acaba por ser o mesmo m�todo que o J.Salgueiro me indicou... Obrigado ... fico-vos eternamente agradecido ;) On Jun 16, 5:27 pm, Ricardo Ara�jo<[email protected]> wrote:JF, j� me tinha passado pela cabe�a... mas depois a minha class m�e onde estaria o principal c�digo estaria dentro de um componente que estende de SkinnableComponent! Seria isto correcto!? penso que isso traz-me outro problema... se quiser colocar as atribui��es de skins num css para que possa mudar facilmente o c�digo que estava dentro da skinnablecomponent ter� que ser duplicado para outros grupos de skins! On Jun 16, 5:19 pm, Jo�o Fernandes <[email protected]> wrote:Podes fazer exactamente isso, criar um custom component onde defines novos skinParts e depois � s� associares uma skin ao mesmo. Se quizeres para o mesmo custom component v�rios aspectos s� ter�s de definir uma nova skin e meteres as skinParts onde bem entenderes. Jo�o Fernandes 2011/6/16 Ricardo Ara�jo<[email protected]>Ajudou, mas ainda tenho umas d�vidas.... por exemplo: crio um projecto novo, e na WindowedApplication coloco-lhe dois bot�es normais<s:Button /> ... depois como � que eu na skin que aplicar ao WindowedApplication posso definir por exemplo posi��es para cada bot�o? (se fosse um SkinnableComponent diria que aquele bot�o era uma SkinPart) On Jun 16, 4:57 pm, Jo�o Saleiro<[email protected]> wrote:Ricardo, n�o percebi bem a tua quest�o. N�s aqui resolvemos a quest�o do multi-skinning com facilidade, usando stylesheets CSS. Cada theme tem o seu pr�prio CSS que define o aspecto gr�fico de*todose quaisquer* componentes visuais. A t�tulo de exemplo: s|Application { skin-class: ClassReference("com.airgile.crm.skins.petro.views.core.ApplicationSkin"); } view3|NotificationBox { skin-class:ClassReference("pt.webfuel.core.ui.notification.view.skin.NotificationBoxSk in");} core|AirgileView { skin-class: ClassReference("com.airgile.crm.skins.petro.views.core.AirgileViewSkin"); } s|TextArea { skin-class:ClassReference("com.airgile.skins.petro.components.textarea.TextAreaSkin");focus-alpha: 0; } Quando queres mudar o theme, simplesmente trocas o CSS (usando ou n�o Runtime CSS). Espero que ajude. linkedIn<http://pt.linkedin.com/in/jsaleiro> Jo�o Saleiro Chief Technology Officer Tel: 00351 916 077 097 Email: [email protected]<mailto:[email protected]> Skype: joao.saleiro<callto://joao.saleiro> Webfuel Solutions<http://www.webfuel.pt> www.webfuel.pt <http://www.webfuel.pt> Lisbon, Portugal On 16-06-2011 16:42, Ricardo Ara�jo wrote:Boa tarde malta, Estou aqui a planear uma aplica��o em que pretendo personaliza-la a n�vel do design para cada cliente. Aplico uma skin � WindowedApplication e depois queria na pr�priaskinaplicar skins doutros componentes que est�o dentro da WindowedApplication... como fa�o? provavelmente n�o se faz assim? :) ... � que depois teria que dizer que um componente declarado em mxml seria uma SkinPart... Existe por exemplo outro caso de um ecr� em que s�o constru�dos objectos dinamicamente no componente que estende do skinnablecomponent. Como fa�o para criar skin parts dinamicamente? e depois na skin como lido com esses objectos que foram criados?-- Recebeu esta mensagem porque est� inscrito no grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications -www.riapt.org" dos Grupos do Google. Para publicar uma mensagem neste grupo, envie um e-mail para [email protected]. Para anular a inscri��o neste grupo, envie um e-mail para [email protected]. Para ver mais op��es, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT.-- Jo�o Fernandes
-- Recebeu esta mensagem porque está inscrito no grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos Grupos do Google. Para publicar uma mensagem neste grupo, envie um e-mail para [email protected]. Para anular a inscrição neste grupo, envie um e-mail para [email protected]. Para ver mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT.
<<inline: LinkedIn.gif>>
<<inline: Webfuel.gif>>
