[资料库]用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 

posted on 2010-12-01 14:39  咖啡色  阅读(321)  评论(0编辑  收藏  举报