Z uwagi na dużą liczbę wpisów stworzonych bez wątpienia wyłącznie w celu pozycjonowania stron na określone frazy, dodaliśmy do wszystkich linków (w postach i podpisach) atrybut rel="nofollow". Z tego względu wszystkie dodane linki straciły swoją moc pozycjonerską. Forum jest dla Was, dlatego prosimy o zamieszczanie wyłącznie "prawdziwych" tematów i odpowiedzi.

TypeError: Error #1009: Cannot access a property or method o

Obsługa programu, animacja, AS2, AS3
  • Wiadomości
Offline

szmek2

  • Posty: 2
  • Rejestracja: 19 lut 2013, o 21:06

TypeError: Error #1009: Cannot access a property or method o

Post19 lut 2013, o 21:22

Witam
W trakcie moich pierwszych kroków z flashem natknąłem się na problem. Mianowicie stworzyłem sobie meni które jest pobierane z pliku xml i załadowuje stronę txt i z tym nie ma najmniejszego problemu. Schody zaczęły się w momencie jak postanowiłem zamiast strony txt załadować z zewnętrznego pliku swf galerię. Wszystko się pięknie kompiluje i uruchamia ale wywala błąd:

Kod: Zaznacz cały
TypeError: Error #1009: Cannot access a property or method of a null object reference.
   at Miniaturki/::intervalM()
   at Function/http://adobe.com/AS3/2006/builtin::apply()
   at ()
   at flash.utils::SetIntervalTimer/flash.utils:SetIntervalTimer::onTimer()
   at flash.utils::Timer/flash.utils:Timer::_timerDispatch()
   at flash.utils::Timer/flash.utils:Timer::tick()


Wywołuje ten zewnętrzny plik w ten sposób:
Kod: Zaznacz cały
function ladujSWF (myszka:MouseEvent): void {
   var loader:Loader = new Loader();
   var url:URLRequest = new URLRequest("galeria.swf");
   loader.load(url);
   addChild(loader);
}
   

A i bardzo istotna kwestia moje meni i ta galeria osobno działają idealnie.
Ma ktoś jakiś pomysł gdzie popełniam błąd?
Offline
Awatar użytkownika

poloo89

  • Posty: 47
  • Rejestracja: 31 mar 2011, o 23:09

Re: meni z zewnętrzną galerią xml

Post20 lut 2013, o 14:11

po pierwsze, "menu" nie odmienia się na polski język, nie ma czegoś takiego jak "meni" :P
po drugie, mylnie nadajesz temat... piszesz w nim o zewnętrznym pliku z galeria 'xml' (cokolwiek to znaczy - ja się nie spotkałem :P) a w rzeczy samej problemy masz z ładowaniem pliku swf. (o ile dobrze zrozumiałem)

a teraz do sedna:
pokaż jeszcze listner wywołujący funkcję 'ladujSWF'.

dalej, w funkcji:
function ladujSWF (myszka:MouseEvent): void {
var loader:Loader = new Loader();
var url:URLRequest = new URLRequest("galeria.swf");
loader.load(url);
addChild(loader);
}

brakuje Ci listnera nasłuchującego zakończenie 'loadowania' pliku galeria.swf.

ładowanie swf, powinno wyglądać w ten sposób:

Kod: Zaznacz cały
var loader:Loader = new Loader();
var url:URLRequest = new URLRequest("galeria.swf");
function loaderComplete(e:Event):void
{
   addChild(loader);
}
loader.load(url);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);


inaczej addChild nie ma czego dodać, ponieważ jest wykonywany w momencie kiedy 'loader' jest jeszcze pusty ( nie zdążył się załadować galeria.swf)

powodzenia. :)
Offline

szmek2

  • Posty: 2
  • Rejestracja: 19 lut 2013, o 21:06

Re: meni z zewnętrzną galerią xml

Post20 lut 2013, o 16:56

Najprawdopodobniej z tym meni to masz racje:) przepraszam menu:).
Co do tematu to może i masz rację chodziło mi o wywołanie zewnętrznej galerii za pomocą menu. Chyba że to nadal nie poprawnie brzmi ?

a co do listnera wywołującego funkcję 'ladujSWF' to będzie prościej jak zamieszczę wszystko :
Kod: Zaznacz cały
import caurina.transitions.Tweener;


var ladujPlik:URLLoader = new URLLoader();
var adresPlik:URLRequest = new URLRequest();


adresPlik.url = "art/glowna.txt";
ladujPlik.load(adresPlik);

ladujPlik.addEventListener(Event.COMPLETE, pokazHtml);

function pokazHtml(zdarzenie:Event):void {
   info_txt.htmlText = ladujPlik.data;
}

var ladujXML:URLLoader = new URLLoader();
var adresXML:URLRequest = new URLRequest("baza.xml");
var daneXML:XML;
ladujXML.load(adresXML);

ladujXML.addEventListener(Event.COMPLETE, pokazDane);

function pokazDane (zdarzenie:Event): void {
   daneXML = new XML(ladujXML.data);
   
   ukladaj();
}

var przyciski:Array = new Array();
var pliki:Array =new Array();

