zoukankan      html  css  js  c++  java
  • [资料库]用FLASH实现游戏里即时更新,滚动字幕喊话

    原帖地址:

    http://www.wedoswf.com/questions/1622

    这个是我们以前活动的喊话banner,是从 wonderfl上的效果改的。

    效果见这里:http://swfsh.com/images/SwfSHBanner_0530.swf

    下面是源代码:

    代码
       1. package
       
    2. {
       
    3.     import flash.display.*;
       
    4.     import flash.events.Event;
       
    5.     import flash.geom.*;
       
    6.     import flash.text.*;
       
    7.

       
    8.     /**
       9.      * 電光掲示板のテスト
      10.      
    */
      
    11.     [SWF(width="550", height="316", backgroundColor="0x000000", frameRate="24")]
      
    12.     public class Main extends Sprite
      
    13.     {
      
    14.         private var panel:Sprite;
      
    15.         private var data:BitmapData;
      
    16.         private var frameCount:int;
      
    17.         private var textField:TextField;
      
    18.         private var sourceSprite:Sprite;
      
    19.

      
    20.         public function Main():void
      
    21.         {
      
    22.             if (stage) init();
      
    23.             else addEventListener(Event.ADDED_TO_STAGE, init);
      
    24.

      
    25.                         panel = new Sprite();
      
    26.                         panel.rotationY = 25;
      
    27.                         panel.rotationX = 25;
      
    28.                         panel.y = 50;
      
    29.                         addChild(panel);
      
    30.         }
      
    31.

      
    32.         private function init(e:Event = null):void
      
    33.         {
      
    34.             removeEventListener(Event.ADDED_TO_STAGE, init);
      
    35.             sourceSprite = new Sprite();
      
    36.

      
    37.             textField = new TextField();
      
    38.             textField.autoSize = TextFieldAutoSize.LEFT;
      
    39.             textField.height = 20;
      
    40.             textField.background = true;
      
    41.             textField.backgroundColor = 0xC0C0C0;
      
    42.                         textField.selectable = false;
      
    43.             textField.x = -1;
      
    44.             textField.y = -2;
      
    45.             textField.text = "5月30日FLASH专家交流会火热报名中!!! 请访问 WWW.SWFSH.COM";
      
    46.

      
    47.             var format:TextFormat = new TextFormat();
      
    48.             format.color = 0;
      
    49.             format.size = 14;
      
    50.                         format.font = "宋体";
      
    51.             textField.setTextFormat(format);
      
    52.

      
    53.             sourceSprite.addChild(textField);
      
    54.             data = new BitmapData(textField.width, 16);
      
    55.             data.draw(sourceSprite);
      
    56.             sourceSprite.removeChild(textField);
      
    57.             addChild(sourceSprite);
      
    58.             frameCount = -31;
      
    59.             addEventListener(Event.ENTER_FRAME, onEnterFrame);
      
    60.         }
      
    61.

      
    62.                 /**
      63.                  * 逐帧绘制
      64.                  
    */            
      
    65.         private function onEnterFrame(event:Event):void
      
    66.         {
      
    67.             frameCount++;
      
    68.             if (frameCount > data.width)
      
    69.                 frameCount = -31;
      
    70.             panel.graphics.clear();
      
    71.

      
    72.             for (var y:int = 0; y < 16; y++)
      
    73.             {
      
    74.                 for (var x:int = 0; x < 71; x++)
      
    75.                 {
      
    76.                     var pixel:uint;
      
    77.                     if (x + frameCount < 0 || x + frameCount > data.width - 1)
      
    78.                         pixel = 1;
      
    79.                     else
      
    80.                         pixel = data.getPixel(x + frameCount, y);
      
    81.

      
    82.                     if (pixel == 0)
      
    83.                         drawDot(10 + x * 1040 + y * 104.50xFF00000x800000);
      
    84.                     else
      
    85.                         drawDot(10 + x * 1040 + y * 104.50x6000000x400000);
      
    86.                 }
      
    87.             }
      
    88.         }
      
    89.

      
    90.         /**
      91.          * 具体的描点方法
      92.          * @param    x            点の中心の X 座標
      93.          * @param    y            点の中心の Y 座標
      94.          * @param    size        点の大きさ
      95.          * @param    colorLight    明るい場所の色
      96.          * @param    colorDark    暗い場所の色
      97.          
    */
      
    98.         private function drawDot(x:Number, y:Number, size:Number, colorLight:uint, colorDark:uint):void
      
    99.         {
     
    100.             var colors:Array = [colorLight, colorDark];
     
    101.             var alphas:Array = [1.01.0];
     
    102.             var ratios:Array = [0255];
     
    103.             var matrix:Matrix = new Matrix();
     
    104.             matrix.createGradientBox(size * 2,
     
    105.                                      size * 2,
     
    106.                                      0,
     
    107.                                      x - size,
     
    108.                                      y - size);
     
    109.

     
    110.             panel.graphics.lineStyle();
     
    111.             panel.graphics.beginGradientFill(GradientType.RADIAL,
     
    112.                                         colors,
     
    113.                                         alphas,
     
    114.                                         ratios,
     
    115.                                         matrix);
     
    116.             panel.graphics.drawCircle(x, y, size);
     
    117.             panel.graphics.endFill();
     
    118.         }
     
    119.

     
    120.     }
     
    121.

     
    122. }


     效果

    /Files/4kapple/flash/SwfSHBanner_0530.swf 

  • 相关阅读:
    Canvas API
    Lind.DDD.Aspects通过Plugins实现方法的动态拦截~Lind里的AOP
    Lind.DDD.LindMQ~关于持久化到Redis的消息格式
    MongoDB学习笔记~根据子集合里某个属性排序
    大叔最新课程~MVC核心技术剖析
    大叔最新课程~EF核心技术剖析
    hdu4300之KMP&&EKMP
    HDU 2594 Simpsons’ Hidden Talents KMP
    邮箱工具(尚未完成)的几个组件类
    java--折半查找
  • 原文地址:https://www.cnblogs.com/4kapple/p/1893381.html
Copyright © 2011-2022 走看看