Skip to content

Commit bea4889

Browse files
committed
fixe mesh bug
1 parent 7793268 commit bea4889

File tree

4 files changed

+28
-16
lines changed

4 files changed

+28
-16
lines changed

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ libs/
1010
.flexProperties
1111
.project
1212
.flexLibProperties
13-
.swf
14-
.fla
13+
*.swf
14+
*.fla

DragonBones/src/dragonBones/objects/ObjectDataParser.as

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -541,11 +541,22 @@
541541
if (meshData.skinned)
542542
{
543543
var vertices:Vector.<Number> = new Vector.<Number>();
544-
for (var i:uint = 0, l:uint = frame.vertices.length; i < l; i += 2)
544+
545+
for (var i:uint = 0, l:uint = meshData.vertices.length; i < l; ++i)
545546
{
546-
const vertexBoneData:VertexBoneData = meshData.vertexBones[i / 2];
547-
helpPoint.x = frame.vertices[i];
548-
helpPoint.y = frame.vertices[i + 1];
547+
const vertexBoneData:VertexBoneData = meshData.vertexBones[i];
548+
549+
if (i * 2 < frame.offset || i * 2 - frame.offset >= frame.vertices.length)
550+
{
551+
helpPoint.x = 0;
552+
helpPoint.y = 0;
553+
}
554+
else
555+
{
556+
helpPoint.x = frame.vertices[i * 2 - frame.offset];
557+
helpPoint.y = frame.vertices[i * 2 + 1 - frame.offset];
558+
}
559+
549560
var result:Point = meshData.slotPose.deltaTransformPoint(helpPoint);
550561
for each (var boneIndex:uint in vertexBoneData.indices)
551562
{
@@ -554,6 +565,7 @@
554565
}
555566
}
556567

568+
frame.offset = 0;
557569
vertices.fixed = true;
558570
frame.vertices = vertices;
559571
}

Starling/Starling_1.x/src/dragonBones/starling/StarlingSlot.as

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -253,11 +253,11 @@
253253
if (meshData.skinned)
254254
{
255255
const bones:Vector.<Bone> = this._armature.getBones(false);
256+
var iF:uint = 0;
256257
for (i = 0, l = meshData.numVertex; i < l; i++)
257258
{
258259
const vertexBoneData:VertexBoneData = meshData.vertexBones[i];
259260
var j:uint = 0;
260-
var jD:uint = 0;
261261
var xL:Number = 0;
262262
var yL:Number = 0;
263263
var xG:Number = 0;
@@ -271,22 +271,22 @@
271271
const point:Point = vertexBoneData.vertices[j];
272272
const weight:Number = vertexBoneData.weights[j];
273273

274-
if (!this._ffdVertices || iD < _ffdOffset || iD >= this._ffdVertices.length)
274+
if (!this._ffdVertices || iF < _ffdOffset || iF >= this._ffdVertices.length)
275275
{
276276
xL = point.x;
277277
yL = point.y;
278278
}
279279
else
280280
{
281-
xL = point.x + this._ffdVertices[iD - _ffdOffset + jD];
282-
yL = point.y + this._ffdVertices[iD - _ffdOffset + jD + 1];
281+
xL = point.x + this._ffdVertices[iF];
282+
yL = point.y + this._ffdVertices[iF + 1];
283283
}
284284

285285
xG += (matrix.a * xL + matrix.c * yL + matrix.tx) * weight;
286286
yG += (matrix.b * xL + matrix.d * yL + matrix.ty) * weight;
287287

288288
j++;
289-
jD = j * 2;
289+
iF += 2;
290290
}
291291

292292
meshImage.mVertexData.setPosition(i, xG, yG);

Starling/Starling_2.x/src/dragonBones/starling/StarlingSlot.as

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,11 +222,11 @@
222222
if (_meshData.skinned)
223223
{
224224
const bones:Vector.<Bone> = this._armature.getBones(false);
225+
var iF:uint = 0;
225226
for (i = 0, l = _meshData.numVertex; i < l; i++)
226227
{
227228
const vertexBoneData:VertexBoneData = _meshData.vertexBones[i];
228229
var j:uint = 0;
229-
var jD:uint = 0;
230230
var xL:Number = 0;
231231
var yL:Number = 0;
232232
var xG:Number = 0;
@@ -240,22 +240,22 @@
240240
const point:Point = vertexBoneData.vertices[j];
241241
const weight:Number = vertexBoneData.weights[j];
242242

243-
if (!this._ffdVertices || iD < _ffdOffset || iD >= this._ffdVertices.length)
243+
if (!this._ffdVertices || iF < _ffdOffset || iF >= this._ffdVertices.length)
244244
{
245245
xL = point.x;
246246
yL = point.y;
247247
}
248248
else
249249
{
250-
xL = point.x + this._ffdVertices[iD - _ffdOffset + jD];
251-
yL = point.y + this._ffdVertices[iD - _ffdOffset + jD + 1];
250+
xL = point.x + this._ffdVertices[iF];
251+
yL = point.y + this._ffdVertices[iF + 1];
252252
}
253253

254254
xG += (matrix.a * xL + matrix.c * yL + matrix.tx) * weight;
255255
yG += (matrix.b * xL + matrix.d * yL + matrix.ty) * weight;
256256

257257
j++;
258-
jD = j * 2;
258+
iF += 2;
259259
}
260260

261261
style.setVertexPosition(i, xG, yG);

0 commit comments

Comments
 (0)