[Flex] วิธีการทำให้เกมของเราสามารถเปลี่ยนฟอนท์แบบตอน Run Time ได้ by

28
Feb
0

โดยปกติแล้วในเกมจะใช้ฟอนท์หลักๆ 1 ฟอนท์ แต่ที่นี้ปัญหามันเกิดเมื่อเราทำ Localize ซึ่งฟอนท์ของเรานั้นไม่ได้ครอบคลุมตัวหนังสือของทุกภาษาจึงทำให้ต้องมีการเปลี่ยนฟอนท์ขณะรันไทม์ขึ้นครับ (เพราะต้องรอรับข้อมูลก่อนว่าผู้เล่นเลือกภาษาใดมา)
• ส่วนแรกโดนปกติแล้ว Flex เราจะเตรียม css มาไว้ให้ในไฟล์หลักอยู่แล้ว แต่ถ้ายังไม่มีก็สร้างขึ้นตามนี้ครับ

• จากนั้นก็ใส่ฟอนท์ที่จำเป็นตามปกติ แล้วตามด้วย css class ทิ้งไว้ดังนี้

@namespace mx "library://ns.adobe.com/flex/mx";
@namespace s "library://ns.adobe.com/flex/spark";
@font-face
{
fontFamily: "2005_iannnnnCPU";
src: url("/assets/fonts/2005_iannnnnCPU.ttf");
embedAsCFF: true;
}
@font-face
{
fontFamily: "Tahoma";
fontWeight: bold;
src: url("/assets/fonts/tahomabd.ttf");
embedAsCFF: true;
}
@font-face
{
fontFamily: "Tahoma";
src: url("/assets/fonts/TAHOMA.TTF");
embedAsCFF: true;
}
@font-face
{
fontFamily: "Impact";
src: url("/assets/fonts/impact_0.ttf");
embedAsCFF: true;
}
@font-face
{
fontFamily: "AgencyGP";
src: url("/assets/fonts/dY_AgencyGP.ttf");
embedAsCFF: true;
}
@font-face
{
fontFamily: "-Layiji TaMaiTine1";
src: url("/assets/fonts/layiji_TarMineTine1.ttf");
embedAsCFF: true;
}
@font-face
{
fontFamily: "Arial";
src: url("/assets/fonts/arial.ttf");
embedAsCFF: true;
}
@font-face
{
fontFamily: "Arial";
fontWeight: bold;
src: url("/assets/fonts/arialbd.ttf");
embedAsCFF: true;
}
.langFontStyle{}
.fontSize12{}
.fontSize18{}
.fontSize20{}
.fontSize21{}
.fontSize22{}
.fontSize24{}
.fontSize25{}
.fontSize27{}
.fontSize28{}
.fontSize30{}
.fontSize31{}
.fontSize32{}
.fontSize33{}
.fontSize34{}
.fontSize35{}
.fontSize36{}
.fontSize38{}
.fontSize39{}
.fontSize40{}
.fontSize42{}
.fontSize44{}
.fontSize45{}
.fontSize46{}
.fontSize48{}
.fontSize49{}
.fontSize50{}
.fontSize52{}
.fontSize54{}
.fontSize56{}
.fontSize60{}
.fontSize64{}
.fontSize72{}
.fontSize100{}
.fontSize120{}
.fontSize128{}

ซึ่งที่เขียนเตรียมไว้เยอะๆเพราะเราจะต้องเขียนเผื่อขนาดฟอนท์ที่จะใช้ทั้งหมดในโปรเจ็คนั่นเอง (หรือจะมาเขียนเพิ่มเองทุกครั้งที่มีไซส์ใหม่ก็ได้)

• จากนั้นในไฟล์ Application หลัก โดยปกติจะมี  <fx:Style source=”Main.css” /> แต่ถ้ายังไม่มีก็ให้ใส่ก่อน <fx:Script> ครับ
• ทีนี้ก็มาถึงส่วนตั้งค่าละ

if(lang=="en"||lang=="th"){ //ถ้าเป็นภาษาอังกฤษหรือไทย
styleManager.getStyleDeclaration(".langFontStyle").setStyle("fontFamily","2005_iannnnnCPU"); //ใช้ฟอนท์นี้
for(i=0;i<200;i++){
if(styleManager.getStyleDeclaration(".fontSize"+i)!=null)
styleManager.getStyleDeclaration(".fontSize"+i).setStyle("fontSize",i); //รันแก้คลาสชื่อนี้ทั้งหมดให้เป็นขนาดที่ใส่เลขไว้
}
}
else{ //ถ้าเป็นภาษาอื่นๆใช้ฟอนท์นี้และเซ็ทค่าต่างๆ
styleManager.getStyleDeclaration(".langFontStyle").setStyle("fontFamily","Arial");
styleManager.getStyleDeclaration(".langFontStyle").setStyle("fontWeight","bold");
for(i=0;i<200;i++){
if(styleManager.getStyleDeclaration(".fontSize"+i)!=null)
styleManager.getStyleDeclaration(".fontSize"+i).setStyle("fontSize",i/2);
}
}

