这是xD的问题
给定iphone中cocos2d中的CCSprite实例,我可以使用什么方法来获取图像的宽度和高度?
我正试图在一系列精灵上阅读一个属性.此属性可能存在也可能不存在于这些对象上,甚至可能不会被声明,甚至比null更糟.
我的代码是:
if (child["readable"] == true){
// this Sprite is activated for reading
}
Run Code Online (Sandbox Code Playgroud)
所以Flash告诉我:
错误#1069:在flash.display.Sprite中找不到属性可选,并且没有默认值.
有没有办法在读取它的值之前测试属性是否存在?
就像是:
if (child.isProperty("readable") && child["readable"] == true){
// this Sprite is activated for reading
}
Run Code Online (Sandbox Code Playgroud) 我有很多精灵图像,包含几十个图标.有没有一种简单的方法可以自动将精灵分解成单独的图像文件,或者将它们输入坐标,宽度和高度?
我使用bodyWithPolygonFromPath来定义物理体的体积,并使用
http://dazchong.com/spritekit/
获得所需的路径.但路径似乎不正确,我希望看到物理体路径的边界,看看形状是否正确.
有没有办法看到物理学家的卷大纲?
我尝试了以下代码,但它不起作用.
ship = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
CGFloat offsetX = ship.frame.size.width * ship.anchorPoint.x;
CGFloat offsetY = ship.frame.size.height * ship.anchorPoint.y;
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 50 - offsetX, 110 - offsetY);
CGPathAddLineToPoint(path, NULL, 18 - offsetX, 16 - offsetY);
CGPathAddLineToPoint(path, NULL, 140 - offsetX, 15 - offsetY);
CGPathCloseSubpath(path);
SKShapeNode *yourline = [SKShapeNode node];
yourline.name = @"yourline";
yourline.path = path;
[yourline setStrokeColor:[UIColor redColor]];
[self addChild:yourline];
ship.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:path];
//[ship setScale:0.5];
ship.zRotation = - M_PI / 2;
Run Code Online (Sandbox Code Playgroud) 我一直在努力使用openGL ES 2.0 for Android从jpg/png文件中绘制2D图像.我看到的每个地方的教程都是用于纹理化3D图像,因此粗略地弄清楚如何绘制常规的2D Sprite.我得到一个正方形来绘制和旋转但是一旦它变成纹理我必须搞砸了某个地方,因为我一直得到一个错误说DrawElements没有绑定任何数据,但如果我注释掉任何与纹理有关的代码它工作正常.
任何帮助将不胜感激.
这是我的Sprite类和Renderer类的代码:
public class Sprite
{
//Reference to Activity Context
private final Context mActivityContext;
//Added for Textures
private final FloatBuffer mCubeTextureCoordinates;
private int mTextureUniformHandle;
private int mTextureCoordinateHandle;
private final int mTextureCoordinateDataSize = 2;
private int mTextureDataHandle;
private final String vertexShaderCode =
//Test
"attribute vec2 a_TexCoordinate;" +
"varying vec2 v_TexCoordinate;" +
//End Test
"uniform mat4 uMVPMatrix;" +
"attribute vec4 vPosition;" +
"void main() {" +
" gl_Position = vPosition * uMVPMatrix;" +
//Test
"v_TexCoordinate = …Run Code Online (Sandbox Code Playgroud) 我已经阅读了关于使用css的响应精灵的每一个问题,我看到jsfiddle有响应精灵的工作示例,但我仍然无法理解如何获得背景位置和背景大小的百分比,如何使用包装器(一些人们说这是必要的)围绕使用背景图像的div以及为什么要使用它...
例如,如果我有一个宽度为20%(比如40px)的div并且是一个圆圈.我需要用作背景图像的图像有80px宽度(一个圆圈,我需要调整它以适应我的div),并且是我在精灵表中的40张图像之一.它位于-173px -293px的位置.
我真的不知道如何使它工作.
我试过了:
div {
width:20%;
border-radius:50%;
background: url('images/sprites.png') no-repeat 72.083% 67.981%;
background-size: 50%;
}
Run Code Online (Sandbox Code Playgroud)
当然,它没有用.我不明白当background-size不是auto时,如何得到background-position-x,background-position-y(我的数字来自"auto"大小精灵表),或者背景大小如何与div大小的百分比有关.
我可以使用任何数学公式吗?任何人都可以解释我或给我一些网站/书籍的名称,我可以在那里学习它?
谢谢,
我想知道是否有一个工具可以用来在SpriteKit中轻松生成复杂的物理实体.我想有一个基于体积的物理实体与多边形类型的形状.SpriteKit允许使用该方法创建此类主体:
+ (SKPhysicsBody *)bodyWithPolygonFromPath:(CGPathRef)path
Run Code Online (Sandbox Code Playgroud)
不幸的是,手动生成这样的路径是耗时的任务,并且在测试时可能会有问题.SpriteHelper应用程序允许您在易于使用的可视化编辑器中定义体形,但此应用程序无法导出可在此处使用的路径.它是为cocos2d制作的,它做了很多像纹理包装等我不需要的东西,我也不能用SpriteKit.有没有人知道一个解决方案,可以很容易地定义CGPath,甚至可以通过alpha通道从png图像自动生成它们?虽然我的经验中的自动生成功能需要优化,因为当纹理可能具有更复杂的形状时,身体形状应该尽可能简单.
你能用HTML Canvas标签给我一个好的Javascript精灵动画库吗?
一些谷歌搜索只发现了一些非画布项目.我正在寻找干净简单的东西.
谢谢.
我正在尝试开发一个老式的NES风格的视频游戏,精灵闪烁和图形减速.我一直在想我应该用什么类型的逻辑来启用这样的效果.
如果我想要老式的NES风格,我必须考虑以下限制:
从我读过的内容来看,如果屏幕上有超过64个精灵,开发人员只会绘制高优先级精灵而忽略低优先级精灵.它们也可以交替,在奇数编号的相对帧上绘制每个偶数编号的精灵.
扫描线问题很有意思.从我的测试来看,通过像NES那样逐个像素地绘制精灵,不可能在XBOX 360 XNA框架上获得良好的速度.这就是为什么在老式游戏中,如果在一条线上有太多的精灵,如果它们被减半,就会出现一些.对于这个项目的所有目的,我将扫描线设置为8像素高,并通过Y定位将每个扫描线的精灵分组在一起.
为了澄清,我将以8x8像素,而不是1x1的批量绘制精灵到屏幕.
所以,愚蠢的我需要提出一个解决方案....
这是我目前的理论
首先,我提出的一个基本想法是解决精灵优先级问题.假设0-255(0为低)之间的值,我可以分配精灵优先级,例如:
在我的数据文件中,我可以将每个精灵分配为特定优先级.创建父对象时,精灵将在其指定范围之间随机分配一个数字.然后我会按照从高到低的顺序绘制精灵,最终目标是绘制每个精灵.
现在,当一个精灵被绘制在一个帧中时,我会在其初始优先级内随机生成一个新的优先级值.但是,如果没有在帧中绘制精灵,我可以将32添加到其当前优先级.例如,如果该系统可只画出精灵下降到135的优先级,具有45°的初始优先级的子画面然后可以后不被抽的3帧绘制(45 + 32 + 32 + 32 = 141)
理论上,这将允许精灵交替帧,允许优先级,并将精灵限制为每个屏幕64个.
现在,有趣的问题是我如何将精灵限制为每个扫描线只有8个?
我想如果我将精灵高优先级排序为低优先级,则循环遍历循环直到我达到64个精灵.但是,我不应该只列出列表中的前64个精灵.
在绘制每个精灵之前,我可以通过计数器变量检查在它的相应扫描线中绘制了多少个精灵.例如:
我可以为每个绘制的帧重置每条扫描线的值.在向下精灵列表的同时,如果在该扫描线中绘制了精灵,则向扫描线的相应计数器添加1.如果它等于8,则不绘制该精灵并转到具有下一个最低优先级的精灵.
慢一点
我需要做的最后一件事是模拟减速.我最初的想法是,如果我每帧绘制64个精灵并且还需要绘制更多的精灵,我可以将渲染暂停16ms左右.然而,在我玩过的NES游戏中,如果没有任何精灵闪烁,有时会减速,而即使有一些精灵闪烁,游戏也会漂亮地移动.
也许为每个在屏幕上使用精灵的对象赋予一个值(比如上面的优先级值),如果所有对象的组合值都超过阈值,那么引入减速?
结论...
我写的所有内容听起来是否合法且可行,或者它是一个白日梦吗?我可以用这个游戏编程理论思考哪些改进?
第一次使用这种技术,似乎无论我尝试分配边框的哪些属性都不会在Chrome中消失.其他浏览器都很好.我尝试过outline:none,border:0; 还尝试在图像周围添加彩色边框,并注意到黑色边框仍然在彩色边框内.似乎不想消失.
解决方法或建议非常感谢.
.share-link {
display: block;
width: 41px;
height: 32px;
text-decoration: none;
background: url("link-icon.png");
}
.share-link:hover {
background-position: -41px 0;
}
<a title="Share this Link" href="#"><img class="share-link"></a>
Run Code Online (Sandbox Code Playgroud) sprite ×10
css ×3
animation ×2
image ×2
sprite-kit ×2
2d ×1
android ×1
border ×1
canvas ×1
ccsprite ×1
cgpath ×1
css3 ×1
dimensions ×1
game-physics ×1
graphics ×1
iphone ×1
javascript ×1
photoshop ×1
physics ×1
properties ×1
xna ×1