forked from: flash on 2014-11-24

by tepe forked from flash on 2014-11-24 (diff: 162)
メッセージウィンドウを表示する
♥0 | Line 110 | Modified 2014-11-27 12:03:12 | MIT License
play

ActionScript3 source code

/**
 * Copyright tepe ( http://wonderfl.net/user/tepe )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/566b
 */

// forked from mutantleg's flash on 2014-11-24
package {
    import flash.display.*;
    import flash.events.*;
    
    
    //メッセージウィンドウを表示する
    
    public class FlashTest extends Sprite {

        private var str:String ="";
        private var s:Sprite = new Sprite();
 
        private var mw:msgWindow = new msgWindow();
     
        public function FlashTest() {
            
            addChild(s);
            s.x = 200;
            s.y = 100;
            s.graphics.lineStyle(2,0);
            s.graphics.beginFill(0xffffff);
            s.graphics.drawRect(0,0,50,50);
            s.graphics.endFill();
            s.buttonMode=true;
            s.addEventListener(MouseEvent.MOUSE_OVER,function():void{
                mw.show();
            });
            s.addEventListener(MouseEvent.MOUSE_OUT,function():void{
                mw.hide();
            });

            
            
             addChild(mw);
             mw.x = 32;
             mw.y = 465-128;
             var str:String = "1232183972489487583843294834892374832479248728941923----------------------------------------------------------";
             str += "\n1232183972489487583843294834892374832479248728941923";
             str += "\nてすと漢字12321839724894875838432948348923748324792fadfasdf ";
             str += "\n1232183972489487583843294834892374832479248728941923";
             str += "\n1232183972489487583843294834892374832479248728941923";
             str += "\n1232183972489487583843294834892374832479248728941923";


             mw.text = str;
             mw.setSize(400,100);
        }//ctor
        
        
     
        
    }//classend
}


import flash.display.*;
import flash.text.*;
import flash.events.*;

    class msgWindow extends Sprite{
        private var tf:TextField = new TextField();
        public var gt:int = 0;
     
        public var state:int = 0;
        public var cur:int = 0;//キャレット位置
        public var mt:Number = 0;
        public var msg:String = ""; 
        private var w:int=465;
        private var h:int=128;
        
        public function msgWindow(){
            tf.x = 8; tf.y = 8;
            tf.width = w-12; tf.height= h-8;
            tf.mouseEnabled = false;
            tf.wordWrap=true;
            tf.multiline=true;
            tf.textColor=0xffffff;
            tf.thickness=2;
            addChild(tf);
            addEventListener(Event.ENTER_FRAME,onFrame);
        }
        
        public function show():void{
            state = 1;
            addChild(tf);
            addEventListener(Event.ENTER_FRAME,onFrame);
        }
        public function hide():void{
            state = 0;
            
        }


        
        public function set text(str:String):void{
            msg = str;
            cur = 0;
        }
        public function get text():String{
            return msg;
        }

        //ウィンドウサイズ設定
        public function setSize(width:int,height:int):void{
            w=width;
            h=height;
            tf.width=w-12;
            tf.height=h-12;
        }


    
        private function onFrame(e:Event):void{
            graphics.clear();
            //状態1
             if (state == 1){
                 mt +=0.1;
                 if (mt > 1) {
                     mt=1;
                 }
                 if(cur<msg.length)cur+=2;//表示文字を進める
             }
             else {
                 mt -=0.1;
                 if (mt < 0){
                     mt=0; cur =0;
                     removeChild(tf);
                     removeEventListener(Event.ENTER_FRAME,onFrame);
                 }
             }             
            
            tf.alpha = mt;
            if (state == 1) {
                if(cur<msg.length)tf.text = msg.substr(0, cur) + " |";
                else tf.text = msg.substr(0, cur) + ((gt & 16) > 0 ? "_":"");//キャレット点滅
                tf.scrollV = tf.maxScrollV;
            }
            
            //ウィンドウ
            //graphics.lineStyle(3,0xffffff,mt);//RPG
            graphics.lineStyle();
            graphics.beginFill(0x000000,0.9*mt);
            graphics.drawRect(0,0,w,h);
            graphics.endFill();
            
            gt++;
        }


    }