Cum se citește valoarea unei intrări de text într-un SWF Flash dintr-o aplicație Flex?

Am o aplicație Flex, care încarcă un SWF de la CS3. SWF-ul încărcat conține o intrare de text numită "myText". Pot vedea acest lucru în SWFLoader.content fără probleme, dar nu știu ce tip ar trebui să îl tratez ca în Flex App. Am crezut că documentele flex acoperă acest lucru, dar nu pot decât să găsesc cum să interacționez cu un alt SWF Flex.

Debuggerul Flex îmi spune că este de tip fl.controls.TextInput, care are sens. Dar FlexBuilder nu pare să știe această clasă. În timp ce Flash și Flex folosesc atât AS3, Flex are o nouă bibliotecă de clase GUI. M-am gândit că au și toate clasele Flash, dar nu pot să știu despre nici un pachet FL ***.

0

3 răspunsuri

Ierarhia fl. * a claselor este numai Flash CS3. Este biblioteca Flash Components 3 (cred că se numește, s-ar putea să fiu greșit). Cu toate acestea, nu aveți nevoie de clasă pentru a lucra cu obiectul. Atâta timp cât puteți obține o referință la el în codul dvs., pe care pare să îl aveți, puteți să atribuiți referința la o variabilă unică și să lucrați cu ea oricum:

var textInput : * = getTheTextInput();//insert your own method here

textInput.text = "Lorem ipsum dolor sit amet";

textInput.setSelection(4, 15);

Nu este nevoie să cunoașteți tipul unui obiect pentru a interacționa cu acesta. Bineînțeles că pierzi verificarea de tip la momentul compilării, dar asta nu este cu adevărat o problemă, trebuie să fii foarte atent.

Dacă într-adevăr doriți într-adevăr să faceți referință la obiect ca fiind tipul real, clasa în cauză este situată în

Adobe Flash CS3/Configuration/Component Source/ActionScript 3.0/User Interface/fl/controls/TextInput.as

... dacă aveți instalat Flash CS3, deoarece este livrat numai cu acea aplicație.

0
adăugat

Flex și Flash SWF-urile sunt în esență aceleași, doar construite folosind diferite instrumente. Nu sunt sigur dacă împărtășesc aceleași biblioteci de componente, dar pe baza numelor pachetelor pe care le presupun cel puțin că le fac cel mai mult.

Dacă este o intrare normală de text, atunci cred că este o instanță a mx.controls.TextInput.

0
adăugat

Rețineți că, dacă faceți cum a spus Theo și trimiteți-l cu tipul corect, va compila acea clasă în ambele swf-uri, chiar dacă nu o utilizați în prima. Din păcate, clasele fl. * Nu implementează interfețe, astfel încât să nu le poți scrie la interfață în loc de implementare. Dacă ați putea, va fi compilată doar interfața, care este mult mai mică decât implementarea. Pentru aceasta nu va fi o afacere mare, probabil va adăuga doar câteva kb, dar pe termen lung se adaugă. Doar un heads up;)

0
adăugat