-
Notifications
You must be signed in to change notification settings - Fork 0
/
fontengine.as
125 lines (108 loc) · 4.33 KB
/
fontengine.as
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
class fontengine{
static var letter_wid = 4;
static var letter_hei = 6;
static var letter_x_offset = 0.2;
static var letter_y_offset = 1;
static var default_separators = " \n";
static function printIn( what, where, style, xOffset, yOffset, maxX, isDescr):MovieClip{
var isArray = (typeof(what) +'')== 'object'
// if it is an array, then it should be any params like descriptions!
if (style == undefined) style = 'test';
if (xOffset == undefined) xOffset = 0;
if (yOffset == undefined) yOffset = 0;
if (maxX == undefined) maxX = -1;
if (what == undefined){ trace('No string to write!!'); }
if (where == undefined) where = _root;
if (isDescr == undefined) isDescr = false;
yOffset += letter_hei;
var charNumber = 0;
var curX = 0;
var curY = 0;
if (where.textHandlerCount == undefined)
where.textHandlerCount = 0;
where.lastWord = "";
var th = where.attachMovie('letter_handler', 'text_handler_' + where.textHandlerCount, where.getNextHighestDepth());
th.wordCount = 0;
if (isDescr){
th.attachMovie('description_handler', 'bub', th.getNextHighestDepth());
curX += 5; curY += 5;
}
var params;
if (isArray){
params = what;
what = what[0];
}
var nowInWhat:Number = 0;
var descrptionUsed = 0;
while(nowInWhat < what.length){
var newWord:String = "";
var descriptionAble = 0;
var oneWord = false;
do{
if (what.charAt(nowInWhat) == '@'){
oneWord = !oneWord; // except @
if (!descriptionAble) descriptionAble = ++descrptionUsed;
}
else
newWord += what.charAt(nowInWhat); // add to word, or
nowInWhat++;
}while(default_separators.indexOf(what.charAt(nowInWhat)) < 0 || oneWord);
var wd = th.attachMovie('word_handler', 'wrd'+(++th.wordCount), th.getNextHighestDepth());
var wCurX = 0;
for (var i = 1 - 1 * (th.wordCount == 1); i < newWord.length; ++i){
var letter = wd.attachMovie('letter_' + style, 'l'+i, wd.getNextHighestDepth());
var fr = newWord.charCodeAt(i); if (fr > 900) fr -= 900;
letter.gotoAndStop(fr);
letter._x = wCurX + letter_wid/2;
wCurX += letter_x_offset + ((letter._width > .2)? letter._width : letter_wid);
letter._y = 4;
}
wd.b._width = wCurX;
var addWid = wd._width;
if (curX + addWid >= maxX){
curX = 0; curY += letter_hei;
}
wd._x = curX;
wd._y = curY;
curX += addWid + letter_wid;
if (isArray && descriptionAble > 0){
//printIn(params[descriptionAble], where, style, curX, curY, 100);
wd.mouseOver = false;
wd.timer = 0;
wd.textStyle = style;
wd.descr = params[descriptionAble];
wd.printed = null;
wd.onMouseMove = function (){
this.mouseOver = (this.b.hitTest(_root._xmouse, _root._ymouse));
}
wd.onEnterFrame = function (){
if (!this.mouseOver) { this.timer = 0; if (this.printed != null){ this.printed.removeMovieClip(); this.printed = null; } return; }
this.timer ++;
if (this.timer != 41) return;
this.printed = printIn(this.descr, _root, this.textStyle, _root._xmouse, _root._ymouse, 100, true);
}
ut.colorTo(wd, 40, 100, 10);
}
}
where.textHandlerCount++;
th._xscale = th._yscale = 100;
if (th.bub != undefined){
th.bub.d._y = curY + 10.7;
th.bub.b._height = Math.max(0, curY - 9.9);
}
th.cacheAsBitmap = true;
th._x = xOffset; th._y = yOffset;
return th;
}
static function test(){
var s = '';
var words = new Array('òû','âñ¸','ïîíèìàåøü','òàêîé','òóïîé','áîæå','ìîé','êàê','òàêèõ','âîîáùå','ùåìëÿ','íîñèò','îëî','îà','çàçà','ïðîñòî','ñëó÷àé','íû','é','íàáîð','áóêâ','è','ñëîâ','âäðóã','ïîâåçå¸ò','è','òóò','íàéäåò','ñìûñë','êàêîé','íèáóäü','÷óõàí');
for (var i = 0; i < 200; ++i) s+=' ' + words[random(words.length)];
printIn(
new Array('Íàíîñèò ïÿòíàäöàòü óðîíà, ðàñïðåäåëåííîãî @ïî âàøåìó æåëàíèþ@ ìåæäó'
+' @ëþáûì@ ÷èñëîì ïåðìàíåíòîâ. Ýòî î÷åíü âàæíî, ÷óâàê. Ðåàëüíî âàæíî, ïîíèìàåøü? ×óâàà'
+'àààààê. Ñòîé, îñòàíîâèñü, ýòî æå ! @ìàêñåìêà@.' + s,
'ýòî - ïðîñòî îõóåííî, ÷óâàê!','ËÞÁÛÌ! ÑÓÊÀ! ÏÐÎÑÒÎ ËÞÁÛÌ!', 'Ìàêñåì Ìàêñåìîâè÷ Òóðòóøêàí - î÷åíü óâàæàåìûé áîìæ. Ìàêñåì Ìàêñåìîâè÷ Òóðòóøêàí - î÷åíü óâàæàåìûé áîìæ.Ìàêñåì Ìàêñåìîâè÷ Òóðòóøêàí - î÷åíü óâàæàåìûé áîìæ.Ìàêñåì Ìàêñåìîâè÷ Òóðòóøêàí - î÷åíü óâàæàåìûé áîìæ.Ìàêñåì Ìàêñåìîâè÷ Òóðòóøêàí - î÷åíü óâàæàåìûé áîìæ.Ìàêñåì Ìàêñåìîâè÷ Òóðòóøêàí - î÷åíü óâàæàåìûé áîìæ.'),
undefined, undefined, 0, 0, 200 );
}
}