• จากนั้นในแท็กต่างๆของเราที่ปกติใช้ property fontFamily=”xxx” fontSize=”yyy” ก็มาใช้เป็น styleName=”langFontStyle fontSize44″ เท่านี้แหละครับ

รวมคำสั่ง ADB (Android Debug Bridge) by

28
Feb
1

ADB (Android Debug Bridge) ก็คือเครื่องมือ comand line tools ตัวหนึ่งเอาไว้สั่งการจาก PC ไปยังมือถือที่ต้องการผ่านสาย USB (หรือ wifi ผ่านบทความนี้) สามารถเรียกใช้งานได้ผ่าน path

sdkpath/platform-tools/adb

โดย sdkpath คือ path ที่เราลง android sdk ไว้ สรุปคำสั่งที่ใช้บ่อยๆ มีดังนี้

  • adb devices – เป็นคำสั่งแรกที่ต้องใช้หลังนำมือถือเสียบ computer เป็นครั้งแรก เพื่อเช็คว่า PC เห็นมือถือเครื่องนี้หรือยัง หากปรากฏชื่ device มาก็แสดงว่าเริ่มต้นใช้งานได้ หากยังไม่ปรากฏ ต้องอนุญาตให้ PC เครื่องนี้สั่งการมือถือเครื่องนี้ได้ก่อนด้วยการ Enable Debug mode ผ่าน USB ที่ตัวเครื่องมือถือ แล้วเสียบ PC และติ๊กอนุญาตให้ PC สั่งมือถือเครื่องนี้ได้ (ป้องกันใครไม่รู้มาเอามือถือเราไปสั่ง adb ลบโปรแกรมทิ้งเล่น)
  • adb logcat -s Unity – ใช้ดู log ที่พ่นผ่าน app ที่สร้างจาก Unity ทั้งหมด
  • adb install path/to/apk – ใช้ install apk ลงเครื่อง
  • adb install -r path/to/apk – ใช้ Install apk เหมือนเมื่อกี้ แต่ต่างจากเดิมคือถ้ามี app นั้นๆ อยู่แล้วในเครื่องจะลงทับให้อัตโนมัติ ไม่ต้อง uninstall ก็ได้
  • adb install -d path/to/apk – เหมือนอันบน แต่อนุญาติให้ install apk ที่เลขเวอร์ชั่นต่ำกว่าเดิมทับ app เดิมที่อาจจะใหม่กว่าได้
  • adb uninstall com.packagename.myapp – uninstall โดยกำหนดชื่อ package ที่ต้องการ com.packagename.myapp ซึ่งบางครั้งการ uninstall ที่ตัวเครื่อง android เองจะยังไม่ลบ app ไปจริงๆ ก็ต้องใช้คำสั่งนี้ช่วย
  • adb clear com.packagename.myapp – clear ข้อมูลของ app ที่ระบุทั้งหมด (ให้ผลเหมือนการกด clear cache/clear data ผ่าน app manager ในมือถือ)
  • adb push path/in/pc path/in/android-device – ใช้ copy ไฟล์จากเครื่อง PC ลงมือถือผ่าน command line
  • adb pull path/in/android-device /path/in/pc – ใช้ copy ไฟล์จากมือถือมาลง PC ผ่าน command line
  • adb shell screenrecord /path/in/android-device/demo.mp4 – ใช้อัดหน้าจอมือถือลงเครื่องเพื่อทำ screencast ได้อย่างสะดวก (ใช้ได้เฉพาะ android 4.4 ขึ้นไปเท่านั้น)

เคลีย Grid อัตโนมัติ ก่อนหรือหลัง Grid ถูก Enable หรือ Disable by

28
Feb
0

บางครั้งเราก็จำเป็นที่จะต้อง ล้าง Grid ใหม่ทุกครั้งที่ Show หน้าที่มี Grid นี้ หรือ ล้างทุกครั้งที่เราละจาก Grid นี้ไป ไม่ว่าจะเหตุผลเรื่องของ Memory หรืออื่นๆก็ตาม วันนี้เรามีวีธีง่ายๆที่จะทำให้ชีวิตดีขึ้นมากก มาฝากครั้บบ

