[AS2] Carregar html em caixa de texto dinâmica - ActionScript - Portugal-a-Programar
[AS2] Carregar html em caixa de texto dinâmica
By Filipe_O, May 5, 2010 in ActionScript
Gostaria de perguntar como posso carregar um elemento html, dentro de uma caixa de texto dinâmica.
Trabalho com AS 2.
basta definires a tua caixa de texto dinamica como html, por exemplo:
this.createTextField("tf",1,0,0,500,200);
tf.htmlText = "<b> bold stuff </b>, <i> italic stuff </i>, etc...";
Já estou mais perto!
O meu objectivo era carregar uma pagina shtml (digo para teres a noção do que pretendo) dentro da caixa de texto dinâmica.
Ora, quando a caixa aparecer, lá dentro iram aparecer as noticias....
Como faço para que o conteúdo simplesmente apareça, e não apenas ao:
clicar na caixa (on realese);
Passar com o rato (on RollOver)
Passar com o rato, fora (on RollOut), etc etc...
Ou seja...não haver uma condição especifica para aparecer.
Como é que carrego a pagina?
Fiquem bem e muito obrigado
pelo que percebi, pretendes colocar uma pagina inteira shtml numa caixa de texo dinamica.
nao tenho bem a certeza, mas acho que o suporte que a caixa de textp suporta será so texto html, nao sei se da para colocares o codigo total de uma pagina shtml. pelo menos em as2
mas se o que tu pretendes é uma cena básica como o exemplo que mostraste (so links) podes perfeitamente fazer isso no flash.
Sim, o que pretendo é apenas mostrar os links que aparecem na pagina.
estive a ver o teu problema e fiz um "pseudo" componente que faz aquilo que pretendes. A unica maneira que eu consegui para ter acesso aos links que estavam na pagina de html, foi criar um ficheiro de xml (links.xml), pois nao faco a minima ideia de como "extrair" essa informação da pagina de html. Se quiseres adicionar ou retirar uma notícia basta acrescentares ou removeres os "nodes" de xml.
Se por acaso essa pagina tiver a receber um "feed" de noticias por xml, diz-me que eu mudo o codigo de modo a receber esse "feed".
basta fazeres copy/paste do MovieClip "linkMenu" para o teu .fla e posiciona-lo onde quiseres. tem em atencao que o ficheiro de xml "links.xml" tem de estar sempre na mesma pasta do(s) teu(s) swf, pois é apartir desse ficheiro que o componente se constroi.
o código está totalmente comentado por isso nao deve ser muito dificol perceberes o que faz.
http://sites.google.com/site/brunoperry/linkMenu.zip?attredirects=0&d=11
Muito obrigado pelo teu trabalho (aquela programação toda....), mas como deves imaginar, não estaria certo fazer copy/paste e não tentar entender.
O documento XML não actualiza os links de acordo com a pagina html, correcto? (neste casso seria necessário, pois noticias novas saem diariamente)
Na barra á direita deste site ("Ultimas da agencia ecclesia"), está como queria o espaço das noticias.
Como poderia fazer para que as notiçias (programação que deste) apareçesse, sem nenhum tipo de condição/comportamento (on (realese); on (rollOver); on (rollOut); etc etc)?
De facto, as respostas as minhas pesquisas têm sido muito mais em relação a importar documentos XML do que html, mas dados estes problemas achas que me devo virar para html, ou o que acabei de referir, tem solução (pratica)?
Fica bem e obrigado por toda a ajuda
O documento XML nao se actualiza com a pagina HTML... tens ideia de como é que a pagina html recebe as noticias? se tb for por xml, bastaria por a carregar esse XML.
o link que me mandaste vai dar a uma pagina com o googlemap... nao sei se é isso que queres... se puderes envia de novo para se poder ver bem o que pretendes
queres dizer que em vez de aparecerem links para as noticias, queres que aparecam logo as noticias?
Isso pode-se fazer, mas haverá sempre o problema do xml.... se conseguires arranjar um "feed" de xml com essas noticas, podes por esses conteudos a aparecer, caso contrario, teras de ser sempre tu a actualizar o xml... (o que nao da jeito nenhum..)
infelizmente não percebo muito de html para te ajudar na decisao de continuares em flash ou tentares ir por html... mas pelo que percebi, estaras sempre dependente de um " feed" de noticas (seja por xml ou por outra coisa qualquer)
Não, não sei.A ideia era não ter nenhuma pagina a servir de intermédio, mas sim importar directamente, percebes?
Epah desculpa lá...Vê aqui...Na barra á direita está uma caixa pequena com o titulo "Ultimas da agencia ecclesia"...O que gostava de fazer era tipo isso (dai querer que ocupasse uma caixa de texto,e não o palco todo)
Não...Só não podia era actualizar o XML porque as saem noticias novas no html diariamente.
Por flash eu faço sempre....a indecisão é entre tentar importar directamente do html, ou usar um XML como ponto intermédio (algo que parece ser mais fácil).
Um é mais facil, mas o outro é mais directo
consegui ver o link e ja percebi +- o que pretendes.
O flash nao importa directamente uma pagina HTML, mas pode-se dar sempre a volta ao assunto
básicamente é possivel "hackar" uma pagina html para flash para se fazer um simples menu como o que mostraste.
Seria bem mais fácil conseguir isso havendo um XML, mas visto que isso não é possivel, pode-se olhar para o problema de uma outra perspectiva...
Mas antes de aprofundar o assunto preciso que me esclareças uma dúvida:
Nao consigo perceber quando te referes:
Pelo exemplo que me deste, tem de haver sempre comportamentos onRelease(para entrares nos links), rollOver(para parar os links) e rollOut(para os links continuarem a "andar")... Ou a tua ideia será só apenas mostrar os titulos das noticias sem qualquer tipo de links?
se não era isto que querias dizer, podes ser um pouco mais especifico em relação a isso?
Se colar um "iframe" no Flash, resulta?Podia ser outra opção.
Esquece isso (tens razão...tem sempre de haver comportamentos).
Então qual seria a outra perspectiva do problema?
a ideia seria então forçar o flash a fazer load do html como se fosse um xml, tipo:
var fakeXML:XML = new XML();
fakeXML.onData = function( htmlStr:String ):Void
if( htmlStr == undefined )
this.onLoad( false );
this.onLoad( true, htmlStr );
é óbvio que não iria encontrar nenhum documento de xml válido, mas podemos ficar com a string... (htmlStr).
Na função onLoad:
fakeXML.onLoad = function( success:Boolean, htmlStr:String ):Void
// erro no ficheiro xml
var hackedHTML:String = htmlStr;
trace( hackedHTML ) //dá-nos a pagina html mas em tipo String
fakeXML.load( "http://www.agencia.ecclesia.pt/ultimas.shtml" );
Apartir daqui, faz-se um parse da string hackedHTML para se sacar os links e os titulos das noticias (dá algum trabalho), depois seria so construir o "menu" aproveitando o codigo que ja existe.
assim que tiver tempo, elaboro um pouco a ideia. Mas através deste modo podes ir tentando fazer algo.
se tiveres dúvidas avisa
é mais fácil fazeres em php e dps exportares em xml para flash do que ler propriamente o html todo
tens aqui um html parser em php http://simplehtmldom.sourceforge.net/
e dps com os dados crias um XML em php, dps o flash lê esse xml e fazes o que quiseres com a informação
fiz um exemplo um bocado à pressa:
http://sites.google.com/site/brunoperry/linkMenu2.7z?attredirects=0&d=1
julgo que esteja 100% funcional (nao testei a fundo) mas básicamente faz o pretendido.
podes tambem usar as constantes que estao no codigo para mudar as propriedades (tamanho, radius dos cantos, cor, etc..) do pseudo compoennte
o uso de PHP é uma alternativa bastante viável, mas por ai nao te posso ajudar, pois nao estou muito por dentro do assunto...
Mas visto que em flash é possivel (talvez usnado um pouco mais de codigo), não ficas dependende de scripts "server-side"... e até dá um certo "gozo" fazer tudo em actionScript.
como fiz o codigo um bocado á pressa, alguns comentarios podem nao ser muito descritivos, mas se tiveres dúvidas diz.
Obrigado pelas ajudas!Os comentários estão perfeitamente perceptiveis, e são essenciais pois não percebo de Actionscript (nem quero que programação seja a minha área...porém, á coisas úteis a saber 🤔)
//carrega o html para uma string
fakeXML.load("http://www.agencia.ecclesia.pt/ultimas.shtml");
Ou seja, carrega as noticias directamente do html, certo?
É mesmo o que procuro!
exacto, carrega as noticias directamente do html (como tipo string), faz-se o parse para xml, e a apartir daí constroi-se o menu de acordo com o exemplo que mostraste.
Não sei se me podes ajudar, mas:
Quando testo a minha animação, a ligação funciona e por conseguinte as noticias aparecem.
Aconteçe que quando no site, fica sempre em "a carregar", e quando executo o .swf, dá-me este erro..
Não sei se me sabes ajudar, visto o mais provável é a programação não ter nada a ver com o problema, mas como já me conseguis-te ajudar tanta vez ( )
Aqui fica a pergunta..
pela descrição do problema, julgo que possa tratar de problemas de segurança. Visto que estás a carregar um html externo, o flash pode estar a intrepertar o problema como se trata-se de um link "malicioso", logo estar a aparecer esse aviso e o programa nao passar da fase "A Carregar..."
neste momento nao estou perto (nem vou estar) do meu pc, para poder ter certezas, mas assim que tiver, tento resolver o problema (la mais para o fim da semana).
consegui dar entao uma olhada no problema, e cheguei à conclusao de que se trata mesmo de uma questao de seguranca. quando esse "erro" acontecer, clica no botao "Settings..." e na janela que se abre no teu browser, no componente "Macromedia Flash Player Settings Manager", clica no dropdown menu e escolhe a opção "Add location..."
escreve ai o caminho onde tens o teu file .swf (ex: c:\Desktop\App\oMeuSwf.swf) e clica no botao "Confirm". de seguida tenta abrir de novo o swf e verás que ja nao da esse erro.
Julgo que quando puseres o teu site online este erro nao ocorra, mas poderias tentar por isso online e ver se da erro ou nao...
::EDIT:: segue este link para uma explicação mais profunda do problema:
http://kb2.adobe.com/cps/135/13530cdd.html
online não dá nenhum erro, mas nunca carrega as noticias...fica sempre em "a carregar".
Lol, a pagina "Settings" do menu de erro, não está disponível ...
Vou ler com atenção o link que me mandas-te
Consegui resolver a situação da comunicação do .swf com a internet, mas on, ainda fica sempre a aparecer "a carregar".
esperimenta usar a versao flash debug player para ver se te dá algum erro, desconfio que isso seje problema de caminhos
Tentei correr o swf online, e tambem tive o mesmo problema... Julgo que possa ter a haver com a questão da segurança....
Procurei um pouco acerca do assunto, mas nao consegui encontrar nada de relevante.
Se entretanto souber como se possa dar a volta ao problema, aviso por aqui.
uma outra solução era a que o Scorpion_Blood mencionou uns posts mais atrás, fazer uso de um script PHP. Bastaria receberes um XML e usar o resto do codigo.
mas isso infelizmente nao te posso ajudar pois nao estou muito por dentro...
Relativamente á segurança, "permito" o .swf aqui.
Quanto ao debbuger, o erro que deu foi de segurança...depois de permitir, já funcionava (apenas no meu pc)...