这里有两种方案实现了打字机的效果。一种是使用系统字体,一种是使用TTF字体。下面一一介绍。
1.使用LabelTTF实现。
在cocos3.x中Label有了新的API,新的Label将每个字符作为一个Letter来存储。通过getLetter(int index)方法得到。得到的Letter实际上是一个个精灵(Sprite)。
上代码:
Label * l = Label ::createWithTTF ( StringRes:: getText ("print_text" ),"ygyxsziti2.0.ttf",20 ); addChild (l ); l ->setPosition ( Vec2( 400,240 )); int index = 0 ; while ( l ->getLetter ( index) != nullptr ) { l ->getLetter ( index)-> setVisible (false ); index ++; } int s = l ->getString (). size(); log ("index:%d___s:%d",index,s ); index = 0; while ( l ->getLetter ( index) != nullptr ) { l ->getLetter ( index)-> runAction ( Sequence ::create ( DelayTime ::create ( index * 0.1f ),Show ::create (),nullptr ) ); index ++; }
上代码:
static std:: string content = "aaaabbbbccccddd eeefff,dossad "; static int n = 0 ; static Label * l2 = Label:: create (); l2 ->setString ( ""); l2 ->setAnchorPoint ( Vec2( 0,0.5f )); l2 ->setSystemFontSize ( 20); addChild (l2 ); l2 ->setPosition ( Vec2( 400,100 )); this ->schedule ([&]( float dt ){ std :: string str = content. substr (0,n ); //n += 3;//中文加3 n += 1;//英文加1 l2 ->setString ( str); if ( n > content. length ()) { unschedule ("schedule_callback" ); } },0.1f,"schedule_callback" );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。