• CocosBuilder的Inspector及让Text View实时更新内容+binding控件到基类成员


    CocosBuilder里面,有很多个Inspector开头的文件,配套一套xib,h以及m文件。他们都是从共同的基类InspectorValue派生出来。如果要给节点增加新的属性,属性的类型又已经有了合适的Inspector可以表现,那么只需要在节点的CCBPProperties.plist文件中,加上属性类型,名称等相关信息,就能够直接在编辑器里使用了,无需关心其余的存取细节等,只需要对Cocos2dx里的OnHandlePropTypeXXX进行相应处理。如果没有合适的Inspector,则需要自己增加,并要在以下地方进行修改:

    1. CCBReaderInternal的(void) setProp:(NSString*)name ofType:(NSString*)type toValue:(id)serializedValue forNode:(CCNode*)node parentSize:(CGSize)parentSize
    2. CCBWriterInternal的(NSMutableDictionary*) dictionaryFromCCObject:(CCNode *)node
    3. CCBXCocos2diPhoneWriter的setupPropTypes/(void) writeProperty:(id) prop type:(NSString*)type name:(NSString*)name platform:(NSString*)platform/(void) cacheStringsForNode:(NSDictionary*) node
    4. Cocos2dx方面的CCBReader.h里的枚举,以及CCNodeLoader的ParseProperties/ParsePropTypeXXX

    修改的地方都仿照别的类似inspector来写就好,之前似懂非懂的把一个普通属性弄成array了,导致存出来是array,读却是按非array来读,怎么都不对。

    对Mac应用编程属于半知不解的状态,仿照Cocosbuilder里面的InspectorText,弄了个差不多的InspectorScript,里面主要就是一个标明属性名称的text label,和一个输入脚本的text view。

    遇到的第一个问题是,属性名称这个属性,是在基类InspectorValue里的,怎么能绑定到我自己的InspectorScript的头文件里呢,人家根本没有这一行。想了想就转过弯了,直接去InspectorValue的头文件里绑定就好了嘛,一试果然正解。

    遇到的第二个问题就没那么幸运了,我的text view里面,敲进去的内容,没法在第一时间被感知,所以编辑完成之后,一定要切换到别的控件才能被存下来。当时赶时间就先凑合提交了,最近有空才又看回这个问题。开始觉得应该是个属性勾选上就好了,对比了一遍没发现不同;又以为是要实现delegate,照着加了没用;不科学的想,难道因为人家用的带属性string我直接用的value,改过来还是不可以。最后要放弃的时候,又点了一遍,才发现是在xib的右数第二个,bindings inspector这一栏,把binding的那个项目的向下小箭头点开,里面有诸多属性,其中就有Continuously Updates Value这一栏,果然就是个勾选的属性呀!

  • 相关阅读:
    OsharpNS轻量级.net core快速开发框架简明入门教程-基于Osharp实现自己的业务功能
    OsharpNS轻量级.net core快速开发框架简明入门教程-代码生成器的使用
    一起创业吧:兼职程序员接单平台
    .NET、PHP、MySql、JS中的时间戳你每次是手写还是复制?这篇文章让你一次性搞懂
    .NET和PHP程序员如何通过技术快速变现
    .NET程序员我是如何通过一个产品在2年内买车买房
    .NET方法无限传参数技术
    .NET 增加扩展方法
    毕业10年总结与2019展望
    jQuery 1.9/2.0/2.1及其以上 on 无效的解决办法
  • 原文地址:https://www.cnblogs.com/unionfind/p/3140211.html
Copyright © 2020-2023  润新知