ofxUIで文字(ofxUILabel)が表示されない。

めちゃくちゃカッコイイopenFrameworksのGUIアドオンをつかってみました。



カッコイイ!

ダウンロードは以下から。
https://github.com/rezaali/ofxUI
使い方はREADMEの「TUTORIAL」に書いてある通りなのですが、一部修正しないと文字が表示されませんでした。

1.githubからダウンロードして解凍→フォルダ名をofxUIに変更→ addonsフォルダに入れる
2.openFrameworksのemptyExampleをコピー
3.XcodeでemptyExampleプロジェクトを開く
4.addons/ofxUI/src フォルダをプロジェクトのaddonsフォルダに追加
5.addon/ofxXmlSettings フォルダをプロジェクトのaddonsフォルダに追加

ここまでで準備完了。

とりあえずサンプルを動かしてみます。
ofxUI/example-ofxUITutorial フォルダのbin/data/guiからguiフォルダ をプロジェクトのdataフォルダに追加。
以下の内容をコピペ(ハイライトされている部分が追加したコードです。元のコードは消さずにそのままで)
 

 
ofxUI/example-ofxUITutorial/src/testApp.h → emptyExample/src/testApp.h[cpp highlight=”1,5,7″]

#include "ofxUI.h"

class testApp : public ofxiPhoneApp {

ofxUICanvas *gui;
//void exit(); //二重に指定してしまうことになるので削除するかコメントアウト
void guiEvent(ofxUIEventArgs &e);

}

[/cpp]
 

 
ofxUI/example-ofxUITutorial/src/testApp.cpp → emptyExample/src/testApp.mm[cpp highlight=”3-8,13,14,17-29″]
void testApp::setup(){

gui = new ofxUICanvas(0,0,320,320);
gui->addWidgetDown(new ofxUILabel("OFXUI TUTORIAL", OFX_UI_FONT_LARGE));
gui->addWidgetDown(new ofxUISlider(304,16,0.0,255.0,100.0,"BACKGROUND VALUE"));
gui->addWidgetDown(new ofxUIToggle(32, 32, false, "FULLSCREEN"));
ofAddListener(gui->newGUIEvent, this, &testApp::guiEvent);
gui->loadSettings("GUI/guiSettings.xml");
}

//————————————————————–
void testApp::exit(){
gui->saveSettings("GUI/guiSettings.xml");
delete gui;
}
//————————————————————–
void testApp::guiEvent(ofxUIEventArgs &e)
{
if(e.widget->getName() == "BACKGROUND VALUE")
{
ofxUISlider *slider = (ofxUISlider *) e.widget;
ofBackground(slider->getScaledValue());
}
else if(e.widget->getName() == "FULLSCREEN")
{
ofxUIToggle *toggle = (ofxUIToggle *) e.widget;
ofSetFullscreen(toggle->getValue());
}
}
[/cpp]
 

 
これで一応ビルドは通るしスライダーなどは表示されるのですが文字(ofxUILabel)が表示されません。 orz
[code]
Error : font not allocated iphone
[/code]
というアラートが出まくっているので、フォントが読み込めていません。

そこで、まずdata/GUIのなかにあるフォントファイル「NewMedia Fett.ttf」を、プロジェクトのdataフォルダの直下にコピーします。

setup()関数に以下の一文を追加
[cpp highlight=”4″]
void testApp::setup(){

gui = new ofxUICanvas(0,0,320,320);
gui->setupFont("NewMedia Fett.ttf"); //追加
gui->addWidgetDown(new ofxUILabel("OFXUI TUTORIAL", OFX_UI_FONT_LARGE));
gui->addWidgetDown(new ofxUISlider(304,16,0.0,255.0,100.0,"BACKGROUND VALUE"));
gui->addWidgetDown(new ofxUIToggle(32, 32, false, "FULLSCREEN"));
ofAddListener(gui->newGUIEvent, this, &testApp::guiEvent);
gui->loadSettings("GUI/guiSettings.xml");
}
[/cpp]

これで、ちゃんとラベルが表示されるようになります。

ちなみに、
[cpp]
gui->setupFont("GUI/NewMedia Fett.ttf");
[/cpp]
上記の方法では、フォントファイルが読み込めませんでした。
dataフォルダ直下でないとダメみたいです。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください