
모형에 돈 안쓰고 가급적 있는 것만 완성하려 했는데 신너같은 소모품 떨어진 건 어쩔 수가 없네요.
모형이 큰 돈 드는 취미는 아닌데 그렇다고 또 무과금(?)으로 가능한 취미도 아닌..
[반다이] 피규어라이즈라보 호시노 후미나

1착은 역시 쉽게(?) 완성시킬 수 있는 피규어라이즈라보로.
이어지는 내용
at 2021/02/28 18:08
/*Header*/
Value parseJSON2Value(rapidjson::Value& value);
ValueMap JSON2ValueMap(string jsonstr);
string parseValueMap2JSON(const Value& value);
string ValueMap2JSON(ValueMap vdata);
/*cpp*/
Value parseJSON2Value(rapidjson::Value& value)
{
switch (value.GetType())
{
case rapidjson::Type::kTrueType:
return Value(true);
break;
case rapidjson::Type::kFalseType:
return Value(false);
break;
case rapidjson::Type::kNullType:
return Value();
break;
case rapidjson::Type::kStringType:
return Value(value.GetString());
break;
case rapidjson::Type::kNumberType:
if (value.IsDouble())
return Value(value.GetDouble());
if (value.IsInt())
return Value(value.GetInt());
if (value.IsFloat())
return Value(value.GetFloat());
break;
case rapidjson::Type::kArrayType:
{
ValueVector _vector;
for (rapidjson::SizeType i = 0; i < value.Size(); i++)
{
auto _element = parseJSON2Value(value[i]);
_vector.push_back(_element);
}
return Value(_vector);
}
break;
}
return Value();
}
ValueMap JSON2ValueMap(string jsonstr)
{
ValueMap result;
rapidjson::Document d;
if (d.Parse(jsonstr.c_str()).HasParseError())
{
CCLOG("parse error %d", (int)(d.Parse(jsonstr.c_str()).GetParseError()));
return result;
}
//d is rapidjson::Type::kObjectType
for (auto it = d.MemberBegin(); it != d.MemberEnd(); ++it)
{
string _key = it->name.GetString();
auto _element = parseJSON2Value(it->value);
result[_key] = _element;
}
return result;
}
string parseValueMap2JSON(const Value& value)
{
string ret;
switch (value.getType())
{
case Value::Type::BOOLEAN:
ret = value.asBool() ? "true" : "false";
break;
case Value::Type::DOUBLE:
ret = SPRINTF("%f", value.asDouble());
break;
case Value::Type::FLOAT:
ret = SPRINTF("%f", value.asFloat());
break;
case Value::Type::INTEGER:
ret = SPRINTF("%d", value.asInt());
break;
case Value::Type::STRING:
ret = SPRINTF("%s", value.asString().c_str());
break;
case Value::Type::VECTOR:
{
ret = "[\n";
for (const auto val2 : value.asValueVector())
{
auto element = parseValueMap2JSON(val2);
ret += SPRINTF("%s,", element.c_str());
}
ret = ret.substr(0, ret.length() - 1);
ret += "\n]";
}
break;
}
return ret;
}
string ValueMap2JSON(ValueMap vdata)
{
string jsonwriter = "{\n";
for (auto& keyval : vdata)
{
string key = keyval.first;
const Value& val = keyval.second;
auto element = parseValueMap2JSON(val);
jsonwriter += SPRINTF("\"%s\":%s,\n", keyval.first.c_str(), element.c_str());
}
jsonwriter = jsonwriter.substr(0, jsonwriter.length() - 2);
jsonwriter += "\n}";
rapidjson::Document d;
if (d.Parse(jsonwriter.c_str()).HasParseError())
{
CCLOG("parse error %d", (int)(d.Parse(jsonwriter.c_str()).GetParseError()));
return "";
}
return jsonwriter;
}
//3.17.x under
{
auto slider = Slider::create();
slider->loadBarTexture(/*base texture*/);
slider->loadProgressBarTexture(/*progress texture*/);
slider->loadSlidBallTextures(/*ball normal, ball touched, bal disable, Widget::TextureResType*/);
slider->setPosition(/*Vec2*/);
addChild(slider);
slider->addEventListenerSlider(this, sliderpercentchangedselector(HelloWorld::changeSlider));
}
void HelloWorld::changeSlider(Ref* sender, SliderEventType type)
{
Slider* node = dynamic_cast<Slider*>(sender);
if (type == SliderEventType::SLIDER_PERCENTCHANGED)
{
float value = node->getPercent();
}
}
//4.0 over
{
auto slider = Slider::create();
slider->loadBarTexture(/*base texture*/);
slider->loadProgressBarTexture(/*progress texture*/);
slider->loadSlidBallTextures(/*ball normal, ball touched, bal disable, Widget::TextureResType*/);
slider->setPosition(/*Vec2*/);
addChild(slider);
slider->addEventListener((ui::Slider::ccSliderCallback)CC_CALLBACK_2(HelloWorld::changeSlider, this));//<-여기
}
void HelloWorld::changeSlider(Ref* sender, ui::Slider::EventType type)//<-여기
{
Slider* node = dynamic_cast<Slider*>(sender);
if (type == ui::Slider::EventType::ON_PERCENTAGE_CHANGED)//<-여기가 다르다
{
float value = node->getPercent();
}
}
체크박스도 비슷
3.17.x
checkbox->addEventListenerCheckBox(this, checkboxselectedeventselector(HelloWorld::clickCheck));
~
void HelloWorld::clickCheck(Ref* sender, CheckBoxEventType type)
4.0
checkbox->addEventListener((ui::CheckBox::ccCheckBoxCallback)CC_CALLBACK_2(HelloWorld::clickCheck, this));
~
void HelloWorld::clickCheck(Ref* sender, ui::CheckBox::EventType type)
최근 덧글