像下面的代码一样,m_vSprites是shred_ptr的向量,如果他的一个元素更新失败,我想从向量中删除它,但是当我想使用erase时我的代码崩溃了.但我不知道为什么,任何人都可以提供帮助?
我需要使用擦除的原因是因为我的应用程序会不断地在向量中添加元素,但如果某些元素满足其杀死条件,它还会不断地从向量中擦除对象.如果我没有删除它,那么当程序工作时,向量会变得很大!
RECT rcOldSpritePos;
typedef boost::shared_ptr<Sprite> SmartSprite;
vector<SmartSprite>::iterator siSprite;
for (siSprite = m_vSprites.begin(); siSprite != m_vSprites.end();)
{
// Save the old sprite position in case we need to restore it
rcOldSpritePos = (*siSprite)->getPosition();
if (!((*siSprite)->update()))
{
// Kill the sprite
//siPreviousSprite = siSprite-1;
siSprite = m_vSprites.erase(siSprite);
}
else
{
siSprite++;
// See if the sprite collided with any others
if (checkSpriteCollision(*siSprite))
// Restore the old sprite position
(*siSprite)->setPosition(rcOldSpritePos.left, rcOldSpritePos.top);
}
}
Run Code Online (Sandbox Code Playgroud)
我已根据有人的建议修改了代码,但在删除功能方面仍然失败,请问有人有什么建议吗?
更多信息我如何在vecotr中添加元素
这有什么问题?
SmartSprite sprite;
if (0 < enemies.size()) …Run Code Online (Sandbox Code Playgroud) 我认为这个问题已被多次提出过.其中一些可以在Chrome或Firefox上运行.
我尝试了解决方案:
.rc{
width: 250px;
height: 250px;
border-radius: 100%;
-webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);
-webkit-transform: rotate(0.000001deg);
-webkit-border-radius: 100%;
-moz-border-radius: 100%;
}
Run Code Online (Sandbox Code Playgroud)
将此添加到div类,并将视频标记的高度更改为
<div class="rc"><video id="localVideoStream" height="250" autoplay muted></video></div>
Run Code Online (Sandbox Code Playgroud)
视频源来自webrtc,使用getusermedia,视频流可以成功地成形为圆圈,并使用rc类立即显示在网页上.
问题是每次,视频源都不会处于圆形的中心,它会保持一点左侧.例如,当我的脸在镜头前时,只有一部分脸部位于圆形的右侧.它不在圆圈的中心.谁知道如何解决这个问题?
谢谢.