Cに投稿されたコード一覧

C video_generator

/*
Video scanline offset, HSync and  VSync generator
resolution: 378(H) x 264(V) or 378(H) x 528(V)
dot clock:    6.0 MHz or 12.0 MHz
line clock:  15.9 kHz or 31.9 kHz
frame clock: 62.6 Hz

reset:
	system reset signal
clock_master:
	video master clock (48MHz)
doubleline:
	0: hsync 16.0kHz (real), 1: hsync 32.0kHz (scaled)
clock_counter:
	11:0 master clock counter on current line
	0: 24MHz, 1:12MHz(scaled dot clock), 2:6MHz (real dot clock)
	11:3  real dot counter (based scanline starting point)
video_hsync, video_vsync:
	connect video monitor
count_x:
	screen axis x
count_y:
	0   dobuleline:0 not used; doubleline:1 scanline draw count
	9:1 screen axis y

doubleline:0
      count_x|0         -           319|320 - 377|0
 count_y[9:1]|y+0                                |y+1   y range 0-263
clock_counter|0 -                            3023|0

doubleline:1
      count_x|0 - 319|320 - 377|0 - 319|320 - 377|0
 count_y[9:0]|y+0              |y+1              |y+1   y range 0-527
clock_counter|0 -                            3023|0

clock_counter bitfield assignments
9:3 scanline offset x (0 - 377)
2:0 1/divided dot
*/

