免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
Board logo

标题: 关于TextField文本对象旋转后不见的问题 [打印本页]

作者: 肤浅pcy    时间: 2016-6-17 14:12     标题: 关于TextField文本对象旋转后不见的问题

下面是我写的类,是一个包含textfield的气球,我把textfield对象加到一个sprite容器后给它旋转还是会有不见文字对象的情况,这个怎么解决?
  1. package  {
  2.        
  3.         import flash.display.Sprite;
  4.         import flash.display.GradientType;
  5.         import flash.geom.Matrix;
  6.         import flash.text.TextField;
  7.         import flash.text.TextFormat;
  8.         import flash.text.TextFieldAutoSize;
  9.         import flash.filters.GlowFilter;
  10.        
  11.        
  12.         public class Balloon extends Sprite {
  13.                
  14.                 private var color:uint;
  15.                 private var str:String;
  16.                 private var txt:TextField;
  17.                 private var tf:TextFormat;
  18.                 private var sp:Sprite;//用来承载气球的容器,为了能够让气球旋转时,能看见里面的字
  19.                 public var vy:Number;//设置气球的y方向的速度

  20.                
  21.                 public function Balloon(color:uint,str:String) {
  22.                         vy=0;
  23.                         this.color=color;
  24.                         this.str=str;
  25.                         sp=new Sprite();
  26.                         addChild(sp);
  27.                         init();
  28.                 }
  29.                
  30.                 private function init():void{
  31.                         addText();
  32.                         draw();
  33.                        
  34.                 }
  35.                
  36.                 private function draw():void{
  37.                         var colors:Array = [0xffffff, color];
  38.                         var alphas:Array = [1, 1];
  39.                         var ratios:Array = [0, 255];
  40.                         var matrix:Matrix = new Matrix();
  41.                         matrix.createGradientBox(100, 100, 0, 0, 0);
  42.                         graphics.beginGradientFill(GradientType.RADIAL, colors, alphas, ratios, matrix);
  43.                         graphics.moveTo(0,30);
  44.                         graphics.curveTo(2,0,25,0);
  45.                         graphics.curveTo(48,0,50,30);
  46.                         graphics.curveTo(45,70,25,70);
  47.                         graphics.curveTo(5,70,0,30);
  48.                         graphics.endFill();
  49.                 }
  50.                
  51.                 private function addText():void{
  52.                        
  53.                         txt=new TextField;
  54.                         txt.selectable=false;
  55.                         txt.width=50;
  56.                         txt.autoSize=TextFieldAutoSize.CENTER;
  57.                         txt.text=str;
  58.                         txt.textColor=((color&0xff)<<16)|((color>>16)<<8)|(color>>8&0xff)
  59.                         txt.x=18;
  60.                         txt.y=0;
  61.                        
  62.                         tf=new TextFormat();
  63.                         tf.size=30;
  64.                         tf.font="Apple Chancery";
  65.                         txt.setTextFormat(tf);
  66.                         txt.filters=[new GlowFilter(0x00000)];
  67.                         txt.cacheAsBitmap=true;
  68.                         sp.addChild(txt);
  69.                 }
  70.                
  71.         }
  72.        
  73. }
复制
下面是我在fla文件的时间轴上用这个类的实例,并给上rotation的值,然后就不见气球文字了。
  1. var btn:Balloon=new Balloon(0xff0000,"A");
  2. addChild(btn);
  3. btn.rotation=1;
  4. btn.x=100;
  5. btn.y=100;
复制

作者: flashroad    时间: 2016-6-17 15:11

这个情况我遇见过  放入容器内 即可解决
你将sprite改为MovieClip试试
作者: 肤浅pcy    时间: 2016-6-17 15:33

回复 2# flashroad


   好的,这就来试
作者: 肤浅pcy    时间: 2016-6-17 15:46

回复 2# flashroad


   刚刚测试,没有用,我把类文件继承自MovieClip也没有用。等会儿我传一个超级简单的游戏文件,自己去年做的,不过有问题:游戏初次玩,气球进入屏幕的位置是没有问题的,不过当点击Play Again后位置就有问题了,是不是我的气球数组对象的引用已经改变啊。http://pan.baidu.com/s/1skFhVFB  这个百度云链接,因为代码太长,不好贴出来,麻烦了
作者: flashroad    时间: 2016-6-17 18:26

回复 3# 肤浅pcy


    百度了一下  没想到一下子就找到了解决方法:
rotation修改为rotationZ即可解决


下面是原文地址:
http://bbs.9ria.com/forum.php?mod=viewthread&tid=273378
作者: 肤浅pcy    时间: 2016-6-18 10:02

回复 5# flashroad

嗯嗯,试了可以的,谢啦,还有能不能有空看看我那个分享的文件代码问题啊,拜谢
作者: flashroad    时间: 2016-6-18 17:13

回复 4# 肤浅pcy


    代码太多了,没有耐心研究

重点看 游戏重玩 按钮的代码那一块
应该调用游戏开始 的 函数
在游戏开始函数上面 将 游戏开始函数内用到的所有的变量的值 都设为初始值 即可
作者: 肤浅pcy    时间: 2016-6-20 22:32

回复 7# flashroad


   好的,明天试试




欢迎光临 flash之路-flash技术交流 (http://flashroad.dhlog.com/) Powered by Discuz! 7.2