Marcin Knitter Senior PHP Developer
Temat: AS3. Owoływanie się do obiektów/zmiennych w innych swf.
Witam!Mam problem z odwołaniami do obiektów zawierających się wewnątrz załadowanych do filmu swf'ów.
SYTUACJA:
Mam 3 pliki swf: Player, Mapa, Kwadrat.
Po uruchomieniu pliku Player wczytywany jest za pomocą FUNKCJI plik Mapa (do którego podpięta jest klasa Loaderek - listing niżej), a następnie za pomocą klasy ładowany jest plik Kwadrat do swf'a Mapa.
Czyli otrzymuje takie schodki Player->Mapa->Kwadrat.
Problem polega na tym, że chcę odwołać się z kwadratu do pola txt w Player. Kiedy mapa wczytywała kwadrat za pomocą funkcji (tak jak Player wczytuje Mapę), mogłem odwoływać się do tego pola tekstowego w taki sposób:
(parent.parent... as Object).txt_php.text = "Napis";
Kiedy zmieniłem funkcje na klasę (która tworzy obiekt Loaderek), wyskakuje błąd gdy jest jedno parent:
"ReferenceError: Error #1069: Nie znaleziono właściwości txt_php w flash.display.Loader, a wartość domyślna nie istnieje.
at 2_fla::MainTimeline/frame1()"
A dla większej liczby parentów:
"TypeError: Error #1009: Nie można uzyskać dostępu do właściwości lub metody dla odniesienia do obiektu null.
at 2_fla::MainTimeline/frame1()"
Oczywiście próbowałem zastosować wiele wariantów z parentami.
Nie wiem co jest nie tak, jednak mogę przypuszczać, że jest to związane z klasą bo wcześniej działało. Proszę o pomoc.
Kod Klasy Loaderek:
package
{
import flash.display.*;
import flash.net.*;
import flash.events.*;
public class Loaderek extends Sprite
{
//Zmienne globalne
var pobieranieMapy:Loader;
public var kwadrat:MovieClip;
var iks:Number;
var igrek:Number;
//KONSTRUKTOR
public function Loaderek(adres:String, ikss:Number, igrekk:Number)
{
iks = ikss;
igrek = igrekk;
pobieranieMapy = new Loader();
pobieranieMapy.load(new URLRequest(adres));
pobieranieMapy.contentLoaderInfo.addEventListener(Event.INIT, poWczytaniuMapy);
//addChild(pobieranieMapy);
//trace("stworzono obiekt: "+pobieranieMapy);
}
private function poWczytaniuMapy(e:Event)
{
kwadrat = pobieranieMapy.content as MovieClip;
kwadrat.x = iks;
kwadrat.y = igrek;
kwadrat.width = 410;
kwadrat.height = 405.85;
//trace("stworzono obiekt: "+kwadrat);
addChild(kwadrat);
}
}
}
Kod wywołujący Loaderka:
var pliki = new Array(new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array());
function wczytywanieWstepne (x_m:Number, y_m:Number, sz_m:Number, w_m:Number, ilosc_wierszy:int, ilosc_kolumn:int, sz_m2:Number, w_m2:Number)
{
for (var i:int=0; i<ilosc_kolumn; i++) //w poziomie
{ for (var j:int=0; j<ilosc_wierszy; j++) //w pionie
{
var kw:String = "pliki/mapa2/kw/" + j + "-" + i + ".swf";
pliki[i][j]=newLoaderek(kw,i*410),j*405.85)); kw = null; //addChild(pliki[i][j]); }
}
}
Proszę o Pomoc!
Jak zmodyfikować z poziomu Kwadrat zmienić tekst w polu txt w Playerze? Może źle napisałem klasę? Muszę tworzyć obiekt jak tablicę gdyż mam wiele kwadratów do załadowania do mapy. I muszę mieć możliwość włączania i wyłączania ich ze sceny. Pozdrawiam
POMOCY!!Marcin Knitter edytował(a) ten post dnia 01.03.10 o godzinie 09:36