本文整理汇总了C#中Cocos2D.CCSprite.InitWithTexture方法的典型用法代码示例。如果您正苦于以下问题:C# CCSprite.InitWithTexture方法的具体用法?C# CCSprite.InitWithTexture怎么用?C# CCSprite.InitWithTexture使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cocos2D.CCSprite
的用法示例。
在下文中一共展示了CCSprite.InitWithTexture方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InitWithString
protected virtual bool InitWithString(string theString, string fntFile, CCSize dimentions, CCTextAlignment hAlignment, CCVerticalTextAlignment vAlignment,
CCPoint imageOffset, CCTexture2D texture)
{
Debug.Assert(m_pConfiguration == null, "re-init is no longer supported");
Debug.Assert((theString == null && fntFile == null) || (theString != null && fntFile != null),
"Invalid params for CCLabelBMFont");
if (!String.IsNullOrEmpty(fntFile))
{
CCBMFontConfiguration newConf = FNTConfigLoadFile(fntFile);
if (newConf == null)
{
CCLog.Log("CCLabelBMFont: Impossible to create font. Please check file: '{0}'", fntFile);
return false;
}
m_pConfiguration = newConf;
m_sFntFile = fntFile;
if (texture == null)
{
try
{
texture = CCTextureCache.SharedTextureCache.AddImage(m_pConfiguration.AtlasName);
}
catch (Exception)
{
// Try the 'images' ref location just in case.
try
{
texture =
CCTextureCache.SharedTextureCache.AddImage(System.IO.Path.Combine("images",
m_pConfiguration
.AtlasName));
}
catch (Exception)
{
// Lastly, try <font_path>/images/<font_name>
string dir = System.IO.Path.GetDirectoryName(m_pConfiguration.AtlasName);
string fname = System.IO.Path.GetFileName(m_pConfiguration.AtlasName);
string newName = System.IO.Path.Combine(System.IO.Path.Combine(dir, "images"), fname);
texture = CCTextureCache.SharedTextureCache.AddImage(newName);
}
}
}
}
else
{
texture = new CCTexture2D();
}
if (String.IsNullOrEmpty(theString))
{
theString = String.Empty;
}
if (base.InitWithTexture(texture, theString.Length))
{
m_tDimensions = dimentions;
m_pHAlignment = hAlignment;
m_pVAlignment = vAlignment;
m_cDisplayedOpacity = m_cRealOpacity = 255;
m_tDisplayedColor = m_tRealColor = CCTypes.CCWhite;
m_bCascadeOpacityEnabled = true;
m_bCascadeColorEnabled = true;
m_obContentSize = CCSize.Zero;
m_bIsOpacityModifyRGB = m_pobTextureAtlas.Texture.HasPremultipliedAlpha;
AnchorPoint = new CCPoint(0.5f, 0.5f);
m_tImageOffset = imageOffset;
m_pReusedChar = new CCSprite();
m_pReusedChar.InitWithTexture(m_pobTextureAtlas.Texture, CCRect.Zero, false);
m_pReusedChar.BatchNode = this;
SetString(theString, true);
return true;
}
return false;
}
示例2: CreateFontChars
//.........这里部分代码省略.........
}
kerningAmount = this.KerningAmountForFirst(prev, c);
// unichar is a short, and an int is needed on HASH_FIND_INT
if (!m_pConfiguration.m_pFontDefDictionary.TryGetValue(c, out fontDef))
{
CCLog.Log("cocos2d::CCLabelBMFont: characer not found {0}", (int) c);
continue;
}
rect = fontDef.rect;
rect = CCMacros.CCRectanglePixelsToPoints(rect);
rect.Origin.X += m_tImageOffset.X;
rect.Origin.Y += m_tImageOffset.Y;
CCSprite fontChar;
//bool hasSprite = true;
fontChar = (CCSprite) (GetChildByTag(i));
if (fontChar != null)
{
// Reusing previous Sprite
fontChar.Visible = true;
}
else
{
// New Sprite ? Set correct color, opacity, etc...
//if( false )
//{
// /* WIP: Doesn't support many features yet.
// But this code is super fast. It doesn't create any sprite.
// Ideal for big labels.
// */
// fontChar = m_pReusedChar;
// fontChar.BatchNode = null;
// hasSprite = false;
//}
//else
{
fontChar = new CCSprite();
fontChar.InitWithTexture(m_pobTextureAtlas.Texture, rect);
AddChild(fontChar, i, i);
}
// Apply label properties
fontChar.IsOpacityModifyRGB = m_bIsOpacityModifyRGB;
// Color MUST be set before opacity, since opacity might change color if OpacityModifyRGB is on
fontChar.UpdateDisplayedColor(m_tDisplayedColor);
fontChar.UpdateDisplayedOpacity(m_cDisplayedOpacity);
}
// updating previous sprite
fontChar.SetTextureRect(rect, false, rect.Size);
// See issue 1343. cast( signed short + unsigned integer ) == unsigned integer (sign is lost!)
int yOffset = m_pConfiguration.m_nCommonHeight - fontDef.yOffset;
var fontPos =
new CCPoint(
(float) nextFontPositionX + fontDef.xOffset + fontDef.rect.Size.Width * 0.5f + kerningAmount,
(float) nextFontPositionY + yOffset - rect.Size.Height * 0.5f * CCMacros.CCContentScaleFactor());
fontChar.Position = CCMacros.CCPointPixelsToPoints(fontPos);
// update kerning
nextFontPositionX += fontDef.xAdvance + kerningAmount;
prev = c;
if (longestLine < nextFontPositionX)
{
longestLine = nextFontPositionX;
}
//if (! hasSprite)
//{
// UpdateQuadFromSprite(fontChar, i);
//}
}
// If the last character processed has an xAdvance which is less that the width of the characters image, then we need
// to adjust the width of the string to take this into account, or the character will overlap the end of the bounding
// box
if (fontDef.xAdvance < fontDef.rect.Size.Width)
{
tmpSize.Width = longestLine + fontDef.rect.Size.Width - fontDef.xAdvance;
}
else
{
tmpSize.Width = longestLine;
}
tmpSize.Height = totalHeight;
tmpSize = new CCSize(
m_tDimensions.Width > 0 ? m_tDimensions.Width : tmpSize.Width,
m_tDimensions.Height > 0 ? m_tDimensions.Height : tmpSize.Height
);
ContentSize = CCMacros.CCSizePixelsToPoints(tmpSize);
}
示例3: ReusedTileWithRect
private CCSprite ReusedTileWithRect(CCRect rect)
{
if (m_pReusedTile == null)
{
m_pReusedTile = new CCSprite();
m_pReusedTile.InitWithTexture(m_pobTextureAtlas.Texture, rect, false);
m_pReusedTile.BatchNode = this;
}
else
{
// XXX HACK: Needed because if "batch node" is nil,
// then the Sprite'squad will be reset
m_pReusedTile.BatchNode = null;
// Re-init the sprite
m_pReusedTile.SetTextureRect(rect, false, rect.Size);
// restore the batch node
m_pReusedTile.BatchNode = this;
}
return m_pReusedTile;
}
示例4: ReusedTileWithRect
private CCSprite ReusedTileWithRect(CCRect rect)
{
if (m_pReusedTile == null)
{
m_pReusedTile = new CCSprite();
m_pReusedTile.InitWithTexture(m_pobTextureAtlas.Texture, rect, false);
m_pReusedTile.BatchNode = this;
}
else
{
// XXX: should not be re-init. Potential memeory leak. Not following best practices
// XXX: it shall call directory [setRect:rect]
m_pReusedTile.InitWithTexture(m_pobTextureAtlas.Texture, rect, false);
// Since initWithTexture resets the batchNode, we need to re add it.
// but should be removed once initWithTexture is not called again
m_pReusedTile.BatchNode = this;
}
return m_pReusedTile;
}
示例5: CreateFontChars
public void CreateFontChars()
{
int nextFontPositionX = 0;
int nextFontPositionY = 0;
char prev = (char)255;
int kerningAmount = 0;
CCSize tmpSize = CCSize.Zero;
int longestLine = 0;
int totalHeight = 0;
int quantityOfLines = 1;
if (string.IsNullOrEmpty(this._text))
{
return;
}
int textLength = this._text.Length;
var charSet = this._fontConfig.CharacterSet;
if (charSet.Count == 0)
{
throw (new InvalidOperationException("Can not compute the size of the font because the character set is empty."));
}
for (int i = 0; i < textLength - 1; ++i)
{
if (this._text[i] == '\n')
quantityOfLines++;
}
totalHeight = this._fontConfig.CommonHeight * quantityOfLines;
nextFontPositionY = 0 - (this._fontConfig.CommonHeight - this._fontConfig.CommonHeight * quantityOfLines);
CCBMFontDef fontDef = null;
CCRect rect;
for (int i = 0; i < textLength; i++)
{
char c = this._text[i];
if (c == '\n')
{
nextFontPositionX = 0;
nextFontPositionY -= _fontConfig.CommonHeight;
continue;
}
if (charSet.IndexOf(c) == -1)
{
CCLog.Log("Cocos2D.CCLabelBMFont: Attempted to use character not defined in this bitmap: {0}", (int)c);
continue;
}
kerningAmount = this._kerningAmountForFirst(prev, c);
// unichar is a short, and an int is needed on HASH_FIND_INT
if (this._fontConfig.FontDefDictionary.TryGetValue(c, out fontDef) == false)
{
CCLog.Log("cocos2d::CCLabelBMFont: characer not found {0}", (int)c);
continue;
}
rect = fontDef.rect;
rect = rect.PixelsToPoints();
rect.Origin.X += _imageOffset.X;
rect.Origin.Y += _imageOffset.Y;
CCSprite fontChar = (CCSprite)base.GetChildByTag(i);
if (fontChar != null)
{
// Reusing previous Sprite
fontChar.Visible = true;
}
else
{
fontChar = new CCSprite();
fontChar.InitWithTexture(base.TextureAtlas.Texture, rect);
AddChild(fontChar, i, i);
fontChar.IsOpacityModifyRGB = this._isOpacityModifyRGB;
fontChar.UpdateDisplayedColor(this._displayedColor);
fontChar.UpdateDisplayedOpacity(this._displayedOpacity);
}
// updating previous sprite
fontChar.SetTextureRect(rect, false, rect.Size);
// See issue 1343. cast( signed short + unsigned integer ) == unsigned integer (sign is lost!)
int yOffset = this._fontConfig.CommonHeight - fontDef.yOffset;
var fontPos = new CCPoint(
(float)nextFontPositionX + fontDef.xOffset + fontDef.rect.Size.Width * 0.5f + kerningAmount,
(float)nextFontPositionY + yOffset - rect.Size.Height * 0.5f * CCMacros.CCContentScaleFactor()
);
fontChar.Position = fontPos.PixelsToPoints();
// update kerning
nextFontPositionX += fontDef.xAdvance + kerningAmount;
prev = c;
if (longestLine < nextFontPositionX)
{
longestLine = nextFontPositionX;
}
//.........这里部分代码省略.........
示例6: UpdateWithBatchNode
//.........这里部分代码省略.........
// bottom left
CCRect leftbottombounds = new CCRect(x, y,
left_w, bottom_h);
// bottom center
x += left_w;
CCRect centerbottombounds = new CCRect(x, y,
center_w, bottom_h);
// bottom right
x += center_w;
CCRect rightbottombounds = new CCRect(x, y,
right_w, bottom_h);
if (!rotated)
{
// CCLog("!rotated");
CCAffineTransform t = CCAffineTransform.Identity;
t = CCAffineTransform.Translate(t, rect.Origin.X, rect.Origin.Y);
centerbounds = CCAffineTransform.Transform(centerbounds, t);
rightbottombounds = CCAffineTransform.Transform(rightbottombounds, t);
leftbottombounds = CCAffineTransform.Transform(leftbottombounds, t);
righttopbounds = CCAffineTransform.Transform(righttopbounds, t);
lefttopbounds = CCAffineTransform.Transform(lefttopbounds, t);
rightcenterbounds = CCAffineTransform.Transform(rightcenterbounds, t);
leftcenterbounds = CCAffineTransform.Transform(leftcenterbounds, t);
centerbottombounds = CCAffineTransform.Transform(centerbottombounds, t);
centertopbounds = CCAffineTransform.Transform(centertopbounds, t);
// Centre
_centre = new CCSprite();
_centre.InitWithTexture(_scale9Image.Texture, centerbounds);
_scale9Image.AddChild(_centre, 0, (int)Positions.Centre);
// Top
_top = new CCSprite();
_top.InitWithTexture(_scale9Image.Texture, centertopbounds);
_scale9Image.AddChild(_top, 1, (int)Positions.Top);
// Bottom
_bottom = new CCSprite();
_bottom.InitWithTexture(_scale9Image.Texture, centerbottombounds);
_scale9Image.AddChild(_bottom, 1, (int)Positions.Bottom);
// Left
_left = new CCSprite();
_left.InitWithTexture(_scale9Image.Texture, leftcenterbounds);
_scale9Image.AddChild(_left, 1, (int)Positions.Left);
// Right
_right = new CCSprite();
_right.InitWithTexture(_scale9Image.Texture, rightcenterbounds);
_scale9Image.AddChild(_right, 1, (int)Positions.Right);
// Top left
_topLeft = new CCSprite();
_topLeft.InitWithTexture(_scale9Image.Texture, lefttopbounds);
_scale9Image.AddChild(_topLeft, 2, (int)Positions.TopLeft);
// Top right
_topRight = new CCSprite();
_topRight.InitWithTexture(_scale9Image.Texture, righttopbounds);
_scale9Image.AddChild(_topRight, 2, (int)Positions.TopRight);
示例7: UpdateWithBatchNode
public bool UpdateWithBatchNode(CCSpriteBatchNode batchnode, CCRect rect, bool rotated, CCRect capInsets)
{
byte opacity = m_cOpacity;
CCColor3B color = m_tColor;
// Release old sprites
RemoveAllChildrenWithCleanup(true);
if (scale9Image != batchnode)
{
scale9Image = batchnode;
}
scale9Image.RemoveAllChildrenWithCleanup(true);
m_capInsets = capInsets;
// If there is no given rect
if (rect.Equals(CCRect.Zero))
{
// Get the texture size as original
CCSize textureSize = scale9Image.TextureAtlas.Texture.ContentSize;
rect = new CCRect(0, 0, textureSize.Width, textureSize.Height);
}
// Set the given rect's size as original size
m_spriteRect = rect;
m_originalSize = rect.Size;
m_preferredSize = m_originalSize;
m_capInsetsInternal = capInsets;
// Get the image edges
float l = rect.Origin.X;
float t = rect.Origin.Y;
float h = rect.Size.Height;
float w = rect.Size.Width;
// If there is no specified center region
if (m_capInsetsInternal.Equals(CCRect.Zero))
{
// Apply the 3x3 grid format
if (rotated)
{
m_capInsetsInternal = new CCRect(l + h / 3, t + w / 3, w / 3, h / 3);
}
else
{
m_capInsetsInternal = new CCRect(l + w / 3, t + h / 3, w / 3, h / 3);
}
}
//
// Set up the image
//
if (rotated)
{
// Sprite frame is rotated
// Centre
centre = new CCSprite();
centre.InitWithTexture(scale9Image.Texture, m_capInsetsInternal, true);
scale9Image.AddChild(centre, 0, (int) Positions.pCentre);
// Bottom
bottom = new CCSprite();
bottom.InitWithTexture(scale9Image.Texture, new CCRect(l,
m_capInsetsInternal.Origin.Y,
m_capInsetsInternal.Size.Width,
m_capInsetsInternal.Origin.X - l),
rotated
);
scale9Image.AddChild(bottom, 1, (int) Positions.pBottom);
// Top
top = new CCSprite();
top.InitWithTexture(scale9Image.Texture, new CCRect(m_capInsetsInternal.Origin.X + m_capInsetsInternal.Size.Height,
m_capInsetsInternal.Origin.Y,
m_capInsetsInternal.Size.Width,
h - m_capInsetsInternal.Size.Height - (m_capInsetsInternal.Origin.X - l)),
rotated
);
scale9Image.AddChild(top, 1, (int) Positions.pTop);
// Right
right = new CCSprite();
right.InitWithTexture(scale9Image.Texture, new CCRect(m_capInsetsInternal.Origin.X,
m_capInsetsInternal.Origin.Y + m_capInsetsInternal.Size.Width,
w - (m_capInsetsInternal.Origin.Y - t) - m_capInsetsInternal.Size.Width,
m_capInsetsInternal.Size.Height),
rotated
);
scale9Image.AddChild(right, 1, (int) Positions.pRight);
// Left
left = new CCSprite();
left.InitWithTexture(scale9Image.Texture, new CCRect(m_capInsetsInternal.Origin.X,
t,
m_capInsetsInternal.Origin.Y - t,
m_capInsetsInternal.Size.Height),
//.........这里部分代码省略.........