- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个千篇一律的类,它采用源矩形并动态地逐步遍历 Sprite 表中的每个帧,直到每个图像都被剪切为动画。当 Sprite 表中的每个帧大小都相同时,我可以毫无问题地做到这一点,但几乎不可能在具有相同帧大小的动画中找到具有任何复杂性的 Sprite 表。例如:
按照我想要的方式进行剪切和动画处理,但是:
由于它的帧大小可变,因此会变得很有趣(因为我的程序当前假设所有帧的大小相同)。有没有办法以某种方式感知 Sprite 表中每个单独帧的帧大小,或者这是一个失败的原因?
创建“千篇一律”源框架的当前代码:
// Indirect Variable Sets (Sprite Animation and Sprite Sheet Cuts)
framesPerRow = frameCount/spriteSheetRows;
spriteWidth = bmp.getWidth() / framesPerRow; // cut the sheet into pieces based on
// sprite width: frames/row ratio
spriteHeight = bmp.getHeight()/spriteSheetRows; // cut the sheet horizontally into pieces based on
// total height : total rows ratio
setSourceRect(new Rect(0, 0, spriteWidth, spriteHeight));
setFramePeriod(1000 / fps); // set the framePeriod based on desired fps
然后在我的更新方法中使用它:
public void update(long gameTimeInMillis){
// If the game time has been longer than the frame period...
// the reason that we need frameTicker is so that we can use our variable (frameTicker)
// to keep track of the last time that the frame was updated (relative to our game)
if (gameTimeInMillis > frameTicker + framePeriod){
frameTicker = gameTimeInMillis; // set last update time (current time)
// increment the animation frame
currentFrame++;
// Get current column in sprite sheet:
// this works like this, imagine we are at frame 20, and we have 5 frames per row
// 20%5 = 0 so we are at the end of the row, if we are at frame 22, 22%5 = 2, etc.
frameColumn = currentFrame%framesPerRow;
// if we are at our max frame count (note, we start at 0) then reset our animation
if(currentFrame >= frameCount){
currentFrame = 0;
}
// increment the sprite sheet row if we are at the end of the row
if(frameColumn == 0){
currentRow++;
}
// if we are at our max rows (note, we start at 0) then reset our animation rows
if(currentRow >= spriteSheetRows){
currentRow = 0;
}
// define the "cookie cutter" sourceRectangle for our sprite sheet
this.sourceRect.left = frameColumn * spriteWidth;
this.sourceRect.right = this.sourceRect.left + spriteWidth;
this.sourceRect.top = currentRow * spriteHeight;
this.sourceRect.bottom = this.sourceRect.top + spriteHeight;
Log.d(TAG, "Top coordinates = " + currentRow);
}
}
由于我不是艺术家,所以我的目标是使用预渲染的 Sprite 表,以便我可以在 2D 动画环境中发挥我的技能。问题是,我发现的大多数 Sprite 表似乎都有可变框架,这使得它们对我来说相当无用,除非我能找到一种更精确地切割它们的方法(或另一种切割方法,我是否缺少 API 工具? )
最佳答案
您可以添加一些元数据与 Sprite 表一起定义像素位置以及表中每个帧的宽度/高度。这比拥有完美的网格需要更多的工作,但它将使您能够按原样使用更广泛的 Sprite 表。例如(不按比例)如果您去获取第 1 帧,您会发现它从像素位置 128 开始为 16x32,并且您可以根据整个纸张的宽度/高度计算纹理坐标。这听起来很困惑,但是一旦你让它工作起来,它应该会给你带来更大的灵 active ,并且可以在各种 Sprite 表中重复使用。
否则,您可以使用 Gimp 将各个帧剪切并粘贴到网格上。或者,将帧切割成具有相同宽度/高度的单个图像,然后使用 ImageMagick 之类的工具将单个图像组装成 Sprite 表。我不记得实际的命令,但我在命令行中使用 ImageMagick 将 Reiner 的一些 Tilesets 组装成 Sprite 表。 ImageMagick 会将目录中的所有图像连接起来,您甚至可以告诉它为您调整它们的大小,以便您可以从更高分辨率的图像开始,并在需要时强制它们为 2 的幂。
关于java - 将 Sprite 表动态切割成具有可变帧大小的单独位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19881635/
我正在尝试读取和处理一个大的 json 文件(~16G),但即使我通过指定 chunksize=500 读取小块,它仍然有内存错误。我的代码: i=0 header = True for chunk
请看下图... 我想通过 CSS 实现。 我现在将此分隔符用作在我的容器内响应的图像 ( jpg )。问题是我似乎无法准确匹配颜色或使白色晶莹剔透。 我认为 CSS 是解决这个问题的最佳方式。 尺寸为
所以我正在尝试使用 AngularJS 和 Node.js。我正在尝试设置客户端路由,但遇到一些问题。 编辑 所以我改变了一些代码如下 https://github.com/scotch-io/sta
我想创建如下图所示的边框: 这段代码是我写的 Some Text p{ -webkit-transform: perspective(158px) rotateX(338deg); -webk
好的,所以我有一个包含 2 个选项的选择表 $builder->add('type', 'choice', array( 'label' => 'User type', 'choice
我的代码: private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { ngr.
我正在尝试编写 Tic-Tac-Toe 游戏代码,但不知道如何在轮到我时push_back '+' 字符。 因此,每当玩家输入例如“Oben 链接”时,这基本上意味着左上角,我希望游戏检查输入是否正确
我正在研究 HtmlHelper.AnonymousObjectToHtmlAttributes。 它适用于匿名对象: var test = new {@class = "aaa", placehol
在 stackoverflow 上所有这些 mod 重写主题之后,我仍然没有找到我的问题的答案。我有一个顶级站点,基本上我想做的就是将 /index.php?method=in&cat=Half+Li
仅使用 CSS 可以实现此功能区吗? 最佳答案 .box { width: 300px; height: 300px; background-color: #a0a0a0;
我有一个 jbuilder 模板,它用 json 表示我的一个模型,如下所示: json.(model, :id, :field1, :field2, :url) 如果我只是从控制台访问该字段,则 u
昨天我问了一个问题 - Draw arrow according to path 在那个问题中,我解释说我想在 onTouchEvent 的方向上绘制一个箭头。我在评论中得到了答案,说我应该旋转 Ca
我希望段落中的代码与代码块中显示的代码一致。 例如: The formula method for a linear model is lm(y~x, data = dat). For our da
我使用 ViewPager 获得了一个选项卡菜单。每个选项卡都包含来自 android.support.v4 包的 fragment (与旧 SDK 的兼容性)。其中一个 fragment 是 Web
我正在从事一项需要多种程序能力的科学项目。在四处寻找可用的工具后,我决定使用 Boost 库,它为我提供了 C++ 标准库不提供的所需功能,例如日期/时间管理等。 我的项目是一组命令行,用于处理来自旧
外媒 Windows Latest 报道,随着 Windows 10 的不断发展,某些功能会随着新功能的更新而被抛弃或成为可选项。早在 2018 年,微软就确认截图工具将消失,现代的 “截图和草图”
我有标记的 Angular ,我只希望标记旋转到那个 Angular 。 marker = new google.maps.Marker({ position: myL
我一定是遗漏了什么,但我不知道是什么。我有使用 polymer 实现的简单自定义元素: TECK ..
我有一个关于如何设置我们产品的分步教程。我必须在每个步骤中显示大量示例代码。以下是我必须在页面中显示的代码类型列表。我用什么来格式化所有内容? Java 代码示例 XML 样本 iOS SDK 文件(
我需要在我的 iPad 应用程序中绘制一些图表,所以我遵循了本教程: http://recycled-parts.blogspot.com/2011/07/setting-up-coreplot-in
我是一名优秀的程序员,十分优秀!