hej alle.

jeg har brug for lidt hjælp.
jeg er ved at prøve at bygge en fil om, så det ikke længere bare er en lang fil med ActionScript filer, men mange små selvstændige class'es, som så kan bruges i andre sammenhænge.

jeg har dog lidt problemer.
jeg forsøger at rette størrelsen på et MovieClip på stage i en funktion i en selvstændig class, men løber hele tiden i dette problem:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.felixsanchez.FullscreenBackground::FullscreenBackground/resizeBackground()
at FullscreenBackgroundDemo/onResize()

jeg må på en eller anden måde referere forkert til mit MoveiClip...

her er min Document Class:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package {
  
  import com.felixsanchez.NewCustomContextMenu.NewCustomContextMenu;
  import com.felixsanchez.FullscreenBackground.FullscreenBackground;  
  import flash.display.Sprite;
  import flash.display.StageAlign;
  import flash.display.StageQuality;
  import flash.display.StageScaleMode;
  import flash.events.Event;
 
  public class FullscreenBackgroundDemo extends Sprite {
    
    private var _fsb:FullscreenBackground;
  
    public function FullscreenBackgroundDemo() {
      setupContextMenu();
      _fsb = new FullscreenBackground("static", "image_bg1.jpg");
      addChild(_fsb);
      stageInit();
    }
    
    function stageInit():void {
      stage.scaleMode = StageScaleMode.NO_SCALE;
      stage.align = StageAlign.TOP_LEFT;
      stage.quality = StageQuality.BEST;
      stage.frameRate = 30;
      stage.showDefaultContextMenu = true;
      stage.addEventListener(Event.RESIZE, onResize, false, 0, true);
    }
    
    private function onResize(e:Event):void {
      //trace("_fsb.width = "+_fsb.width+" & _fsb.height = "+_fsb.height);
      _fsb.resizeBackground(_fsb.width, _fsb.height);
    }

og her er den selvstændige class, der gør at det fejler:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package com.felixsanchez.FullscreenBackground {
  
  import caurina.transitions.Tweener;
  import com.felixsanchez.ExtendedLoader.ExtendedLoader;
  import flash.display.Sprite;
  import flash.events.Event;
 
  public class FullscreenBackground extends Sprite {
    
    private var _type:String;
    private var _pictures:String;
    private var _el:ExtendedLoader;
    private var _ratio:Number;
    private var _stageWidth:Number;
    private var _stageHeight:Number;
    private var _backgroundWidth:Number;
    private var _backgroundHeight:Number;
    
    public function FullscreenBackground(type:String, pictures:String) {
      _type = type;
      _pictures = pictures;
      trace("com.felixsanchez.FullscreenBackground & type = "+_type+" & pictures = "+_pictures);
      
      var _el = new ExtendedLoader(_pictures);
      addChild(_el);
      _el.addEventListener("ExtendedLoaderDone", ExtendedLoaderDone, false, 0, true);
      _el.addEventListener(Event.RESIZE, resizeBackground, false, 0, true);
    }
    
    private function ExtendedLoaderDone(e:Event):void {
      //addChild(_el);
      trace("ExtendedLoaderDone");
    }
 
    public function resizeBackground(backgroundWidth:Number, backgroundHeight:Number):void {
      trace(stage.stageWidth, stage.stageHeight);
      _stageWidth = stage.stageWidth;
      _stageHeight = stage.stageHeight;
      _backgroundWidth = backgroundWidth;
      _backgroundHeight = backgroundHeight;
      trace("backgroundWidth = "+backgroundWidth+" & backgroundHeight = "+backgroundHeight);
      
      _ratio = _backgroundWidth / _backgroundHeight;
      trace("_ratio = "+_ratio);
      ///*
      if  ((_stageWidth / _ratio) >= _stageHeight) {
        trace("do one thing");
        _el.width = _stageWidth;
        _el.height = (_stageWidth / _ratio);
        //root._fsb.width = _stageWidth;
        //root._fsb.height = (_stageWidth / _ratio);
        //_root._fsb.width = _stageWidth;
        //_root._fsb.height = (_stageWidth / _ratio);       
      } 
      else {
        trace("do another thing");
        //_el.height = _stageHeight;
        //_el.width = (_stageHeight * _ratio);
      }
      //trace(_el.width, _el.height);
      //*/
    }
  }
}

problemet ligger i når eventlisteneren i Document class'en reagerer på Event.RESIZE og kalder funktionen onResize. denne kalder så igen resizeBackground i den eksterne class, hvor jeg som I kan se, kan trace en masse værdier, men ikke finde ud af at resize mit MovieClip..

kan ovenstående beskrivelse og vedhæftede kode gøre, at der er nogle, der kan gennemskue dette.. eller mangler jeg at beskrive noget?

på forhånd tak
felisan