正大国际集团线上抡盘咋开用户名

查看: 1945|回复: 12
如何在OSG里动态显示文字啊?
我根据《OSG程序设计》里的文字显示的程序,在里面设置了一个变量“tip”,当“tip”内容变化时OSG中显示的文字不发生变化,这是怎么回事啊?要做更新回调吗?该如何做呢?谢谢啊~~
有没有人告诉我~~
setTExt不行吗?
fenma3422 发表于
setTExt不行吗?
我用的就是“setTest”,程序单步运行的时候看到我设置的变量变化了,但就是不显示变化呢
确实是做更新回调,来更新显示
本帖最后由 wanghuisoftware 于
10:45 编辑
我实现的功能:鼠标移到到哪里,Tip出现在相应节点附近,显示该节点的信息,如截图所示。
& &&&具体实现方法是:
& && &&&1.在场景初始渲染时,加入文本节点(传递至pickHandler中),设置文本位置在可视化窗体外,并设置动态更新:text-&setPosition(osg::Vec3(-_width,2*_height,-1));text_Geode-&setDataVariance(osg::Object:YNAMIC);text-&setDataVariance(osg::Object:YNAMIC)。
& && &&&2.在MouseMove事件中,获得鼠标拾取的对象,设置对本对象内容与位置即可。m_tiptext-&setText(s);m_tiptext-&setPosition(osg::Vec3(_mx,_my,-1))。
& && &&&3.以上方法在MFC中使用,仅供参考。
(5.6 KB, 下载次数: 12)
10:41 上传
点击文件名下载附件
(5.79 KB, 下载次数: 6)
10:41 上传
点击文件名下载附件
很遗憾,我自己用setTExt就可以,你可能是其他问题导致的吧
fenma3422 发表于
很遗憾,我自己用setTExt就可以,你可能是其他问题导致的吧
你的方法做了更新回调了吗?我是要做“碰撞预警”信息的动态显示的(要碰撞了就预告提示信息“注意安全”,如果相撞了就弹出“碰撞了”),谢谢啊
我的是在事件处理时改变的
在任何时候都可以的,这个功能太基本了,在很多教程资料和书里的例子都能找到
TEXT设置更新回调即可~~~~~~~~~~
TEXT设置更新回调即可~~~~~~~~~~
tianxiao888 发表于
TEXT设置更新回调即可~~~~~~~~~~
Powered by&&& 经过两天的辛苦的调试,终于写好了在osg中实时显示中文信息的效果。中间遇到两个问题,一个是中文显示,一个是动态显示。在这过程中会出现程序崩溃的现象,相信做过的人肯定深有体会。其实解决的办法很简单,就是再添加两行代码。一行:setlocale(LC_ALL,".936");是配置中文显示地域化信息,二行:hudText-&setDataVariance(osg::Object::DYNAMIC);是为了动态更新时候不出现程序崩溃。
void setupProperties(osgText::Text& textObject,osgText::Font* font,float size,const osg::Vec3& pos )
textObject.setFont(font);//
textObject.setCharacterSize(size);//字体大小
textObject.setPosition(pos);
textObject.setColor(osg::Vec4(0.0,1.0,0.0,1.0));
textObject.setAlignment(osgText::Text::CENTER_BOTTOM);//文字显示方向
//textObject.setAxisAlignment(osgText::Text::SCREEN);//获取文字对称成方式正对屏幕方向
//textObject.setCharacterSizeMode(osgText::Text::SCREEN_COORDS);//跟随视角不断变化,离物体越远,文字越大
textObject.setAutoRotateToScreen(false);//跟随视角不断变化,但离物体越远,文字越小,和现实当中像类似
textObject.setBackdropType(osgText::Text::OUTLINE);//对文字进行描边
textObject.setBackdropColor(osg::Vec4(1.0,1.0,0.0,1.0));//描边颜色
textObject.setDrawMode(osgText::Text::TEXT | osgText::Text::BOUNDINGBOX);//添加文字边框
textObject.setAxisAlignment(osgText::Text::XZ_PLANE);//获取文字对称成方式
void createContent(osgText::Text& textObject,const char* string)
int requiredSize=mbstowcs(NULL,string,0);//如果mbstowcs第一参数为NULL那么返回字符串的数目
wchar_t* wText=new wchar_t[requiredSize+1];
mbstowcs(wText,string,requiredSize+1);//由char转换成wchar类型
textObject.setText(wText);
osg::ref_ptr&osg::Group& ShowDynamicTexts()
setlocale(LC_ALL,".936");// 配置地域化信息
const char* titleString="时间";
osg::Group* rootNode = new osg::G
osg::Geode* geode
= new osg::G
rootNode-&addChild(geode);
titleTime=new osgText::T
m_arialFont = osgText::readFontFile("fonts/simkai.ttf");
titleTime-&setDataVariance(osg::Object::DYNAMIC);
setupProperties(*titleTime,m_arialFont,30.0f,osg::Vec3(200,f));
createContent(*titleTime,titleString);
geode-&addDrawable(titleTime.get());
return rootN
void RefreshTimeText(string textString)
setlocale(LC_ALL,".936");// 配置地域化信息
createContent(*titleTime,textString.data());
阅读(...) 评论() &建议使用以上版本或、浏览器访问本站,获得更好的用户体验。photoshop教程子分类iOS在固定的label上动态显示所有文字
投稿:daisy
字体:[ ] 类型:转载 时间:
这篇文章给大家主要介绍了iOS中如何实现,在固定的label上动态显示所有文字的方法,文中给出了示例和思路,对大家的理解很有帮助,感兴趣的朋友们下面来一起看看吧。
照例先看下效果图:
创建一个view 作为所有内容的父控件, 并且添加到上面一个 label, 作为显示文字的载体
UILabel* contentLabel = [[UILabel alloc] init];
[contentLabel sizeToFit];
contentLabel.backgroundColor = [UIColor clearColor]; _contentLabel = contentL [self addSubview:self.contentLabel];
给内容view的layer添加一个mask层, 并且设置其范围为整个view的bounds, 这样就让超出view的内容不会显示出来
CAShapeLayer* maskLayer = [CAShapeLayer layer];
maskLayer.path = [UIBezierPath bezierPathWithRect:self.bounds].CGP
self.layer.mask = maskL
给label添加动画
CAKeyframeAnimation* keyFrame = [CAKeyframeAnimation animation];
keyFrame.keyPath = @"transform.translation.x";
keyFrame.values = @[@(0), @(-space), @(0)];
keyFrame.repeatCount = NSIntegerM
keyFrame.duration = self.speed * self.contentLabel.text.
keyFrame.timingFunctions = @[[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut], [CAMediaTimingFunction functionWithControlPoints:0 :0 :0.5 :0.5]];
keyFrame.delegate =
[self.contentLabel.layer addAnimation:keyFrame forKey:nil];
CFDynamicLabel* testLabel = [[CFDynamicLabel alloc] initWithFrame:CGRectMake(100, 300, 180, 21)];
// 设置滚动速度
testLabel.speed = 0.6;
[self.view addSubview:testLabel];
// 设置基本属性
testLabel.text = @"我不想说再见,不说再见,越长大越孤单";
testLabel.textColor = [UIColor yellowColor];
testLabel.font = [UIFont systemFontOfSize:23];
testLabel.backgroundColor = [UIColor grayColor];
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 gta5线上输入用户名 的文章

 

随机推荐