function ukladaj(): void {
   var ilosc:Number = daneXML.artykuly[0];
   var art:Number =0;
   var dodaj:Number;
   for (var i= 0; i < ilosc; i++) {
      art++;
      dodaj++
      var button: Przycisk = new Przycisk();
      addChild(button);
      
      button.name= "button" + i;
      przyciski.push (button);
      
      pliki.push(daneXML.artykuly[art].@link);   
      przyciski [i].x = 15;
      przyciski [i].y = 63 + i * (button.height +4);
      przyciski [i].info_txt.text = daneXML.artykuly[art];
      przyciski [i].mouseChildren= false;
      przyciski [i].buttonMode=true;
      przyciski [i].dodaj = pliki[i];
      
      
         przyciski [i].addEventListener(MouseEvent.CLICK, ladujSWF);
      
      przyciski [i].addEventListener(MouseEvent.MOUSE_OVER, wysun);
      przyciski [i].addEventListener(MouseEvent.MOUSE_OUT, schowaj);
         
   }
   
   
}

function ladujSWF (myszka:MouseEvent): void {
   var appDomainB:ApplicationDomain = ApplicationDomain.currentDomain;
 
var contextB:LoaderContext = new LoaderContext(false, appDomainB);
var loaderB:Loader = new Loader();
loaderB.load(new URLRequest("galeria.swf"), contextB);   
      
}

function czytaj (myszka:MouseEvent): void {
   
   var loader:Loader = new Loader();
   var url:URLRequest = new URLRequest("galeria/galeria.html");
   loader.load(url);
   addChild(loader);
   
   
   
   
   adresPlik.url= myszka.target.dodaj
   ladujPlik.load(adresPlik);
   
}

function wysun(myszka:MouseEvent): void {
   Tweener.addTween(myszka.target.pasek_mc, {x:-50, time:1, transition:"liner"});
}

function schowaj(myszka:MouseEvent): void {
   Tweener.addTween(myszka.target.pasek_mc, {x:-186, time:1, transition:"liner"});
}


Co do twojego rozwiązania to już nawet stworzyłem zupełnie nowy pusty projekt i próbowałem go zastosować ale efekt finalny w dalszym ciągu jest ten sam.
Offline

zchrobot

Team eduweb

Team eduweb

  • Posty: 1319
  • Rejestracja: 4 mar 2010, o 20:44

Re: meni z zewnętrzną galerią xml

Post20 lut 2013, o 20:02

kolega poloo się myli twierdząc że addChild nie ma czego dodać :) nie za bardzo jeszcze orientuje się w programowaniu obiektowym samo wywołanie poniżej tworzy już instancję obiektu którą z powodzeniem można dodać gdziekolwiek się chce, a zatem dodanie listenera COMPLETE nic nie pomoże to tyle w ramach sprostowania
Kod: Zaznacz cały
var loader:Loader = new Loader();


Co do błędu to jest to standardowy błąd spowodowany odwoływaniem się do obiektu stage zanim zostanie on za inicjalizowany w ładowanym pliku swf, było o tym na forum już kilkakrotnie.
Odwoływanie się do wartośc np: stage.stageWidth w momencie kiedy sam obiekt stage ma wartość null skutkuje błędem
Kod: Zaznacz cały
Cannot access a property or method of a null object reference.

rozwiązanie jest proste dodawaj zawsze event ADDED_TO_STAGE tam gdzie korzystasz z obiektu stage tyczy się to galerii czyli pliku swf wczytywanego do innego pliku swf np:
Kod: Zaznacz cały
package
{
    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite
    {
        public function Main():void
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }// end function

        private function init(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            trace(stage.stageWidth); //dopiero tutaj bez obaw możesz się odwoływać do obiektu stage

        }// end function

    }// end class

}// end package
Offline

aadam24

  • Posty: 8
  • Rejestracja: 12 lut 2013, o 13:05

Re: TypeError: Error #1009: Cannot access a property or meth

Post24 mar 2013, o 15:26

Witam. Skoro juz temat galerii to mam pytanie - jak zaladowac plik galeria.swf z kursu galerii z eduweb do innego swf'a. Dodam że gdy chce zaladowac jakiegos swf'a to wychodzi mi dobrze i plik jest ladowany poprawnie za to swf z gotowa galeria nie chce sie zaladowac. Za pomoc z gory dziekuje.
Offline

zchrobot

Team eduweb

Team eduweb

  • Posty: 1319
  • Rejestracja: 4 mar 2010, o 20:44

Re: TypeError: Error #1009: Cannot access a property or meth

Post24 mar 2013, o 15:45

przecież wszystko masz opisane dokładnie już powyżej
Offline

aadam24

  • Posty: 8
  • Rejestracja: 12 lut 2013, o 13:05

Re: TypeError: Error #1009: Cannot access a property or meth

Post24 mar 2013, o 17:43

"przecież" powinienem "to" wiedziec...
Przepraszam ze nie jestem doswiadczony w programowaniu obiektowym.
Gdyby wszystko dzialalo nie pisalbym posta - zanim napisalem sprawdziłem co jest powyżej i czy to działa...
Dziekuje za pomoc.
Offline

zchrobot

Team eduweb

Team eduweb

  • Posty: 1319
  • Rejestracja: 4 mar 2010, o 20:44

Re: TypeError: Error #1009: Cannot access a property or meth

Post25 mar 2013, o 11:32

to opisz dokładniej problem zatem :) jakieś błędy cokolwiek bo z powyższego Twojego posta nic więcej nie można wywnioskować

Wróć do Flash i ActionScript

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość

cron