SWFLoader vs fxg

15 views
Skip to first unread message

Ricardo Araújo

unread,
Oct 21, 2011, 6:15:09 AM10/21/11
to Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org
Bom dia,

Quando utilizamos o swf loader para carregar uma animação em flash
podemos dar-lhe o w e o h a 100% e depois dizer-lhe para alinhar ao
centro e ao meio... isto é útil porque a animação enche sempre o
máximo que pode e mantém o aspect ratio... a desvantagem de utilizar e
swf loader é ser mais difícil passar comandos para dentro do swf... (é
possível mas o código fica separado) então tenho evitado utilizar.
Tenho vindo a passar tudo para fxg dentro da skin do objecto.
O problema é que perdi aquela funcionalidade de centrar o desenho
tanto no w como no h mas aproveitando o 100% da medida mínima...

Existe alguma forma simples de implementar isto?

Obrigado,
Ricardo Araújo

Ricardo Araújo

unread,
Oct 26, 2011, 6:13:17 AM10/26/11
to Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org
Alguma dica?

Bruno Perry

unread,
Oct 26, 2011, 1:21:25 PM10/26/11
to ri...@googlegroups.com
Heya!

Cria uma funcao "resize" para redimensionares os FXG's.
Existem muitas pela web:

ja agora... estas a usar FXG com animacao?? :)) como fazes isso? no Flash?

cumps,
bp


2011/10/26 Ricardo Araújo <ricardo...@gmail.com>
Alguma dica?
--
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 ri...@googlegroups.com.
Para anular a inscrição neste grupo, envie um e-mail para riapt+un...@googlegroups.com.
Para ver mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT.


Ricardo Araújo

unread,
Oct 26, 2011, 1:47:29 PM10/26/11
to ri...@googlegroups.com
tipo serve no updateDisplayList ?? já tinha experimentado ... mas depois como tinha 100% nos paths aquilo aumentava sem parar... 

a cena de usar o FXG é fixe porque depois dando IDs aos paths posso os controlar enquanto que em swf teria que criar funções internas para chamar segamente por fora! 

vou explorar melhor isso

Bruno Perry