1. เราต้องแก้ไขไฟล์ UIGrid ของ NGUI ก่อนครับให้เราเพิ่ม code นี้ไปใน UIGrid ครับ
public bool clearGridOnEnable = false;
public bool clearGridOnDisable = false;

void OnEnable() {
if (clearGridOnEnable)
{
for (int i = 0; i < grid.transform.childCount; i++) {
Destroy (grid.transform.GetChild (i).gameObject);
}

if (detachChildren) {
grid.transform.DetachChildren ();
}

Resources.UnloadUnusedAssets ();
System.GC.Collect ();
}
}

void OnDisable() {
if (clearGridOnDisable)
{
for (int i = 0; i < transform.childCount; i++) {
Destroy (transform.GetChild (i).gameObject);
}

if (detachChildren) {
transform.DetachChildren ();
}

Resources.UnloadUnusedAssets ();
System.GC.Collect ();
}
}

2. ถ้าทำแค่นี้ ก็ยังไม่ทำให้ชีวิตเราง่ายขึ้นเท่าไหร่ครับ เพราะว่ามันจะไม่มี clearGridOnEnable หรือ clearGridOnDisable ขึ้นมาใน Inspector ให้เราตั้งค่าครับ ก็ให้เราเพิ่ม code นี้ในไฟล์ UIGridEditor ครับ
NGUIEditorTools.DrawProperty("Clear on Enable", serializedObject, "clearGridOnEnable");
NGUIEditorTools.DrawProperty("Clear on Disable", serializedObject, "clearGridOnDisable");

ให้เราเพิ่ม code ไปก่อนบรรทัดนี้นะครับ
serializedObject.ApplyModifiedProperties();

3. ต่อไปจากนี้ เราก็จะมี การตั้งค่าใน Inspector เพิ่มมาให้เราตั้งค่าครับ หน้าตาแบบนี้ครับ

Grid

หากเราต้องการให้ Grid ล้างค่า ของ ใน Grid ทุกครั้งเราก็แค่ ติ๊กถูกใน Inspector เท่านั้นเองครับ

ทำภาพเซนเซอร์ง่ายๆด้วย PS by

28
Feb
0

เอาเทคนิตง่ายๆมาทำให้ดู เชื่อว่าหลายๆคนอาจจะไม่รู้นะ กับการทำภาพเซนเซอร์ มาลองดูกันครับง่ายมาก ^^
เริ่มแรกหารูปที่ถูกใจรูปไหนก็ได้ แฮ้กๆ
00
จากนั้นเลือก Selection ในจุดที่ต้องการ(A) ในที่นี้ผมเลิอกใช้ Marquee แบบวงกลม(B)
01
จากนั้นกดไปที่ Filter > Pixelate > Mosaic
02
จะมีหน้าต่างของ Mosaic ขึ้นมา ให้ไปปรับที่ค่า Cell Size ต่อเลย (ตรงนี้ขึ้นอยุ่กับความพอใจ ยิ่งค่ามาก Pixel ในภาพจะยิ่งขยาย)
04
กด OK ก็จะได้ตามภาพนี้
fianl
ลองเอาไปใช้ขำๆนะครับ หวังว่าจะมีประโยชน์นะ^^

การตั้ง keyboard shotcut ใน photoshop by

28
Feb
0

ในการใช้งาน photoshop เราสามารถเลือกตั้ง keyboard shotcut ในคำสั่งที่เราใช้งานบ่อยๆได้ตามใจชอบ ซึ่งจะช่วยเพิ่มความสะดวกและรวดเร็วในการทำงาน

sample11a
 กดเลือกที่ edit > keyboard shotcut

sample11b

จะขึ้นหน้าต่างเซ็ตติ้งตามแบบในรูป

 

sample11c

กดที่ลูกศรด้านหน้า จะมีรายชื่อคำสั่งเปิดออกมา เราสามารถเลือกตั้ง keyboard shotcut ได้ตามใจชอบ โดยจะมีการเตือนหากซ้ำซ้อนกับคำสั่งอื่น

 

 

กู้เงิน | เศรษฐกิจพอเพียง | สินเชื่อบุคคล | สมัครบัตรกดเงินสด | สินเชื่อ | เงินกู้ด่วน | ยืมเงินทรูมูฟ | เงินด่วนนอกระบบ