OSDN Git Service

widgetのつづりを修正。ジャンプ制御の式を変更。
[h58pcdgame/GameScriptCoreLibrary.git] / www / corelib / classes / MessageWidgetClass.js
1 var MessageWidgetClass = function(manager, args)
2 {
3         MessageWidgetClass.base.apply(this, arguments);
4         
5         this.downKeyPushed = false;
6         this.message = args[0];
7         this.origin = new Point2D(10,240);
8         this.size = new Point2D(620, 230);
9         
10         //\89ü\8ds\82ª\93ü\82Á\82Ä\82¢\82é\82Æ\82±\82ë\82Å\88ê\8e\9e\92â\8e~\82µ\81«\83L\81[\82Ì\89\9f\89º\82ð\91Ò\82Â
11         
12         this.messageIndex = 0;
13         this.interval = 15;
14         this.intervalCount = 0;
15         
16 }.extend(WidgetClass, {
17         attached : function(){
18                 var w = this;
19                 this.manager.pauseStage(function()
20                 {
21                         // pauseStage\82É\92¼\90Útick\82ð\90Ý\92u\82·\82é\82Ætick\93à\82Ìthis\82Åmanager\82ª\8eæ\93¾\82³\82ê\82Ä\82µ\82Ü\82¤
22                         return w.tick();
23                 });
24         },
25         tick : function(){
26                 if(!this.manager.keyState.downArrow) this.downKeyPushed = false;
27                 if(this.intervalCount >= this.interval)
28                 {
29                         if(this.message[this.messageIndex] == '\n')
30                         {
31                                 if(!this.downKeyPushed)
32                                 {
33                                         if(this.manager.keyState.downArrow)
34                                         {
35                                                 this.downKeyPushed = true;
36                                                 this.messageIndex++;
37                                         }
38                                 }
39                         }else
40                         {
41                                 this.messageIndex++;
42                         }
43                         if(this.messageIndex >= this.message.length)
44                         {
45                                 //\83\81\83b\83Z\81[\83W\82ð\95Â\82\82é
46                                 this.manager.resumeStage();
47                                 return false;
48                         }
49                         this.intervalCount = 0;
50                 }else
51                 {
52                         this.intervalCount++;
53                 }
54                 return true;
55         },
56         draw : function(){
57                 this.manager.mainContext.globalAlpha = 0.5;
58                 this.manager.mainContext.fillRect(this.origin.x, this.origin.y, this.size.x, this.size.y);
59                 this.manager.mainContext.globalAlpha = 1.0;
60                 
61                 var lineHead = 0;
62                 var lines = [];
63                 var height = 0;
64                 var ysiz = 16;
65                 for(var index = 0; index <= this.messageIndex; index++)
66                 {
67                         var siz = this.manager.mainContext.measureText(this.message.slice(lineHead, index + 1 - lineHead));
68                         if(siz.x > this.size.x || this.message[index] == "\n"){
69                                 lines.push(this.message.slice(lineHead, index - lineHead));
70                                 lineHead = index;
71                                 height += ysiz;
72                         }
73                 }
74                 
75                 var yloc = this.origin.y + this.size.y - height;
76                 for(var i = 0; i < lines.length; i++)
77                 {
78                         var line = lines[i];
79                         if(yloc >= this.origin.y)
80                         {
81                                 drawText(this.manager.mainContext, line, this.origin.x, yloc);
82                         }
83                         
84                         yloc += ysiz;
85                 }
86                 
87                 
88                 
89         }
90 });