unread,
Oct 26, 2011, 2:14:06 PM10/26/11
to ri...@googlegroups.com
hmm... consegues dar o valor de width directamente, tipo (resize( mc, n)? em vez de ser esses 100%?

2011/10/26 Ricardo Araújo <ricardo...@gmail.com>

Ricardo Araújo

unread,
Oct 26, 2011, 2:38:29 PM10/26/11
to ri...@googlegroups.com
por exemplo... tenho dois paths independentes, numa skin... esses paths têm os seus tamanhos fixos! coloco-os dentro de um grupo... e agora quero dizer que esse grupo é 100% de w e de h ... e queria que o path escalasse o máximo que pudesse mantendo o aspect ratio... e já agora centrado ao meio e ao centro

é o que acontece quando eu coloco um swfLoader dentro dum group ... digo que ele está a 100% e pronto ... depois ele adapta-se conforme o grupo que está inserido.

Ricardo Araújo

unread,
Oct 26, 2011, 7:39:27 PM10/26/11
to Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org
aqui vai um exemplo simples do que estou a falar... é só montar isto
no flex e correr.. depois usar os sliders...
o caso do swfloader adapta-se pq ta a 100% ... e no caso do path ... n
posso po-lo a 100% .. então não sei como fazer para ter o mesmo
efeito ajustável que no caso do swfloader

tks

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" height="600"
width="900">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here
-->
</fx:Declarations>

<s:layout>
<s:VerticalLayout verticalAlign="middle" horizontalAlign="center"/>
</s:layout>

<s:HSlider id="swfSlider" width="100%" minimum="1" maximum="5"
stepSize="0.1" change="{swfGroup.width = 100*swfSlider.value}"/>
<s:Group id="swfGroup" width="200" height="200">
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="blue" />
</s:fill>
</s:Rect>
<s:Group width="100%" height="100%" >
<s:SWFLoader width="100%" height="100%" source="assets/casa.swf"
verticalAlign="middle" horizontalAlign="center"/>
</s:Group>
</s:Group>

<s:Group id="fxgGroup" width="200" height="200">
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="green" />
</s:fill>
</s:Rect>
<s:Group width="100%" height="100%" >
<s:Path data="M35 53 78.5 9.5 135 66 119 66 119 53 35 53">
<s:fill>
<s:SolidColor color="#FF0000"/>
</s:fill>
</s:Path>
<s:Path data="M119 66 119 137 35 137 35 53 119 53 119 66">
<s:fill>
<s:SolidColor color="#FFFF00"/>
</s:fill>
</s:Path>
<s:Path data="M35 53 119 53 119 66 135 66 78.5 9.5 35 53M119 66 119
137 35 137 35 53">
<s:stroke>
<s:SolidColorStroke color="#151616"/>
</s:stroke>
</s:Path>
</s:Group>
</s:Group>
<s:HSlider id="fxgSlider" width="100%" minimum="1" maximum="5"
stepSize="0.1" change="{fxgGroup.width = 100*fxgSlider.value}"/>
</s:WindowedApplication>

On 26 Out, 19:38, Ricardo Araújo <ricardoades...@gmail.com> wrote:
> por exemplo... tenho dois paths independentes, numa skin... esses paths têm
> os seus tamanhos fixos! coloco-os dentro de um grupo... e agora quero dizer
> que esse grupo é 100% de w e de h ... e queria que o path escalasse
> o máximo que pudesse mantendo o aspect ratio... e já agora centrado ao meio
> e ao centro
>
> é o que acontece quando eu coloco um swfLoader dentro dum group ... digo que
> ele está a 100% e pronto ... depois ele adapta-se conforme o grupo que está
> inserido.
>
> No dia 26 de Outubro de 2011 19:14, Bruno Perry <brunope...@gmail.com>escreveu:
>
>
>
>
>
>
>
> > hmm... consegues dar o valor de width directamente, tipo (resize( mc, n)?
> > em vez de ser esses 100%?
>
> > 2011/10/26 Ricardo Araújo <ricardoades...@gmail.com>
>
> >> tipo serve no updateDisplayList ?? já tinha experimentado ... mas depois
> >> como tinha 100% nos paths aquilo aumentava sem parar...
>
> >> a cena de usar o FXG é fixe porque depois dando IDs aos paths posso os
> >> controlar enquanto que em swf teria que criar funções internas para chamar
> >> segamente por fora!
>
> >> vou explorar melhor isso
>
> >> No dia 26 de Outubro de 2011 18:21, Bruno Perry <brunope...@gmail.com>escreveu:
>
> >> Heya!
>
> >>> Cria uma funcao "resize" para redimensionares os FXG's.
> >>> Existem muitas pela web:
> >>>http://pastebin.com/DHh7dFxG
>
> >>> ja agora... estas a usar FXG com animacao?? :)) como fazes isso? no
> >>> Flash?
>
> >>> cumps,
> >>> bp
>
> >>> 2011/10/26 Ricardo Araújo <ricardoades...@gmail.com>
> >>> Comunidade Portuguesa de Rich Internet Applications -www.riapt.org" dos
> >>> Grupos do Google.
> >>> Para publicar uma mensagem neste grupo, envie um e-mail para
> >>> ri...@googlegroups.com.
> >>> Para anular a inscrição neste grupo, envie um e-mail para
> >>> riapt+un...@googlegroups.com.
> >>> Para ver mais opções, visite este grupo em
> >>>http://groups.google.com/group/riapt?hl=pt-PT.
>
> >>  --
> >> 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
> >> ri...@googlegroups.com.
> >> Para anular a inscrição neste grupo, envie um e-mail para
> >> riapt+un...@googlegroups.com.
> >> Para ver mais opções, visite este grupo em
> >>http://groups.google.com/group/riapt?hl=pt-PT.
>
> >  --
> > Recebeu esta mensagem porque está inscrito no grupo "Mailing List da
> > Comunidade Portuguesa de Rich Internet Applications -www.riapt.org" dos

Ricardo Araújo

unread,
Sep 12, 2012, 6:48:22 AM9/12/12
to ri...@googlegroups.com
Bom dia,

encontrei algumas respostas e tudo aponta para o facto do fxg não suportar 9-slice-scaling 
Para quem estiver interessado, partilho-vos aqui a melhor explicação que encontrei em duas partes:

Conclusão: criar um swf em flash com ou sem código exposto é a solução mais eficaz. (SWFLoader)

Obrigado,
Ricardo Araújo

Hugo Ferreira

unread,
Sep 12, 2012, 7:35:36 AM9/12/12
to ri...@googlegroups.com
Bom dia,

Ricardo, isso não é para mobile pois não ?

--
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 ver este debate na Web, visite https://groups.google.com/d/msg/riapt/-/OICZvgkFWiEJ.

Ricardo Araújo

unread,
Sep 12, 2012, 7:38:11 AM9/12/12
to ri...@googlegroups.com
no meu caso é para Mobile. Mas o comportamento é igual se for web ou outra qualquer AIR app! 

Hugo Ferreira

unread,
Sep 12, 2012, 7:45:48 AM9/12/12
to ri...@googlegroups.com
Não é bem assim dai ter-te efectuado essa pergunta.

Razão 1: Em mobile iOS (a não se que tenhas a certeza que nunca vais publicar neste marketplace) não podes carregar outros swf's em runtime (vai-te funcionar no emulador mas não no device).

Razão 2: A performance a afectada no mobile em geral utilizando esses métodos que anunciaste.
Qual é então a melhor alternativa ?
Criares sempre 3 versões de cada png que pretendas carregas e atribuir ao multiple source e não ao source (atenção que não podes definir o dpi nestas circunstâncias) e vais obter pixel perfect em vários tamanhos de ecrãs (requer AIR 3.3 para  teres também retina eye no iPad 3 e ainda requer um pequeno martelanço para teres o dpi correcto em runtime).

Ricardo Araújo

unread,
Sep 12, 2012, 8:08:30 AM9/12/12
to ri...@googlegroups.com
Pois, só tenho neste momento para android. Mas não sabia disso... 

o problema é que edito em runtime por exemplo as cores de componentes... conforme o utilizador interage!!! dai que o fxg era porreiro porque podia aceder ao color e alpha etc! 

Hugo Ferreira

unread,
Sep 12, 2012, 8:14:14 AM9/12/12
to ri...@googlegroups.com
É claro que tem muitas vantagens mas afecta a performance (já para não falar de problemas de portabilidade para iOS se de hoje para amanhã quiseres investir nesse sector).

Não sei concretamente o que precisas mas já cheguei a fazer uma rotina para mobile em que o utilizador escolhia uma cor (uma listbox minha mobile com a palete de cores), guardava num campo a referência rgb da cor em runtime usava isso para preencher um desenho numa lista, portanto à formas de interagir com o utilizador e cores escolhidas sem recorrer a swf.

Ricardo Araújo

unread,
Sep 12, 2012, 8:18:26 AM9/12/12
to ri...@googlegroups.com
e embed swf? também não carrega?

vou ter que mudar de estratégia! ter que usar um monte de png's para os casos possíveis!  O problema é que é raster, e como faço então essa gestão de diferentes pngs conforme o device?
não conheço esse multi source! 

Hugo Ferreira

unread,
Sep 12, 2012, 8:25:22 AM9/12/12
to ri...@googlegroups.com
Em iOS só podes utilizar um swf, portanto o que tiver embebido fará parte desse mesmo swf.

    <s:Image id="myImage">
        <s:source>
            <s:MultiDPIBitmapSource
                    source160dpi="assets/low-res/bulldog.jpg"
                    source240dpi="assets/med-res/bulldog.jpg"
                    source320dpi="assets/high-res/bulldog.jpg"/>
        </s:source>
    </s:Image>

Ricardo Araújo

unread,
Sep 12, 2012, 8:36:31 AM9/12/12
to ri...@googlegroups.com
tks! 

Ricardo Araújo

unread,
Sep 17, 2012, 8:08:18 AM9/17/12
to ri...@googlegroups.com
Bom dia,

Segui a dica do multi dpi bitmapSource mas devo dizer que estou um pouco desiludido com a perca de performance que originou. Antes tinha os fxg e através do id mudava as cores em run time, agora tenho diferentes pngs e noto que perdi performance. 

neste momento estou tentado a mudar tudo novamente e usar o swf loader com o swf embebed e chamar funções do swf a partir do flex! o fxg era ideal se suportasse o 9-slice-scaling
Reply all
Reply to author
Forward
0 new messages