1

私は初めてカスタムinitを書いています.sentance01textは正常にロードされるので、plistが正常に読み取られていることはわかっています:)しかし、sentance01Timingのタイミングが機能しないようです><

このメソッドは、関連する配列をaudioIntervals 配列にロードする objectForKey である、ユーザーによって入力されたsentance01Timingを渡す必要があります。

現時点では、NSString を使用して辞書にアクセスし、これを配列audiointervalsに渡し ていますが、これは間違っているようで、エラーが発生します。テキストでは機能したが、これでは機能しなかった理由がわかりませんか? 終了 - 理由: '-[__NSCFArray isFileURL]:

おそらく私は本当にばかげたことをしています><できれば助けてくださいps古いMacを使用する必要があります(私の素敵なものは現在修復中です-アーク以外を使用します-その後、素敵なMacが戻ってきたらコードを更新します、そのため、現時点でオブジェクトを解放していない理由を覚えておいてください...)

HelloWorld.m

#import "HelloWorldLayer.h"
#import "TextWithAudioHilight.h"

@implementation HelloWorldLayer

+(CCScene *) scene
{
CCScene *scene = [CCScene node];
HelloWorldLayer *layer = [HelloWorldLayer node];
[scene addChild: layer];
return scene;
}


-(id) init
{
if( (self=[super init])) {
    TextWithAudioHilight *pagetext = [[TextWithAudioHilight   alloc]initWith5:@"test words here,\nmore words, more words.." 
                                                           sentance01Timing:@"TimingSEN01" 
                                                             withSoundNamed:nil];
    [self addChild:pagetext];
}
return self;
}


- (void) dealloc
{
[super dealloc];
}
@end

TextWithAudio.h

#import <Foundation/Foundation.h>
#import "cocos2d.h"

@interface TextWithAudioHilight : CCLayer {

}

@property(nonatomic,retain)NSString *sentance01text;
@property(nonatomic,retain)NSString *sentance01Timing;
@property(nonatomic,retain)NSString *soundNamed;

-(id)initWith5:(NSString *)sentance01text sentance01Timing:(NSString *)sentance01Timing withSoundNamed:(NSString *)soundNamed;

@end

TextWithAudio.m

#import "TextWithAudioHilight.h"

@implementation TextWithAudioHilight

@synthesize sentance01text = _sentance01text;
@synthesize sentance01Timing = _sentance01Timing;
@synthesize soundNamed = _soundNamed;

-(id)initWith5:(NSString *)sentance01text sentance01Timing:(NSString *)sentance01Timing  withSoundNamed:(NSString *)soundNamed
 {
self = [super init];
if(self)
{
    CGSize size = [[CCDirector sharedDirector] winSize];
    NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"AudioTimings" ofType:@"plist"]; 
    NSDictionary* myDictionary = [NSDictionary dictionaryWithContentsOfFile:plistPath];

    //needs create array that has timing information as an array from the plist
    //NSString *Text01timing = [myDictionary objectForKey:@"sentance01Timing"];
    NSString *Text01timing = [myDictionary objectForKey:_sentance01Timing];
    NSMutableArray * audioIntervals = [NSMutableArray arrayWithContentsOfFile:Text01timing];
                                              NSLog(@"Text01timing %f",audioIntervals);


    //needs to create a label and put the text in it
    CGSize maxSize = {800, 200};
    CGSize actualSize = [sentance01text sizeWithFont:[UIFont fontWithName:@"Helvetica" size:20]
    constrainedToSize:maxSize lineBreakMode:UILineBreakModeWordWrap];

    CGSize containerSize = { actualSize.width, actualSize.height };
    CCLabelTTF *label = [CCLabelTTF labelWithString:sentance01text dimensions:containerSize
                alignment:UITextAlignmentLeft fontName:@"Helvetica"
                                           fontSize:20];

    // Center label
    label.position = ccp( size.width /2 , size.height/6 );
    label.color = ccc3(80, 80, 80);
    // Add label to this scene
    [self addChild:label z:7];


}
return self;
}
@end

AudioTimings.plist

<plist version="1.0">
<dict>
<key>TimingSEN01</key>
<array>
    <real>0.044444</real>
    <real>0.143054</real>
    <real>0.213886</real>
    <real>0.48055</real>
    <real>0.844434</real>
    <real>1.345817</real>
    <real>1.470816</real>
    <real>1.577759</real>
    <real>2.020809</real>
    <real>2.331917</real>
</array>
</dict>
</plist>
4

1 に答える 1