// `define MASTER_48MHz
// `define MASTER_84MHz
// `define MASTER_96MHz
`include "gametitle.h"

module video_generator#(
	parameter SCANLINE_WIDTH = 9'd378,
	parameter SCANLINE_HEIGHT = 9'd264
)(
	input reset, clock_master, doubleline_switch,
	output [11:0] clock_counter,
	output video_hsync, video_vsync,
	output reg [8:0] count_x, output [9:1] tcount_y
);
	reg [9:0] count_y;
	assign tcount_y = count_y[9:1];
	reg doubleline;

`ifdef MASTER_48MHz
	reg [11:0] tcounter;
	wire dotnext = doubleline == 1'b0 ?
		tcounter[2:0] == 3'b111 : tcounter[1:0] == 2'b11;

	always @(posedge clock_master or negedge reset) begin
		if(reset == 0) begin
			tcounter <= 10'd0;
		end else if(
			tcounter[11:3] == (SCANLINE_WIDTH - 9'd1) &&
			tcounter[2:0] == 3'b111
		) begin
			tcounter <= 10'd0;
		end else begin
			tcounter <= tcounter + 10'd1;
		end
	end

	assign clock_counter = tcounter;
`endif
`ifdef MASTER_84MHz
	reg [12:4] tcounter;
	reg [3:0] dot_divide;
	wire dotnext = doubleline == 1'b0 ?
		dot_divide[3:0] == 4'b1111 : dot_divide[2:0] == 3'b111;

	always @(posedge clock_master or negedge reset) begin
		if(reset == 0) begin
			dot_divide <= 4'd1;
			tcounter <= 9'd0;
		end else if(
			tcounter[12:4] == (SCANLINE_WIDTH - 9'd1) &&
			dot_divide[3:0] == 4'b1111
		) begin
			dot_divide <= 4'd1;
			tcounter <= 9'd0;
		end else if(dot_divide[2:0] == 3'b111) begin
			if(dot_divide[3] == 1'b1) begin
				tcounter <= tcounter + 9'd1;
			end
			dot_divide[3] <= ~dot_divide[3];
			dot_divide[2:0] <= 3'd1;
		end else begin
			dot_divide[2:0] <= dot_divide[2:0] + 3'd1;
		end
	end
	assign clock_counter = {tcounter, dot_divide[3:1]};
`endif
`ifdef MASTER_96MHz
	reg [12:0] tcounter;
	wire dotnext = doubleline == 1'b0 ?
		tcounter[3:0] == 4'b1111 : tcounter[2:0] == 3'b111;

	always @(posedge clock_master or negedge reset) begin
		if(reset == 0) begin
			tcounter <= 11'd0;
		end else if(
			tcounter[12:4] == (SCANLINE_WIDTH - 9'd1) &&
			tcounter[3:0] == 4'b1111
		) begin
			tcounter <= 11'd0;
		end else begin
			tcounter <= tcounter + 11'd1;
		end
	end
	assign clock_counter = tcounter[12:1];
`endif

	assign video_hsync = count_x >= 9'd305 && count_x < 9'd335 ? 1'b0 : 1'b1;
	always @(posedge clock_master or negedge reset) begin
		if(reset == 0) begin
			count_x <= 9'd0;
		end else if(dotnext) begin
			if(count_x < (SCANLINE_WIDTH - 9'd1)) begin
				count_x <= count_x + 9'd1;
			end else begin
				count_x <= 9'd0;
			end
		end
	end

	//vactive generator
	always @(posedge clock_master or negedge reset) begin
		if(reset == 0) begin
			count_y[9:1] <= 9'd232;
			count_y[0] <= 1'b0; //doubleline == 0 ? 1'b1 : 1'b0;
		end else if(dotnext && count_x == (SCANLINE_WIDTH - 9'd1)) begin
			if(doubleline == 0) begin
				if(count_y[9:1] < (SCANLINE_HEIGHT - 9'd1)) begin
					count_y[9:1] <= count_y[9:1] + 9'd1;
					count_y[0] <= 1'b1;
				end else begin
					count_y[9:1] <= 9'd0;
					count_y[0] <= 1'b1;
					doubleline <= doubleline_switch;
				end
			end else if(doubleline == 1) begin
				if(count_y[9:0] < ({SCANLINE_HEIGHT, 1'b0} - 10'd1)) begin
					count_y[9:0] <= count_y[9:0] + 10'd1;
				end else begin
					count_y[9:0] <= 10'd0;
					doubleline <= doubleline_switch;
				end
			end
		end
	end

	//vsync generator
	assign video_vsync = (count_y[9:1] >= 9'd248 && count_y[9:1] < 9'd250) ? 1'b0 : 1'b1;
endmodule

C グローバルアラインメント

#include<stdio.h>
#include<string.h>
#define SMAX    64
#define MATCH    2
#define UNMATCH -1
#define GAP     -1

int main(void){
    char str1[] = "ATGCGGATTCAGAT";
    char str2[] = "ATGATCCGT";
    char str3[2*SMAX];
    char str4[2*SMAX];
    int m[SMAX][SMAX];
    int w, h, i, j, k;

    // 初期化
    w = strlen(str1) + 1;
    h = strlen(str2) + 1;
    for(i = 0; i < w; i++){
        m[i][0] = 0;
    }
    for(j = 0; j < h; j++){
        m[0][j] = 0;
    }

    // 動的計画法によるアラインメント
    for(j = 1; j < h; j++){
        for(i = 1; i < w; i++){
            int s = (str1[i-1] == str2[j-1]) ? MATCH : UNMATCH;
            int max = m[i-1][j-1] + s;
            if(max < m[i-1][j] + GAP){
                max = m[i-1][j] + GAP;
            }else if(max < m[i][j-1] + GAP){
                max = m[i][j-1] + GAP;
            }
            m[i][j] = max;
        }
    }

    // スコア出力
    for(j = 0; j < h; j++){
        for(i = 0; i < w; i++){
            printf("%2d ", m[i][j]);
        }
        puts("");
    }

    // トレースバック
    i = w - 1;
    j = h - 1;
    k = SMAX - 1;
    str3[k] = '';
    str4[k] = '';
    while( !(i == 0 && j == 0) ){
        int s = (str1[i-1] == str2[j-1]) ? MATCH : UNMATCH;
        if(m[i-1][j-1] + s == m[i][j]){
            k--;
            str3[k] = str1[--i];
            str4[k] = str2[--j];
        }else if(m[i-1][j] + GAP == m[i][j] || j == 0){
            k--;
            str3[k] = str1[--i];
            str4[k] = '_';
        }else if(m[i][j-1] + GAP == m[i][j] || i == 0){
            k--;
            str3[k] = '_';
            str4[k] = str2[--j];
        }
    }

    // 結果出力
    puts(&str3[k]);
    puts(&str4[k]);

    return 0;
}

C HSP→Cに変換[Menu]

//
//	hsp3cnv generated source
//	[menu.ax]
//
#include "hsp3r.h"

#define _HSP3CNV_DATE "2011/10/22"
#define _HSP3CNV_TIME "16:18:58"
#define _HSP3CNV_MAXVAR 2
#define _HSP3CNV_MAXHPI 0
#define _HSP3CNV_VERSION 0x301
#define _HSP3CNV_BOOTOPT 0

/*-----------------------------------------------------------*/

static PVal *Var_0;
static PVal *Var_1;

/*-----------------------------------------------------------*/

void __HspEntry( void ) {
	// Var initalize
	Var_0 = &mem_var[0];
	Var_1 = &mem_var[1];

	// title "sample"
	PushStr("sample");
	Extcmd(16,1);
	// screen 0, 400, 200
	PushInt(200);
	PushInt(400);
	PushInt(0);
	Extcmd(42,3);
	// repeat
	PushLabel(0);
	PushLabel(2); Prgcmd(4,2); return;
	TaskSwitch(2);
}

static void L0002( void ) {
	// redraw 0
	PushInt(0);
	Extcmd(27,1);
	// gradf 0, 0, 400, 200, 1, 3355443, 1118481
	PushInt(1118481);
	PushInt(3355443);
	PushInt(1);
	PushInt(200);
	PushInt(400);
	PushInt(0);
	PushInt(0);
	Extcmd(56,7);
	// gradf 10, 10, 160, 35, 1, 30464, 17408
	PushInt(17408);
	PushInt(30464);
	PushInt(1);
	PushInt(35);
	PushInt(160);
	PushInt(10);
	PushInt(10);
	Extcmd(56,7);
	// gradf 11, 11, 158, 33, 1, 3355443, 2236962
	PushInt(2236962);
	PushInt(3355443);
	PushInt(1);
	PushInt(33);
	PushInt(158);
	PushInt(11);
	PushInt(11);
	Extcmd(56,7);
	// if (((mousex>=10mousey>=10)&mousey<=45)&mousex<=170)&
	PushFuncEnd(); PushExtvar(0,0); PushInt(10); CalcGtEqI(); PushFuncEnd(); PushExtvar(1,0); PushInt(10); CalcGtEqI(); CalcAndI(); PushFuncEnd(); PushExtvar(1,0); PushInt(45); CalcLtEqI(); CalcAndI(); PushFuncEnd(); PushExtvar(0,0); PushInt(170); CalcLtEqI(); CalcAndI();
	if (HspIf()) { TaskSwitch(3); return; }
	// gradf 11, 11, 158, 33, 1, 3355443, 2236979
	PushInt(2236979);
	PushInt(3355443);
	PushInt(1);
	PushInt(33);
	PushInt(158);
	PushInt(11);
	PushInt(11);
	Extcmd(56,7);
	// stick _HspVar0, , 1
	PushInt(1);
	PushDefault();
	PushVAP(Var_0,0);
	Extcmd(52,3);
	// if (_HspVar0=256_HspVar1=0)&
	PushVar(Var_0,0); PushInt(256); CalcEqI(); PushVar(Var_1,0); PushInt(0); CalcEqI(); CalcAndI();
	if (HspIf()) { TaskSwitch(4); return; }
	// _HspVar1 =1
	PushInt(1);
	VarSet(Var_1,0);
	TaskSwitch(5);
}

static void L0004( void ) {
	// else
	// if (_HspVar0=256_HspVar1=1)&
	PushVar(Var_0,0); PushInt(256); CalcEqI(); PushVar(Var_1,0); PushInt(1); CalcEqI(); CalcAndI();
	if (HspIf()) { TaskSwitch(6); return; }
	// _HspVar1 =0
	PushInt(0);
	VarSet(Var_1,0);
	TaskSwitch(6);
}

static void L0006( void ) {
	TaskSwitch(5);
}

static void L0005( void ) {
	TaskSwitch(3);
}

static void L0003( void ) {
	// if _HspVar1=1
	PushVar(Var_1,0); PushInt(1); CalcEqI();
	if (HspIf()) { TaskSwitch(7); return; }
	// gradf 11, 11, 158, 33, 1, 3355443, 2236979
	PushInt(2236979);
	PushInt(3355443);
	PushInt(1);
	PushInt(33);
	PushInt(158);
	PushInt(11);
	PushInt(11);
	Extcmd(56,7);
	// gradf 200, 20, 180, 35, 1, 3355443, 3355443
	PushInt(3355443);
	PushInt(3355443);
	PushInt(1);
	PushInt(35);
	PushInt(180);
	PushInt(20);
	PushInt(200);
	Extcmd(56,7);
	// pos 220, 30
	PushInt(30);
	PushInt(220);
	Extcmd(17,2);
	// mes "Menu 1"
	PushStr("Menu 1");
	Extcmd(15,1);
	// gradf 200, 60, 180, 35, 1, 3355443, 3355443
	PushInt(3355443);
	PushInt(3355443);
	PushInt(1);
	PushInt(35);
	PushInt(180);
	PushInt(60);
	PushInt(200);
	Extcmd(56,7);
	// pos 220, 70
	PushInt(70);
	PushInt(220);
	Extcmd(17,2);
	// mes "Menu 2"
	PushStr("Menu 2");
	Extcmd(15,1);
	// gradf 200, 100, 180, 35, 1, 3355443, 3355443
	PushInt(3355443);
	PushInt(3355443);
	PushInt(1);
	PushInt(35);
	PushInt(180);
	PushInt(100);
	PushInt(200);
	Extcmd(56,7);
	// pos 220, 110
	PushInt(110);
	PushInt(220);
	Extcmd(17,2);
	// mes "Menu 3"
	PushStr("Menu 3");
	Extcmd(15,1);
	// gradf 200, 140, 180, 35, 1, 3355443, 3355443
	PushInt(3355443);
	PushInt(3355443);
	PushInt(1);
	PushInt(35);
	PushInt(180);
	PushInt(140);
	PushInt(200);
	Extcmd(56,7);
	// pos 220, 150
	PushInt(150);
	PushInt(220);
	Extcmd(17,2);
	// mes "Menu 4"
	PushStr("Menu 4");
	Extcmd(15,1);
	TaskSwitch(7);
}

static void L0007( void ) {
	// font "Meiryo", 13
	PushInt(13);
	PushStr("Meiryo");
	Extcmd(20,2);
	// color 255, 255, 255
	PushInt(255);
	PushInt(255);
	PushInt(255);
	Extcmd(24,3);
	// pos -1000, -1000
	PushInt(-1000);
	PushInt(-1000);
	Extcmd(17,2);
	// mes "設定>>"
	PushStr("設定>>");
	Extcmd(15,1);
	// pos ((160-ginfo(14))/2)+10, ((35-ginfo(15))/2)+10
	PushInt(35); PushFuncEnd(); 	PushInt(15);
	PushExtvar(256,1); CalcSubI(); PushInt(2); CalcDivI(); PushInt(10); CalcAddI();
	PushInt(160); PushFuncEnd(); 	PushInt(14);
	PushExtvar(256,1); CalcSubI(); PushInt(2); CalcDivI(); PushInt(10); CalcAddI();
	Extcmd(17,2);
	// mes "設定>>"
	PushStr("設定>>");
	Extcmd(15,1);
	// redraw 1
	PushInt(1);
	Extcmd(27,1);
	// wait 1
	PushInt(1);
	Prgcmd(7,1);
	TaskSwitch(8);
}

static void L0008( void ) {
	// loop
	Prgcmd(5,0);
	return;
	TaskSwitch(0);
}

static void L0000( void ) {
	TaskSwitch(1);
}

static void L0001( void ) {
	// stop
	Prgcmd(17,0);
	return;
	// goto
	Prgcmd(0,0);
	return;
}

//-End of Source-------------------------------------------

CHSP3_TASK __HspTaskFunc[]={
(CHSP3_TASK) L0000,
(CHSP3_TASK) L0001,
(CHSP3_TASK) L0002,
(CHSP3_TASK) L0003,
(CHSP3_TASK) L0004,
(CHSP3_TASK) L0005,
(CHSP3_TASK) L0006,
(CHSP3_TASK) L0007,
(CHSP3_TASK) L0008,

};

/*-----------------------------------------------------------*/

/*-----------------------------------------------------------*/

void __HspInit( Hsp3r *hsp3 ) {
	hsp3->Reset( _HSP3CNV_MAXVAR, _HSP3CNV_MAXHPI );
	hsp3->SetDataName( 0 );
	hsp3->SetFInfo( 0, 0 );
	hsp3->SetLInfo( 0, 0 );
	hsp3->SetMInfo( 0, 0 );
}

/*-----------------------------------------------------------*/

C HelloWorld

#include <stdio.h>

int main()
{
    pirntf("helloworld!\n");
    return 0;
}

C 初カキコ…ども

/*テスト^皿^*/
#include<stdio.h>

main(){
	printf("初カキコ…ども\n");
}

C bug?

    uint8_t* baseAddress = CVPixelBufferGetBaseAddress(imageBuffer);
    void* free_me = 0;
    if (true) { // iOS bug?
        uint8_t* tmp = baseAddress;
        int bytes = bytesPerRow*height;
        free_me = baseAddress = (uint8_t*)malloc(bytes);
        baseAddress[0] = 0xdb;
        memcpy(baseAddress,tmp,bytes);
    }
    free(free_me);

C cocos2d iPhoneで、Layerを使って、タップの移動量によりスクロールさせようとすると、移動量に比例して黒い四角が表示される件

//  【その他のファイルについて】
//  cocos2dを使用してデフォルトのHelloWorldが表示される状態から
//  BaseLayer.h, BaseLayer.m, TextLayer.h, TextLayer.m
//  を作成し、背景画像としてtest_haikei.png, test_haikei-hd.pngを設置しました。
//  画像サイズはtest_haikei.pnpが320×480、test_haikei-hd.pngが640×960です。
//
//  各ヘッダはほとんどデフォルトですがBaseLayer.hとTextLayer.hには
//  #import "cocos2d.h"
//  と
//  + (CCScene *) scene;
//  があります。TextLayer.hだけ下のようにdefineがあります。
//
//
// 【生じている不具合】
//  表示しているテキストをタップしたまま上下にドラッグすると
//  背景画像はそのままに、その方向にテキストがスクロールすると思います。
//
//  ところが実機でテストすると、上方向にドラッグすると左下に、上方向にドラッグすると左上に
//  ドラッグした移動量に応じた大きさで、黒い四角が最前面に表示されてしまいます。
//  この現象ではXCode4.1上でのiOSシミュレータでは生じません。実機でのみ生じています。
//
// これを解決する方法は何か?
//  そのためにコードを投稿してみた次第です。
//
//
//  【ついでに】
//  実は、サンプルコードを書く前に問題となったコードがあるわけですが
//  そちらではFPSが60だったのに
//  このサンプルでは何故かシミュレータでFPSが30になります。
//  ついでを言うとこれも謎です。
//
//
//  全然わからなくて困っています。誰か助けて!!

//
//  TextLayer.h
//  scrollTest
//
//  Created by admin on 11/09/05.
//  Copyright 2011年 __MyCompanyName__. All rights reserved.
//

#import "CCLayer.h"
#import "cocos2d.h"

@interface TextLayer : CCLayer

+ (CCScene *) scene;

#define ActionTagHelloWorldLayerMovesBack 65535

@end

C cocos2d iPhoneで、Layerを使って、タップの移動量によりスクロールさせようとすると、移動量に比例して黒い四角が表示される件

//
//  AppDelegate.m
//  scrollTest
//
//  Created by admin on 11/09/05.
//  Copyright __MyCompanyName__ 2011年. All rights reserved.
//

#import "cocos2d.h"

#import "AppDelegate.h"
#import "GameConfig.h"
#import "HelloWorldLayer.h"
#import "RootViewController.h"

@implementation AppDelegate

@synthesize window;

- (void) removeStartupFlicker
{
	//
	// THIS CODE REMOVES THE STARTUP FLICKER
	//
	// Uncomment the following code if you Application only supports landscape mode
	//
#if GAME_AUTOROTATION == kGameAutorotationUIViewController

//	CC_ENABLE_DEFAULT_GL_STATES();
//	CCDirector *director = [CCDirector sharedDirector];
//	CGSize size = [director winSize];
//	CCSprite *sprite = [CCSprite spriteWithFile:@"Default.png"];
//	sprite.position = ccp(size.width/2, size.height/2);
//	sprite.rotation = -90;
//	[sprite visit];
//	[[director openGLView] swapBuffers];
//	CC_ENABLE_DEFAULT_GL_STATES();

#endif // GAME_AUTOROTATION == kGameAutorotationUIViewController
}
- (void) applicationDidFinishLaunching:(UIApplication*)application
{
/*
	// Init the window
	window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

	// Try to use CADisplayLink director
	// if it fails (SDK < 3.1) use the default director
	if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
		[CCDirector setDirectorType:kCCDirectorTypeDefault];

	CCDirector *director = [CCDirector sharedDirector];

	// Init the View Controller
	viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
	viewController.wantsFullScreenLayout = YES;

	//
	// Create the EAGLView manually
	//  1. Create a RGB565 format. Alternative: RGBA8
	//	2. depth format of 0 bit. Use 16 or 24 bit for 3d effects, like CCPageTurnTransition
	//
	//
	EAGLView *glView = [EAGLView viewWithFrame:[window bounds]
								   pixelFormat:kEAGLColorFormatRGB565	// kEAGLColorFormatRGBA8
								   depthFormat:0						// GL_DEPTH_COMPONENT16_OES
						];

	// attach the openglView to the director
	[director setOpenGLView:glView];

//	// Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
//	if( ! [director enableRetinaDisplay:YES] )
//		CCLOG(@"Retina Display Not supported");

	//
	// VERY IMPORTANT:
	// If the rotation is going to be controlled by a UIViewController
	// then the device orientation should be "Portrait".
	//
	// IMPORTANT:
	// By default, this template only supports Landscape orientations.
	// Edit the RootViewController.m file to edit the supported orientations.
	//
#if GAME_AUTOROTATION == kGameAutorotationUIViewController
	[director setDeviceOrientation:kCCDeviceOrientationPortrait];
#else
	[director setDeviceOrientation:kCCDeviceOrientationLandscapeLeft];
#endif
*/
    CC_DIRECTOR_INIT();
    CCDirector *director = [CCDirector sharedDirector];
    if( ![director enableRetinaDisplay:YES] )
        CCLOG(@"Retina Display Not supported");

    [director setDeviceOrientation:kCCDeviceOrientationPortrait];

	[director setAnimationInterval:1.0/60];
	[director setDisplayFPS:YES];

	// make the OpenGLView a child of the view controller
//	[viewController setView:glView];

	// make the View Controller a child of the main window
	[window addSubview: viewController.view];

	[window makeKeyAndVisible];

	// Default texture format for PNG/BMP/TIFF/JPEG/GIF images
	// It can be RGBA8888, RGBA4444, RGB5_A1, RGB565
	// You can change anytime.
	[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];

	// Removes the startup flicker
	[self removeStartupFlicker];

	// Run the intro Scene
	[[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]];
}

- (void)applicationWillResignActive:(UIApplication *)application {
	[[CCDirector sharedDirector] pause];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
	[[CCDirector sharedDirector] resume];
}

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
	[[CCDirector sharedDirector] purgeCachedData];
}

-(void) applicationDidEnterBackground:(UIApplication*)application {
	[[CCDirector sharedDirector] stopAnimation];
}

-(void) applicationWillEnterForeground:(UIApplication*)application {
	[[CCDirector sharedDirector] startAnimation];
}

- (void)applicationWillTerminate:(UIApplication *)application {
	CCDirector *director = [CCDirector sharedDirector];

	[[director openGLView] removeFromSuperview];

	[viewController release];

	[window release];

	[director end];
}

- (void)applicationSignificantTimeChange:(UIApplication *)application {
	[[CCDirector sharedDirector] setNextDeltaTimeZero:YES];
}

- (void)dealloc {
	[[CCDirector sharedDirector] end];
	[window release];
	[super dealloc];
}

@end

C cocos2d iPhoneで、Layerを使って、タップの移動量によりスクロールさせようとすると、移動量に比例して黒い四角が表示される件

//
//  TextLayer.m
//  scrollTest
//
//  Created by admin on 11/09/05.
//  Copyright 2011年 __MyCompanyName__. All rights reserved.
//

#import "TextLayer.h"

@implementation TextLayer

static BOOL headerMarkFlg;
static BOOL footerMarkFlg;
static int limitSelfSize;
static CGPoint lastTouchLocation;

+ (CCScene *) scene{
    CCLOG(@"%@ : %@", NSStringFromSelector(_cmd), self);

    CCScene *scene = [CCScene node];
    TextLayer *layer = [TextLayer node];
    [scene addChild:layer];

    return scene;
}

- (void) dealloc
{
    CCLOG(@"%@ : %@", NSStringFromSelector(_cmd), self);

	[super dealloc];
}

- (id)init
{
    CCLOG(@"%@ : %@", NSStringFromSelector(_cmd), self);

    self = [super init];
    if (self) {
        // Initialization code here.
        headerMarkFlg = YES;
        footerMarkFlg = YES;

        //出力テキスト
        NSArray *textArray = [[NSArray alloc] initWithObjects:
                              @"背景画像出典: pro.foto",
                              @"http://pro.foto.ne.jp",
                              @"",
                              @"以下の文章は次を引用した。",
                              @"ただしこれは出力文字のサンプル",
                              @"として使用するものであり",
                              @"正確性を保証しない。",
                              @"",
                              @"GNU 劣等一般公衆利用許諾契約書",
                              @"バージョン 2.1、1999年2月",
                              @"日本語訳、2002年8月14日",
                              @"ソフトウェア向けライセンスの",
                              @"大半は、あなたがそのソフトウェア",
                              @"を共有したり変更したりする自由を",
                              @"奪うよう設計されています。",
                              @"対照的に、各種のGNU 一般公衆",
                              @"利用許諾契約書は、あなたがフリー",
                              @"ソフトウェアを共有したり改変",
                              @"したりする自由を保証する",
                              @"--すなわち、ソフトウェアが",
                              @"そのユーザすべてにとって",
                              @"フリーであることを保証する",
                              @"ことを目的としています。",
                              @"",
                              @"このライセンス、",
                              @"「劣等一般公衆利用許諾契約書」は、",
                              @"フリーソフトウェア財団やこの契約書",
                              @"を適用すると決めたフリーソフト",
                              @"ウェア財団以外の作者による特定の",
                              @"ソフトウェアパッケージ--典型的には",
                              @"ライブラリ--のいくつかに適用され",
                              @"ます。あなたもこの契約書を適用する",
                              @"ことができますが、私たちとしてはまず",
                              @"最初に、ある特定の用途においてこの",
                              @"契約書と通常の一般公衆利用許諾契約書",
                              @"のどちらを適用するのが戦略としてより",
                              @"優れているかを、以下の説明に即して",
                              @"注意深く考えてみることをおすすめし",
                              @"ます。",
                              nil];

        //表示
        int i=100;
        limitSelfSize = 400;
        for(NSString *str in textArray){
            CCLabelTTF *label1 = [CCLabelTTF labelWithString:str fontName:@"HiraKakuProN-W3" fontSize:17];
            label1.color = ccWHITE;
            label1.position = ccp(label1.contentSize.width/2+10, limitSelfSize);
            [self addChild:label1 z:2*i tag:2*i];

            CCLabelTTF *label2 = [CCLabelTTF labelWithString:str fontName:@"HiraKakuProN-W3" fontSize:17];
            label2.color = ccBLACK;
            label2.position = ccp(label1.position.x+2, label1.position.y-2);
            [self addChild:label2 z:2*i-1 tag:2*i-1];
            limitSelfSize -= 22;
            i++;
        }

        self.isTouchEnabled = YES;
    }

    return self;
}

- (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    CCLOG(@"%@ : %@", NSStringFromSelector(_cmd), self);

    UITouch *touch = [touches anyObject];
    lastTouchLocation = [self convertTouchToNodeSpace:touch];
    [self stopActionByTag:ActionTagHelloWorldLayerMovesBack];
}

-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    CCLOG(@"%@ : %@", NSStringFromSelector(_cmd), self);

    UITouch *touch = [touches anyObject];
    CGPoint currentTouchLocation = [self convertTouchToNodeSpace:touch];
    CGPoint moveTo = ccpSub(lastTouchLocation, currentTouchLocation);
    moveTo = ccp(0, moveTo.y*(-1));

    CGPoint checkLocation = ccpAdd(self.position, moveTo);
    if((!headerMarkFlg && checkLocation.y < 0) || (!footerMarkFlg && checkLocation.y > 50-limitSelfSize)){
        CCLOG(@"Scroll stoped");
        return;
    }
    self.position = checkLocation;

    if(self.position.y < 0){
        headerMarkFlg = NO;
        footerMarkFlg = YES;
    }else if(self.position.y > 50-limitSelfSize){
        headerMarkFlg = YES;
        footerMarkFlg = NO;
    }else{
        headerMarkFlg = YES;
        footerMarkFlg = NO;
    }

}
@end

C cocos2d iPhoneで、Layerを使って、タップの移動量によりスクロールさせようとすると、移動量に比例して黒い四角が表示される件

//
//  BaseLayer.m
//  scrollTest
//
//  Created by admin on 11/09/05.
//  Copyright 2011年 __MyCompanyName__. All rights reserved.
//

#import "BaseLayer.h"

@implementation BaseLayer

+ (CCScene *) scene{
    CCLOG(@"%@ : %@", NSStringFromSelector(_cmd), self);

    CCScene *scene = [CCScene node];
    BaseLayer *layer = [BaseLayer node];
    [scene addChild:layer];

    return scene;
}

- (void) dealloc
{
    CCLOG(@"%@ : %@", NSStringFromSelector(_cmd), self);

	[super dealloc];
}

- (id)init
{
    CCLOG(@"%@ : %@", NSStringFromSelector(_cmd), self);
    self = [super init];
    if (self) {
        // Initialization code here.
        CGSize size = [[CCDirector sharedDirector] winSize];
        CCSprite *haikei = [CCSprite spriteWithFile:@"test_haikei.png"];
        haikei.position =ccp(size.width/2, size.height/2);
        [self addChild:haikei];
    }

    return self;
}

@end
Total Pages: 5 / 7« 先頭...34567

よく投稿されているコード

タグ

最近投稿されたコード