showtext.xml.backup-2021-02-01-09-39-53 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <krpano>
  2. <textstyle name="skintext" font="黑体" fontsize.no-mobile="14" fontsize.mobile="18" bold="false"
  3. background="true" backgroundcolor="0x000000" backgroundalpha="0.667"
  4. border="true" borderwidth="2" bordercolor="0xFFFFFF" roundedge="5"
  5. textcolor="0xFFFFFF"
  6. padding="5 7"
  7. textalign="center"
  8. yoffset.no-touch="-5"
  9. yoffset.touch="-40"/>
  10. <!-- predefine a DEFAULT textstyle element -->
  11. <textstyle name="DEFAULT" />
  12. <!-- the automatic running (autorun=preinit) install action -->
  13. <action name="showtext_install" autorun="preinit">
  14. <!-- redirect the build-in 'showtext' action to the 'showtext_xml' action: -->
  15. set(showtext, action(showtext_xml,'%%1','%%2') );
  16. <!-- initialize internal variables -->
  17. set(showtext_style, DEFAULT);
  18. set(showtext_prevstyle, null);
  19. set(showtext_text, '');
  20. set(showtext_prevtext, '');
  21. set(showtext_timeout, 0.1);
  22. set(showtext_fadeout, 0.0);
  23. set(showtext_clipping, false);
  24. </action>
  25. <action name="showtext_xml">
  26. set(showtext_style, DEFAULT);
  27. if('%2' != 'null', ifnot(textstyle['%2'], trace('textstyle "%2" not found'); , set(showtext_style,'%2')); );
  28. set(showtext_text, '%1');
  29. if(showtext_text != showtext_prevtext,
  30. copy(showtext_prevtext, showtext_text);
  31. showtext_createnewtext();
  32. ,
  33. delayedcall(showtext_timer, get(showtext_timeout), showtext_hide() );
  34. );
  35. </action>
  36. <action name="showtext_createnewtext">
  37. <!-- stop running mouse and alpha update calls -->
  38. stopdelayedcall(showtext_mouseupdates);
  39. stoptween(layer[showtext_tf].alpha);
  40. <!-- remove the old textfield when the style has changed -->
  41. if(showtext_style != showtext_prevstyle,
  42. copy(showtext_prevstyle, showtext_style);
  43. removelayer(showtext_tf);
  44. );
  45. <!-- create a new textfield plugin layer -->
  46. addlayer(showtext_tf);
  47. <!-- create 'shortcut' variables (tf,ts) for faster access -->
  48. copy(tf, layer[showtext_tf]);
  49. copy(ts, textstyle[get(showtext_style)]);
  50. <!-- get the position settings -->
  51. if(ts.origin !== null, copy(ts_origin, ts.origin), set(ts_origin, 'cursor'));
  52. if(ts.edge !== null, copy(ts_edge, ts.edge), set(ts_edge, 'bottom'));
  53. if(ts.xoffset !== null, copy(ts_xoffset, ts.xoffset), set(ts_xoffset, 0));
  54. if(ts.yoffset !== null, copy(ts_yoffset, ts.yoffset), set(ts_yoffset, -3));
  55. <!-- set the position settings -->
  56. if(ts_origin == 'cursor',
  57. set(tf.align, 'lefttop');
  58. showtext_movetomouse();
  59. ,
  60. copy(tf.align, ts_origin);
  61. );
  62. copy(tf.edge, ts_edge);
  63. copy(tf.ox, ts_xoffset);
  64. copy(tf.oy, ts_yoffset);
  65. <!-- get the font settings -->
  66. if(ts.font !== null, copy(ts_font, ts.font), set(ts_font, 'Times'));
  67. if(ts.fontsize !== null, copy(ts_fontsize, ts.fontsize), set(ts_fontsize, 12.0));
  68. if(ts.bold !== null, copy(ts_bold, ts.bold), set(ts_bold, true));
  69. if(ts.italic !== null, copy(ts_italic, ts.italic), set(ts_italic, false));
  70. if(ts.textcolor !== null, copy(ts_textcolor, ts.textcolor), set(ts_textcolor, 0x000000));
  71. if(ts.textalign !== null, copy(ts_textalign, ts.textalign), set(ts_textalign, 'left'));
  72. <!-- use the font settings to build the CSS style -->
  73. set(tf_css, '');
  74. tohex(ts_textcolor, '#', 6);
  75. txtadd(tf_css, 'font-family:',get(ts_font),'; font-size:',get(ts_fontsize),'px; color:',get(ts_textcolor),'; ');
  76. if(ts_textalign != 'none', txtadd(tf_css, get(tf_css), 'text-align:',get(ts_textalign),'; '));
  77. if(ts_bold, txtadd(tf_css, 'font-weight:bold; '));
  78. if(ts_italic, txtadd(tf_css, 'font-style:italic; '));
  79. if(ts.css !== null, txtadd(tf_css, get(ts.css)));
  80. copy(tf.css, tf_css);
  81. <!-- size settings -->
  82. if(ts.width !== null AND ts.width !== '', copy(tf.width, ts.width));
  83. if(ts.height !== null AND ts.height !== '', copy(tf.height, ts.height));
  84. if(ts.vcenter !== null AND ts.vcenter !== '', copy(tf.vcenter, ts.vcenter));
  85. if(ts.padding !== null AND ts.padding !== '', copy(tf.padding, ts.padding), set(tf.padding,1));
  86. <!-- background, border, shadow settings -->
  87. if(ts.background !== null, copy(tf.background, ts.background));
  88. if(ts.backgroundcolor !== null, copy(tf.backgroundcolor, ts.backgroundcolor));
  89. if(ts.backgroundalpha !== null, copy(tf.backgroundalpha, ts.backgroundalpha));
  90. if(ts.border !== null, copy(tf.border, ts.border), set(tf.border,true));
  91. if(ts.bordercolor !== null, copy(tf.bordercolor, ts.bordercolor));
  92. if(ts.borderalpha !== null, copy(tf.borderalpha, ts.borderalpha));
  93. if(ts.borderwidth !== null, copy(tf.borderwidth, ts.borderwidth));
  94. if(ts.roundedge !== null, copy(tf.roundedge, ts.roundedge));
  95. if(ts.shadow !== null, copy(tf.shadow, ts.shadow));
  96. if(ts.shadowrange !== null, copy(tf.shadowrange, ts.shadowrange));
  97. if(ts.shadowangle !== null, copy(tf.shadowangle, ts.shadowangle));
  98. if(ts.shadowcolor !== null, copy(tf.shadowcolor, ts.shadowcolor));
  99. if(ts.shadowalpha !== null, copy(tf.shadowalpha, ts.shadowalpha));
  100. if(ts.textshadow !== null, copy(tf.textshadow, ts.textshadow));
  101. if(ts.textshadowrange !== null, copy(tf.textshadowrange, ts.textshadowrange));
  102. if(ts.textshadowangle !== null, copy(tf.textshadowangle, ts.textshadowangle));
  103. if(ts.textshadowcolor !== null, copy(tf.textshadowcolor, ts.textshadowcolor));
  104. if(ts.textshadowalpha !== null, copy(tf.textshadowalpha, ts.textshadowalpha));
  105. <!-- showing settings -->
  106. if(ts.alpha !== null, copy(ts_alpha, ts.alpha), set(ts_alpha, 1.0));
  107. if(ts.showtime !== null, copy(ts_showtime, ts.showtime), set(ts_showtime, 0.1));
  108. if(ts.fadetime !== null, copy(ts_fadetime, ts.fadetime), set(ts_fadetime, 0.0));
  109. if(ts.fadeintime !== null, copy(ts_fadeintime, ts.fadeintime), set(ts_fadeintime, 0.0));
  110. copy(showtext_timeout, ts_showtime);
  111. copy(showtext_fadeout, ts_fadetime);
  112. if(ts_fadeintime GT 0,
  113. set(tf.alpha, 0.0);
  114. tween(layer[showtext_tf].alpha, get(ts_alpha), get(ts_fadeintime), linear);
  115. ,
  116. copy(tf.alpha, ts_alpha);
  117. );
  118. if(ts.noclip !== null, copy(showtext_clipping,ts.noclip), set(showtext_clipping, true));
  119. if(showtext_clipping,
  120. set(tf.onloaded, showtext_do_clipping() );
  121. set(tf.onautosized, showtext_do_clipping() );
  122. );
  123. <!-- special flash-only settings -->
  124. if(ts.embeddedfonts !== null, copy(tf.embeddedfonts, ts.embeddedfonts));
  125. if(ts.effect !== null, copy(tf.effect, ts.effect));
  126. if(ts.blendmode !== null, copy(tf.blendmode, ts.blendmode));
  127. <!-- set the text and the basic settings to start showing the textfield -->
  128. copy(tf.html, showtext_text);
  129. set(tf.enabled, false);
  130. set(tf.zorder, 999999);
  131. if(ts.parent, copy(tf.parent, ts.parent) );
  132. set(tf.url, '%SWFPATH%/plugins/textfield.swf');
  133. <!-- remove the shortcut variables -->
  134. delete(ts);
  135. delete(tf);
  136. <!-- start the text-hiding timer -->
  137. delayedcall(showtext_timer, get(showtext_timeout), showtext_hide() );
  138. </action>
  139. <action name="showtext_do_clipping">
  140. if(showtext_clipping,
  141. layer[showtext_tf].updatepos();
  142. copy(tf_px, layer[showtext_tf].pixelx);
  143. copy(tf_py, layer[showtext_tf].pixely);
  144. if(tf_px LT 0,
  145. sub(layer[showtext_tf].x, tf_px);
  146. ,
  147. add(tf_rightedge, tf_px, layer[showtext_tf].pixelwidth);
  148. if(tf_rightedge GE stagewidth, sub(tf_rightedge,stagewidth); sub(layer[showtext_tf].x,tf_rightedge); );
  149. );
  150. if(tf_py LT 0,
  151. sub(layer[showtext_tf].y, tf_py);
  152. ,
  153. add(tf_bottomedge, tf_py, layer[showtext_tf].pixelheight);
  154. if(tf_bottomedge GE stageheight, sub(tf_bottomedge,stageheight); sub(layer[showtext_tf].y,tf_bottomedge); );
  155. );
  156. );
  157. </action>
  158. <action name="showtext_movetomouse">
  159. copy(layer[showtext_tf].x, mouse.stagex);
  160. copy(layer[showtext_tf].y, mouse.stagey);
  161. showtext_do_clipping();
  162. delayedcall(showtext_mouseupdates, 0, showtext_movetomouse() );
  163. </action>
  164. <action name="showtext_hide">
  165. if(layer[showtext_tf],
  166. tween(layer[showtext_tf].alpha, 0.0, get(showtext_fadeout), linear,
  167. stopdelayedcall(showtext_mouseupdates);
  168. removelayer(showtext_tf);
  169. set(showtext_text, '');
  170. set(showtext_prevtext, '');
  171. );
  172. );
  173. </action>
  174. </krpano>