본문 바로가기

OM

외부에서 load된 swf 메소드 호출하기



Main.as=============================================================================================

package src
{
 import flash.display.*;
 import flash.events.*;
 import flash.net.*;
 import flash.utils.*;
 
 public class Main extends Sprite
 {
  private var books:Array;
  private var book:MovieClip;
  private var bookLoader:Loader;
  private var viewSec:int;
  private var clock:Timer;
 
  public function Main()
  {   
   books = ["Book01.swf", "Book02.swf", "Book03.swf"];
   viewSec = 5;
   
   loadBook(1);
   setTimer();
   setButtons();
  }
 
  private function setTimer():void
  {
   if(clock==null)
   {
    clock = new Timer(viewSec*1000);
    clock.addEventListener(TimerEvent.TIMER, onTimerHandler);
    clock.start();
   }
  }
 
  private function onTimerHandler(e:TimerEvent):void
  {
   if(book!=null)
   {
    book.nextPage();
   }
  }
 
  private function destroyTimer():void
  {
   if(clock!=null)
   {
    clock.stop();
    clock.removeEventListener(TimerEvent.TIMER, onTimerHandler);
    clock = null;
   }
  }
 
  private function loadBook(bookNum:int):void
  {
   if(bookNum>books.length)
   {
    trace("잘못된 입력입니다.");
    return;
   }
   
   var book_url:String = books[(bookNum-1)];
   
   bookLoader = new Loader();
   bookLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
   bookLoader.load(new URLRequest(book_url));
  }
 
  private function setButtons():void
  {
   book01_btn.buttonMode = true;
   book02_btn.buttonMode = true;
   book03_btn.buttonMode = true;  
   prevPage_btn.buttonMode = true;
   stopPage_btn.buttonMode = true;
   nextPage_btn.buttonMode = true;
   
   book01_btn.addEventListener(MouseEvent.CLICK, onReleaseHandler);
   book02_btn.addEventListener(MouseEvent.CLICK, onReleaseHandler);
   book03_btn.addEventListener(MouseEvent.CLICK, onReleaseHandler);
   
   prevPage_btn.addEventListener(MouseEvent.CLICK, onReleaseHandler);
   stopPage_btn.addEventListener(MouseEvent.CLICK, onReleaseHandler);
   nextPage_btn.addEventListener(MouseEvent.CLICK, onReleaseHandler);  
  }
 
  private function onCompleteHandler(e:Event):void
  {
   book = MovieClip(bookLoader.content);
   
   var i:int = bookContainer_mc.numChildren;
   while(i>0)
   {
    bookContainer_mc.removeChildAt(0);
    i = bookContainer_mc.numChildren;
   }
   
   bookContainer_mc.addChild(book);
  }
 
  private function onReleaseHandler(e:MouseEvent):void
  {
   if(book==null)
   {
    return;
   }
   
   destroyTimer();
   
   switch(e.currentTarget)
   {    
    case book01_btn :
     loadBook(1);
     break;
    case book02_btn :
     loadBook(2);
     break;
    case book03_btn :
     loadBook(3);
     break;
    case prevPage_btn :
     book.prevPage();
     break;
    case nextPage_btn :
     book.nextPage();
     break;
   }
   
   if(e.currentTarget!=stopPage_btn)
   {
    setTimer();
   }
  }
 }
}

=====================================================================================================

Book02.as, Book03.as는 Book01.as와 동일
Book01.as===========================================================================================

package src
{
 import flash.display.*;
 import flash.events.*;
 import src.util.*;
 
 public class Book01 extends PageUtil
 {
  public function Book01()
  {
   totalPageNum = this.totalFrames;
  }
 }
}

=====================================================================================================

PageUtil.as==========================================================================================

package src.util
{
 import flash.display.*;
 import flash.events.*;
 
 public class PageUtil extends MovieClip
 {
  public var totalPageNum:int;
  public var pageNum:int = 1;
 
  public function PageUtil()
  {
   this.gotoAndStop(pageNum);
  }
 
  public function nextPage():void
  {
   if(pageNum<totalPageNum)
   {
    pageNum += 1;
   }
   
   this.gotoAndStop(pageNum);
  }
 
  public function prevPage():void
  {
   if(pageNum>1)
   {
    pageNum -= 1;
   }
   
   this.gotoAndStop(pageNum);
  }
 }
}

=====================================================================================================