2011年7月15日 星期五

文字欄位的捲動_TextField.scrollV

TextField.scrollV
垂直捲動的單位是字行,水平捲動的單位則是像素。 如果顯示的第一個字行是文字欄位中的第一個字行,scrollV 便會設定為 1 (而非 0)。
URLLoader.load()方法
public function load(request:URLRequest):void
從指定的 URL 傳送並載入資料。根據 dataFormat 屬性值,能以文字、原始二進位資料或 URL 編碼之變數的形式接收此資料。dataFormat 屬性的預設值為文字。
bottomScrollV屬性
bottomScrollV:int [唯讀]
整數 (從 1 開始的索引),指出目前在指定之文字欄位中,可以看見的最底端字行。 將文字欄位視為文字區塊上的視窗。 scrollV 屬性是視窗中,最頂端之可見字行的索引 (從 1 開始)。
在文字欄位中,scrollV 與 bottomScrollV 字行間的所有文字目前都是可見的。

※ 載入外部文字檔,由TextField讀取,倆顆按鈕控制向下和向上捲動文字行

1000714_TextField.scrollV.swf


package  {
 
 import flash.display.MovieClip;
 import flash.text.TextField;
 import flash.net.URLRequest;
 import flash.net.URLLoader;
 import flash.events.Event;
 import flash.display.SimpleButton;
 import flash.events.MouseEvent;
 import flash.display.DisplayObject;
 import flash.net.URLLoaderDataFormat;
 import flash.events.IOErrorEvent;
 import flash.errors.IOError;

 public class Main extends MovieClip {
  
  public var dynTF:TextField;
  public var str:String;
  public var nextBtn:SimpleButton;
  public var preBtn:SimpleButton;
  
  public function Main() {
   this.initURLLoader();
   
   /*滑鼠滾輪開關*/
   /*Boolean 值,指出當使用者按一下文字欄位並滾動滑鼠滾輪時,Flash Player 是否會自動捲動多行文字欄位。
   根據預設,這個值為 true。 如果想要防止滑鼠滾輪捲動文字欄位,或實作您自己的文字欄位捲動,這個屬性就會很有用。*/
   this.dynTF.mouseWheelEnabled = true;
   
   this.nextBtn.addEventListener(MouseEvent.MOUSE_DOWN,readNextLOOP);
   this.nextBtn.addEventListener(MouseEvent.MOUSE_UP,removeReadNextLOOP);
   this.preBtn.addEventListener(MouseEvent.MOUSE_DOWN,readPreLOOP);
   this.preBtn.addEventListener(MouseEvent.MOUSE_UP,removeReadPreLOOP);
   return;
  }
  
  private function initURLLoader():void{
   var urlReq:URLRequest = new URLRequest("http://dl.dropbox.com/s/y0eun5z88xxqw5e/1000714_TextField.scrollV_textStr2.txt");
   var urlLoader:URLLoader = new URLLoader();
   /**/
   urlLoader.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
   /**/
   urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
   urlLoader.addEventListener(Event.COMPLETE,readData);
   /**/
   try{
    urlLoader.load(urlReq);
   }catch(error:Error){
    trace("Unable to load requested document.");
   }
   
   return;
  }
    
  private function readData(event:Event):void{
   var tmpLoader:URLLoader = event.currentTarget as URLLoader;
   /*this.str = tmpLoader.data.split("\r\n").join("\n");*/
   this.str = tmpLoader.data;
   trace(this.str);
   showText();
   return;
  }
  
  private function showText():void{
   this.dynTF.htmlText = this.str;
   trace("this.dynTF.maxScrollV : " + this.dynTF.maxScrollV);
   trace("this.dynTF.scrollV : " + this.dynTF.scrollV );
   trace("this.dynTF.bottomScrollV : " + this.dynTF.bottomScrollV );
   return;
  }
  
  private function readNextLOOP(event:MouseEvent):void{
   this.addEventListener(Event.ENTER_FRAME,this.readNext);
   return;
  }
  
  private function removeReadNextLOOP(event:MouseEvent):void{
   this.removeEventListener(Event.ENTER_FRAME,this.readNext);
   return;
  }
  
  private function readNext(event:Event):void{
   this.dynTF.scrollV += 1;
   trace("this.dynTF.scrollV : " + this.dynTF.scrollV );
   trace("this.dynTF.bottomScrollV : " + this.dynTF.bottomScrollV );
   return;
  }
  
  private function readPreLOOP(event:MouseEvent):void{
   this.addEventListener(Event.ENTER_FRAME,this.readPre);
   return;
  }
  
  private function removeReadPreLOOP(event:MouseEvent):void{
   this.removeEventListener(Event.ENTER_FRAME,this.readPre);
   return;
  }
  
  private function readPre(event:Event):void{
   this.dynTF.scrollV -= 1;
   trace("this.dynTF.scrollV : " + this.dynTF.scrollV);
   trace("this.dynTF.bottomScrollV : " + this.dynTF.bottomScrollV );
   return;
  }
  
  private function tween1(_targetObject:DisplayObject,_now:Number,_new:Number):void {
   return;
  }
  
  /**/
  private function ioErrorHandler(e:IOErrorEvent):void{
   trace("ioErroerHandler : " + e);
   return;
  }
 }
 
}

沒有留言: