andengine入门教程之学习笔记

 更新时间:2016年9月20日 20:00  点击:1777
本文章简单的介绍了关于andengine入门教程之学习笔记,有需要学习的同学可以参考一下下哦。

例子中主程序.launcher.ExampleLauncher主要继承自ExpandableListActivity的列表,
这里主要定义了另个枚举public enum ExampleGroup和enum Example ,平时因为像他们这样使用比较少,值得学习。

 代码如下 复制代码

enum Example {

// ===========================================================

// Elements

// ===========================================================

 

ANALOGONSCREENCONTROL(AnalogOnScreenControlExample.class, R.string.example_analogonscreencontrol),

ANALOGONSCREENCONTROLS(AnalogOnScreenControlsExample.class, R.string.example_analogonscreencontrols),

ANIMATEDSPRITES(AnimatedSpritesExample.class, R.string.example_animatedsprites),

AUGMENTEDREALITY(AugmentedRealityExample.class, R.string.example_augmentedreality),

AUGMENTEDREALITYHORIZON(AugmentedRealityHorizonExample.class, R.string.example_augmentedrealityhorizon),

AUTOPARALLAXBACKGROUND(AutoParallaxBackgroundExample.class, R.string.example_autoparallaxbackground),

BOUNDCAMERA(BoundCameraExample.class, R.string.example_boundcamera),

CHANGEABLETEXT(ChangeableTextExample.class, R.string.example_changeabletext),

COLLISIONDETECTION(CollisionDetectionExample.class, R.string.example_collisiondetection),

COLORKEYTEXTURESOURCEDECORATOR(ColorKeyTextureSourceDecoratorExample.class, R.string.example_colorkeytexturesourcedecorator),

COORDINATECONVERSION(CoordinateConversionExample.class, R.string.example_coordinateconversion),

CUSTOMFONT(CustomFontExample.class, R.string.example_customfont),

DIGITALONSCREENCONTROL(DigitalOnScreenControlExample.class, R.string.example_digitalonscreencontrol),

EASEFUNCTION(EaseFunctionExample.class, R.string.example_easefunction),

IMAGEFORMATS(ImageFormatsExample.class, R.string.example_imageformats),

LEVELLOADER(LevelLoaderExample.class, R.string.example_levelloader),

LINE(LineExample.class, R.string.example_line),

LOADTEXTURE(LoadTextureExample.class, R.string.example_loadtexture),

MENU(MenuExample.class, R.string.example_menu),

MODPLAYER(ModPlayerExample.class, R.string.example_modplayer),

MOVINGBALL(MovingBallExample.class, R.string.example_movingball),

MULTIPLAYER(MultiplayerExample.class, R.string.example_multiplayer),

MULTITOUCH(MultiTouchExample.class, R.string.example_multitouch),

MUSIC(MusicExample.class, R.string.example_music),

PAUSE(PauseExample.class, R.string.example_pause),

PATHMODIFIER(PathModifierExample.class, R.string.example_pathmodifier),

PARTICLESYSTEMNEXUS(ParticleSystemNexusExample.class, R.string.example_particlesystemnexus),

PARTICLESYSTEMCOOL(ParticleSystemCoolExample.class, R.string.example_particlesystemcool),

PARTICLESYSTEMSIMPLE(ParticleSystemSimpleExample.class, R.string.example_particlesystemsimple),

PHYSICSCONLLISIONFILTERING(PhysicsCollisionFilteringExample.class, R.string.example_physicscollisionfiltering),

PHYSICS(PhysicsExample.class, R.string.example_physics),

PHYSICSFIXEDSTEP(PhysicsFixedStepExample.class, R.string.example_physicsfixedstep),

PHYSICSJUMP(PhysicsJumpExample.class, R.string.example_physicsjump),

PHYSICSREVOLUTEJOINT(PhysicsRevoluteJointExample.class, R.string.example_physicsrevolutejoint),

PHYSICSREMOVE(PhysicsRemoveExample.class, R.string.example_physicsremove),

PINCHZOOM(PinchZoomExample.class, R.string.example_pinchzoom),

RECTANGLE(RectangleExample.class, R.string.example_rectangle),

REPEATINGSPRITEBACKGROUND(RepeatingSpriteBackgroundExample.class, R.string.example_repeatingspritebackground),

ROTATION3D(Rotation3DExample.class, R.string.example_rotation3d),

SHAPEMODIFIER(ShapeModifierExample.class, R.string.example_shapemodifier),

SHAPEMODIFIERIRREGULAR(ShapeModifierIrregularExample.class, R.string.example_shapemodifierirregular),

SOUND(SoundExample.class, R.string.example_sound),

SPLITSCREEN(SplitScreenExample.class, R.string.example_splitscreen),

SPRITE(SpriteExample.class, R.string.example_sprite),

SPRITEREMOVE(SpriteRemoveExample.class, R.string.example_spriteremove),

STROKEFONT(StrokeFontExample.class, R.string.example_strokefont),

SUBMENU(SubMenuExample.class, R.string.example_submenu),

TEXT(TextExample.class, R.string.example_text),

TEXTMENU(TextMenuExample.class, R.string.example_textmenu),

TEXTUREOPTIONS(TextureOptionsExample.class, R.string.example_textureoptions),

TMXTILEDMAP(TMXTiledMapExample.class, R.string.example_tmxtiledmap),

TICKERTEXT(TickerTextExample.class, R.string.example_tickertext),

TOUCHDRAG(TouchDragExample.class, R.string.example_touchdrag),

UNLOADRESOURCES(UnloadResourcesExample.class, R.string.example_unloadresources),

UPDATETEXTURE(UpdateTextureExample.class, R.string.example_updatetexture),

XMLLAYOUT(XMLLayoutExample.class, R.string.example_xmllayout),

ZOOM(ZoomExample.class, R.string.example_zoom),

 

BENCHMARK_ANIMATION(AnimationBenchmark.class, R.string.example_benchmark_animation),

BENCHMARK_PARTICLESYSTEM(ParticleSystemBenchmark.class, R.string.example_benchmark_particlesystem),

BENCHMARK_PHYSICS(PhysicsBenchmark.class, R.string.example_benchmark_physics),

BENCHMARK_SHAPEMODIFIER(ShapeModifierBenchmark.class, R.string.example_benchmark_shapemodifier),

BENCHMARK_SPRITE(SpriteBenchmark.class, R.string.example_benchmark_sprite),

BENCHMARK_TICKERTEXT(TickerTextBenchmark.class, R.string.example_benchmark_tickertext),

 

APP_CITYRADAR(CityRadarActivity.class, R.string.example_app_cityradar),

 

GAME_SNAKE(SnakeGameActivity.class, R.string.example_game_snake),

GAME_RACER(RacerGameActivity.class, R.string.example_game_racer);

 

// ===========================================================

// Constants

// ===========================================================

 

// ===========================================================

// Fields

// ===========================================================

 

public final Class<? extends BaseGameActivity> CLASS;

public final int NAMERESID;

 

// ===========================================================

// Constructors

// ===========================================================

 

private Example(final Class<? extends BaseGameActivity> pExampleClass, final int pNameResID) {

this.CLASS = pExampleClass;

this.NAMERESID = pNameResID;

}

 

// ===========================================================

// Getter & Setter

// ===========================================================

 

// ===========================================================

// Methods for/from SuperClass/Interfaces

// ===========================================================

 

// ===========================================================

// Methods

// ===========================================================

 

// ===========================================================

// Inner and Anonymous Classes

// ===========================================================

}

上面的public final Class<? extends BaseGameActivity> CLASS;表示任何继承自BaseGameActivity的类型,属于泛型,
因为andengine的例子程序都是继承自BaseGameActivity。

 代码如下 复制代码

public enum ExampleGroup {

// ===========================================================

// Elements

// ===========================================================

 

SIMPLE(R.string.examplegroup_simple,

Example.LINE, Example.RECTANGLE, Example.SPRITE, Example.SPRITEREMOVE),

MODIFIER_AND_ANIMATION(R.string.examplegroup_modifier_and_animation,

Example.MOVINGBALL, Example.SHAPEMODIFIER, Example.SHAPEMODIFIERIRREGULAR, Example.PATHMODIFIER, Example.ANIMATEDSPRITES, Example.EASEFUNCTION, Example.ROTATION3D ),

TOUCH(R.string.examplegroup_touch,

Example.TOUCHDRAG, Example.MULTITOUCH, Example.ANALOGONSCREENCONTROL, Example.DIGITALONSCREENCONTROL, Example.ANALOGONSCREENCONTROLS, Example.COORDINATECONVERSION, Example.PINCHZOOM),

PARTICLESYSTEM(R.string.examplegroup_particlesystems,

Example.PARTICLESYSTEMSIMPLE, Example.PARTICLESYSTEMCOOL, Example.PARTICLESYSTEMNEXUS),

MULTIPLAYER(R.string.examplegroup_multiplayer,

Example.MULTIPLAYER),

PHYSICS(R.string.examplegroup_physics,

Example.COLLISIONDETECTION, Example.PHYSICS, Example.PHYSICSFIXEDSTEP, Example.PHYSICSCONLLISIONFILTERING, Example.PHYSICSJUMP, Example.PHYSICSREVOLUTEJOINT, Example.PHYSICSREMOVE ),

TEXT(R.string.examplegroup_text,

Example.TEXT, Example.TICKERTEXT, Example.CHANGEABLETEXT, Example.CUSTOMFONT, Example.STROKEFONT),

AUDIO(R.string.examplegroup_audio,

Example.SOUND, Example.MUSIC, Example.MODPLAYER),

ADVANCED(R.string.examplegroup_advanced,

Example.SPLITSCREEN, Example.BOUNDCAMERA ), // Example.AUGMENTEDREALITY, Example.AUGMENTEDREALITYHORIZON),

BACKGROUND(R.string.examplegroup_background,

Example.REPEATINGSPRITEBACKGROUND, Example.AUTOPARALLAXBACKGROUND, Example.TMXTILEDMAP),

OTHER(R.string.examplegroup_other,

Example.PAUSE, Example.MENU, Example.SUBMENU, Example.TEXTMENU, Example.ZOOM , Example.IMAGEFORMATS, Example.TEXTUREOPTIONS, Example.COLORKEYTEXTURESOURCEDECORATOR, Example.LOADTEXTURE, Example.UPDATETEXTURE, Example.XMLLAYOUT, Example.LEVELLOADER),

APP(R.string.examplegroup_app,

Example.APP_CITYRADAR),

GAME(R.string.examplegroup_game,

Example.GAME_SNAKE, Example.GAME_RACER),

BENCHMARK(R.string.examplegroup_benchmark,

Example.BENCHMARK_SPRITE, Example.BENCHMARK_SHAPEMODIFIER, Example.BENCHMARK_ANIMATION, Example.BENCHMARK_TICKERTEXT, Example.BENCHMARK_PARTICLESYSTEM, Example.BENCHMARK_PHYSICS);

 

// ===========================================================

// Constants

// ===========================================================

 

// ===========================================================

// Fields

// ===========================================================

public final Example[] EXAMPLES;

public final int NAMERESID;

 

// ===========================================================

// Constructors

// ===========================================================

 

private ExampleGroup(final int pNameResID, final Example ... pExamples) {

this.NAMERESID = pNameResID;

this.EXAMPLES = pExamples;

}

 

// ===========================================================

// Getter & Setter

// ===========================================================

 

// ===========================================================

// Methods for/from SuperClass/Interfaces

// ===========================================================

 

// ===========================================================

// Methods

// ===========================================================

 

// ===========================================================

// Inner and Anonymous Classes

// ===========================================================

}

主程序就比较简单,不再介绍了。

最近查看了一些关于开源Android游戏引擎的资料,觉得AndEngine功能强大,例子丰富,更新较快。由于初学,找资料化不少时间,现在将自己在网上收集的比较实用的资料网址贴在这里,大家一起学习和讨论。


1.AndEngine源码和例子代码地址:

Google Code:http://code.google.com/p/andengine/

AndEngine主页:http://www.andengine.org/

example地址:http://code.google.com/p/andengineexamples/

 

2.代码下载

先安装TortoiseHg,然后在想要存放代码的目录右键-->TortoiseHg-->clone

hg clone https://andengine.googlecode.com/hg/andengine

 

3.lib包下载

andengineexamples->Source->Browse->hg->lib(libs->armeabi)->点击想下载的Filename->View raw file

 

4.入门文章

中文 http://blog.111cn.net/cping1982/archive/2011/03/06/6227775.aspx

英文 http://www.andengine.org/forums/ ... rial-list-t417.html

 

虽然听说AndEngine在某些型号的机型上有不稳定的情况出现,但决定学习这个引擎是因为它内置了BOX2D物理引擎,在手机上测试运行也比较流畅,效果很给力~~~希望大家喜欢

本文章分享一篇关于手机开的中的AndroidPN环境建立图文教程,有需要开发android各种应用的朋友可以参考一下本文章哦。
AndroidPN实现了从服务器到android移动平台的文本消息推送。这里先简单说一下androidPN的安装过程。
下载androidpn-client-0.5.0.zip和androidpn-server-0.5.0-bin.zip
网址:http://sourceforge.net/projects/androidpn/ 
解压两个包,Eclipse导入client,配置好目标平台,打开raw/androidpn.properties文件,
 代码如下 复制代码
apiKey=1234567890
xmppHost=10.0.2.2
xmppPort=5222
如果是模拟器来运行客户端程序,把xmppHost配置成10.0.2.2 (模拟器把10.0.2.2认为是所在主机的地址,127.0.0.1是模拟器本身的回环地址).
 代码如下 复制代码
xmppPort=5222 是服务器的xmpp服务监听端口
运行
 代码如下 复制代码
androidpn-server-0.5.0binrun.bat
启动服务器,从浏览器访问
 代码如下 复制代码
http://127.0.0.1:7070/index.do (androidPN Server
有个轻量级的web服务器,在7070端口监听请求,接受用户输入的文本消息)
运行客户端,客户端会向服务器发起连接请求,注册成功后,服务器能识别客户端,并维护和客户端的IP长连接
 进入Notifications界面,输入消息发送
模拟器客户端接受到server推送的消息
这样AndroidPN的环境就搭好了,下一步我将深入研究研究实行以及XMPP协议。
本文章介绍关于在android开发中的图片的浏览、缩放、拖动和自动居中实现实例,有需要的同学可以参考一下下本文章。

 

Touch.java

 代码如下 复制代码

/**
 * 图片浏览、缩放、拖动、自动居中
 */
public class Touch extends Activity implements OnTouchListener {

    Matrix matrix = new Matrix();
    Matrix savedMatrix = new Matrix();
    DisplayMetrics dm;
    ImageView imgView;
    Bitmap bitmap;

    float minScaleR;// 最小缩放比例
    static final float MAX_SCALE = 4f;// 最大缩放比例

    static final int NONE = 0;// 初始状态
    static final int DRAG = 1;// 拖动
    static final int ZOOM = 2;// 缩放
    int mode = NONE;

    PointF prev = new PointF();
    PointF mid = new PointF();
    float dist = 1f;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.scale);
        imgView = (ImageView) findViewById(R.id.imag);// 获取控件
        bitmap = BitmapFactory.decodeResource(getResources(), this.getIntent()
                .getExtras().getInt("IMG"));// 获取图片资源
        imgView.setImageBitmap(bitmap);// 填充控件
        imgView.setOnTouchListener(this);// 设置触屏监听
        dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);// 获取分辨率
        minZoom();
        center();
        imgView.setImageMatrix(matrix);
    }

    /**
     * 触屏监听
     */
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction() & MotionEvent.ACTION_MASK) {
        // 主点按下
        case MotionEvent.ACTION_DOWN:
            savedMatrix.set(matrix);
            prev.set(event.getX(), event.getY());
            mode = DRAG;
            break;
        // 副点按下
        case MotionEvent.ACTION_POINTER_DOWN:
            dist = spacing(event);
            // 如果连续两点距离大于10,则判定为多点模式
            if (spacing(event) > 10f) {
                savedMatrix.set(matrix);
                midPoint(mid, event);
                mode = ZOOM;
            }
            break;
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_POINTER_UP:
            mode = NONE;
            break;
        case MotionEvent.ACTION_MOVE:
            if (mode == DRAG) {
                matrix.set(savedMatrix);
                matrix.postTranslate(event.getX() - prev.x, event.getY()
                        - prev.y);
            } else if (mode == ZOOM) {
                float newDist = spacing(event);
                if (newDist > 10f) {
                    matrix.set(savedMatrix);
                    float tScale = newDist / dist;
                    matrix.postScale(tScale, tScale, mid.x, mid.y);
                }
            }
            break;
        }
        imgView.setImageMatrix(matrix);
        CheckView();
        return true;
    }

    /**
     * 限制最大最小缩放比例,自动居中
     */
    private void CheckView() {
        float p[] = new float[9];
        matrix.getValues(p);
        if (mode == ZOOM) {
            if (p[0] < minScaleR) {
                matrix.setScale(minScaleR, minScaleR);
            }
            if (p[0] > MAX_SCALE) {
                matrix.set(savedMatrix);
            }
        }
        center();
    }

    /**
     * 最小缩放比例,最大为100%
     */
    private void minZoom() {
        minScaleR = Math.min(
                (float) dm.widthPixels / (float) bitmap.getWidth(),
                (float) dm.heightPixels / (float) bitmap.getHeight());
        if (minScaleR < 1.0) {
            matrix.postScale(minScaleR, minScaleR);
        }
    }

    private void center() {
        center(true, true);
    }

    /**
     * 横向、纵向居中
     */
    protected void center(boolean horizontal, boolean vertical) {

        Matrix m = new Matrix();
        m.set(matrix);
        RectF rect = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());
        m.mapRect(rect);

        float height = rect.height();
        float width = rect.width();

        float deltaX = 0, deltaY = 0;

        if (vertical) {
            // 图片小于屏幕大小,则居中显示。大于屏幕,上方留空则往上移,下放留空则往下移
            int screenHeight = dm.heightPixels;
            if (height < screenHeight) {
                deltaY = (screenHeight - height) / 2 - rect.top;
            } else if (rect.top > 0) {
                deltaY = -rect.top;
            } else if (rect.bottom < screenHeight) {
                deltaY = imgView.getHeight() - rect.bottom;
            }
        }

        if (horizontal) {
            int screenWidth = dm.widthPixels;
            if (width < screenWidth) {
                deltaX = (screenWidth - width) / 2 - rect.left;
            } else if (rect.left > 0) {
                deltaX = -rect.left;
            } else if (rect.right < screenWidth) {
                deltaX = screenWidth - rect.right;
            }
        }
        matrix.postTranslate(deltaX, deltaY);
    }

    /**
     * 两点的距离
     */
    private float spacing(MotionEvent event) {
        float x = event.getX(0) - event.getX(1);
        float y = event.getY(0) - event.getY(1);
        return FloatMath.sqrt(x * x + y * y);
    }

    /**
     * 两点的中点
     */
    private void midPoint(PointF point, MotionEvent event) {
        float x = event.getX(0) + event.getX(1);
        float y = event.getY(0) + event.getY(1);
        point.set(x / 2, y / 2);
    }
}

 

scale.xml

 代码如下 复制代码

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center" >

    <ImageView
        android:id="@+id/imag"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center"
        android:scaleType="matrix" >
    </ImageView>

</FrameLayout>

首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置:

  在AndroidManifest.xml中加入访问SDCard的权限如下:

  <!-- 在SDCard中创建与删除文件权限 -->

 代码如下 复制代码

  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

 <!-- 往SDCard写入数据权限 -->

 代码如下 复制代码

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    

    接着我们在使用SDcard进行读写的时候 会用到Environment类下面的几个静态方法 

   1: getDataDirectory()  获取到Androi中的data数据目录

   2:getDownloadCacheDirectory()  获取到下载的缓存目录

   3:getExternalStorageDirectory()  获取到外部存储的目录 一般指SDcard

   4:getExternalStorageState() 获取外部设置的当前状态 一般指SDcard,

         android系统中对于外部设置的状态,我们比较常用的应该是 MEDIA_MOUNTED(SDcard存在并且可以进行读写)  MEDIA_MOUNTED_READ_ONLY (SDcard存在,只可以进行读操作)  当然还有其他的一些状态,可以在文档中进行查找到 

    5:getRootDirectory()  获取到Android Root路径

   6:isExternalStorageEmulated() 返回Boolean值判断外部设置是否有效

   7:isExternalStorageRemovable()  返回Boolean值,判断外部设置是否可以移除

   【注】上面进行红色标记的方法,我们会常用

 代码如下 复制代码
<span style="color:#ff0000;">Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) 

代码中这句:我们对SDcard的状态进行判断,</span>
下面看实现SDCard进行文件读写操作的Demo:

 

 代码如下 复制代码

package com.jiangqq.sdcard;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class SDcardActivity extends Activity {
    private Button bt1, bt2;
    private EditText et1, et2;

    private static final String FILENAME = "temp_file.txt";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        bt1 = (Button) this.findViewById(R.id.bt1);
        bt2 = (Button) this.findViewById(R.id.bt2);
        et1 = (EditText) this.findViewById(R.id.et1);
        et2 = (EditText) this.findViewById(R.id.et2);
        bt1.setOnClickListener(new MySetOnClickListener());
        bt2.setOnClickListener(new MySetOnClickListener());
    }

    private class MySetOnClickListener implements OnClickListener {

        @Override
        public void onClick(View v) {
            File file = new File(Environment.getExternalStorageDirectory(),
                    FILENAME);
            switch (v.getId()) {
            case R.id.bt1:// 使用SDcard写操作
                if (Environment.getExternalStorageState().equals(
                        Environment.MEDIA_MOUNTED)) {

                    try {
                        FileOutputStream fos = new FileOutputStream(file);
                        fos.write(et1.getText().toString().getBytes());
                        fos.close();
                        Toast.makeText(SDcardActivity.this, "写入文件成功",
                                Toast.LENGTH_LONG).show();
                    } catch (Exception e) {
                        Toast.makeText(SDcardActivity.this, "写入文件失败",
                                Toast.LENGTH_SHORT).show();
                    }
                } else {
                    // 此时SDcard不存在或者不能进行读写操作的
                    Toast.makeText(SDcardActivity.this,
                            "此时SDcard不存在或者不能进行读写操作", Toast.LENGTH_SHORT).show();
                }
                break;

            case R.id.bt2:// 使用SDcard读操作
                if (Environment.getExternalStorageState().equals(
                        Environment.MEDIA_MOUNTED)) {
                    try {
                        FileInputStream inputStream = new FileInputStream(file);
                        byte[] b = new byte[inputStream.available()];
                        inputStream.read(b);
                        et2.setText(new String(b));
                        Toast.makeText(SDcardActivity.this, "读取文件成功",
                                Toast.LENGTH_LONG).show();
                    } catch (Exception e) {
                        Toast.makeText(SDcardActivity.this, "读取失败",
                                Toast.LENGTH_SHORT).show();
                    }
                } else {
                    // 此时SDcard不存在或者不能进行读写操作的
                    Toast.makeText(SDcardActivity.this,
                            "此时SDcard不存在或者不能进行读写操作", Toast.LENGTH_SHORT).show();
                }
                break;
            }

        }

    }

}


[!--infotagslink--]

相关文章

  • 轻松学习C#的基础入门

    轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下...2020-06-25
  • photoshop画斜线/直线/虚线的入门级教程

    这篇文章算是超级入门级别的了,我们下面来给各位介绍在photoshop画斜线/直线/虚线的教程了,希望下面这篇文章给你入门来帮助。 PS怎么画斜线 选择铅笔工具,或者画笔...2016-09-14
  • Lua语言新手简单入门教程

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
  • php上传图片学习笔记与心得

    我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
  • Smarty模板学习笔记之Smarty简介

    1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
  • 20分钟MySQL基础入门

    这篇文章主要为大家分享了20分钟MySQL基础入门教程,快速掌握MySQL基础知识,真正了解MySQL,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-12-02
  • C#线程入门教程之单线程介绍

    这篇文章主要介绍了C#线程入门教程之单线程介绍,本文讲解了什么是进程、什么是线程、什么是多线程等内容,并给出了一个单线程代码示例,需要的朋友可以参考下...2020-06-25
  • php Observer观察者模式之学习笔记

    当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25
  • CocosCreator入门教程之用TS制作第一个游戏

    这篇文章主要介绍了CocosCreator入门教程之用TS制作第一个游戏,对TypeScript感兴趣的同学,一定要看一下...2021-04-16
  • PHP 日期函数 学习笔记介绍

    举一个简单的date例子 我将使用echo命令把内容输出到我们的客户端(浏览器)。我将使用下面的代码做为基础代码。 代码如下 复制代码 <!DOCTY...2016-11-25
  • 详解Servlet入门级设置(超详细 IDEA2020版)

    这篇文章主要介绍了详解Servlet入门级设置(超详细 IDEA2020版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-04
  • php入门教程(类实例教程)

    这里主要讲到关于在php教程类的调用,申请明,使用以前各种类的实例方法与操作过程,让你清楚的知道php类的construct destruct clone call wake sleep用法。 简单购物车...2016-11-25
  • MySQL的InnoDB引擎入门学习教程

    MySQL发展到今天,InnoDB引擎已经作为绝对的主力,除了像大数据量分析等比较特殊领域需求外,它适用于众多场景。然而,仍有不少开发者还在“执迷不悟”的使用MyISAM引擎,觉得对InnoDB无法把握好,还是MyISAM简单省事,还能支持快...2015-11-24
  • Android学习笔记之多界面切换实例

    一篇Android学习笔记之多界面切换实例,希望对各位朋友有所帮助。 用过VB 、 VC#的朋友都知道,在VB或VC#里要进行窗口(界面)切换很容易 例如在VB、C#里: 有 Fom1、...2016-09-20
  • 阿里云ECS服务器入门使用流程(新手必看教程)

    这篇文章主要介绍了阿里云ECS服务器入门使用流程(新手必看教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-13
  • php中的变量引用传值学习笔记

    引用:意思是将原始对象在内存中的地址传递给目标对象,就相当于原始对象和目标对象指向的是同一个内存地址。此时,如果对目标对象或者原始对象进行修改,内存中的数据也会改...2016-11-25
  • php入门级教程:PHP大小写问题

    PHP大小写问题算是一个入门级的教程了,在此小编为php初学者介绍php开发中大小写的一些例子,希望可以帮助到各位。 今天写代码的时候发现自己代码的一处错误: $m_cate...2016-11-25
  • php入门教程,?号表达式

    下面举一个很简单的?表达式的实现吧,其实它就是简单的if else哦。 <? $a = 5; //定义变数a=5 $b = 3; //定义变数b=5 $c = ($a==$b) ? ("yes") : ("no"); //如果...2016-11-25
  • 一篇文章带你了解C语言:入门基础(2)

    这篇文章主要介绍了C语言入门之基础知识详解,文中有非常详细的C语言使用教程及相关基础知识,对正在学习c语言的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-08-04
  • PHP中的cURL请求及示例学习笔记

    cURL是php中一个很强大的功能,可以模仿各种用户请求,如模仿用户登录,发送php cookie等等操作,下面我来整理一些相关的方法与各位同学看看 备注:使用curl_init函数,必须...2016-11-25