ページへ戻る
+ Links
印刷
cocos2d-x/ver2系テクスチャアトラスをpngファイルに分割する
の編集 ::
NJF Wiki
xpwiki
:
cocos2d-x
/
ver2系テクスチャアトラスをpngファイルに分割する
の編集
cocos2d-x/ver2系テクスチャアトラスをpngファイルに分割する の編集
詳細な入力項目を表示
ページタイトル
( 空白で自動設定 )
:
ページ並び順
( 0-9 小数可 標準:1 )
:
ページ別名
(複数は[
改行
]で区切る)
:
ページ内容:
数年前、Animate CCでcocos2dx ver.2系のスプライトシートを書き出したら、その直後にファイルが壊れたことがありました。 そのままにして最近になってアップデートしようとすると、いくつか画像が足りなかったので、仕方なく書き出したスプライトシートからpngファイルを取り出したので、そのやり方です。 まず、スプライトシートのplistは以下のようなxmlファイルになっています。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>frames</key> <dict> <key>MLRSPanel0000</key> <dict> <key>frame</key> <string>{{4,4},{126,111}}</string> <key>offset</key> <string>{0,0}</string> <key>rotated</key> <false/> <key>sourceColorRect</key> <string>{{0,0},{126,111}}</string> <key>sourceSize</key> <string>{126,111}</string> </dict> この中のdict二階層下の「<key>MLRSPanel0000</key>」とかの部分がフレーム名で、dict三階層目の「<string>{{4,4},{126,111~}}</string>」とかが、スプライトシート上のその画像の左上の座標と幅、高さをピクセルで表したものです。 まず、この部分を取り出すPythonのスクリプトを書きました。 from bs4 import BeautifulSoup import sys import os import re argvs = sys.argv if len(argvs) < 2 : print "no file name" quit() fileName = argvs[1] if not os.path.exists(fileName): print "file does not exist" quit() p = re.compile(u"[{|}|]") p2 = re.compile(u",+") with open(fileName, 'r') as f: bf = BeautifulSoup(f.read(),"html.parser") dictAll = bf.dict.dict frameName = "" for d in dictAll: if d.name == "key": frameName = d.get_text() elif d.name == "dict": for dd in d: if dd.name == "string": print frameName, p2.sub(u" ",p.sub(u"",dd.get_text())) break このスクリプトの名前を「readSpCocos2ToCut.py」とすると、plistファイルを引数として python readSpCocos2ToCut.py texture.plist > texture.list を実行すれば、「texture.list」というファイルの中に、フレーム名、左上x座標、左上y座標、幅、高さのみを一覧にした以下のようなデータが書き込まれます。 MLRSPanel0000 4 4 126 111 UpgradeIcon0000 134 4 28 18 artilleryPanel0000 166 4 118 68 次に、ImagiMagickのconvertコマンドを使った以下のシェルを書き、「cropTexture.sh 」という名前で保存します cat $1 | while read FN TL TT W H do convert $2 -crop "$W"x"$H"+$TL+$TT $FN.png done そして先ほどのリストのファイルとtextureのpngファイルと実行すると、フレーム名のついたpngファイルが製作されます。 sh cropTexture.sh texture.list texture.png
編集の要約:
Q & A 認証:
ページ更新時は次の質問にお答えください。(プレビュー時は必要ありません)
Q:
「名古屋」の読みがな?(ひらがなで)
A:
お名前:
タイムスタンプを変更しない
テキスト整形のルールを表示する
添付ファイル
: