锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品综合久久一线,亚洲色欲久久久久综合网,久久久精品国产sm调教网站http://www.shnenglu.com/codejie/Using C++zh-cnTue, 06 May 2025 17:50:29 GMTTue, 06 May 2025 17:50:29 GMT60OpenCV : build with Glade on Android Studiohttp://www.shnenglu.com/codejie/archive/2015/04/14/210337.htmlcodejiecodejieTue, 14 Apr 2015 15:54:00 GMThttp://www.shnenglu.com/codejie/archive/2015/04/14/210337.htmlhttp://www.shnenglu.com/codejie/comments/210337.htmlhttp://www.shnenglu.com/codejie/archive/2015/04/14/210337.html#Feedback0http://www.shnenglu.com/codejie/comments/commentRss/210337.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/210337.htmlFROM : http://stackoverflow.com/questions/17767557/how-to-use-opencv-in-android-studio-using-gradle-build-tool


Android Studio 0.8.2+ and above, could easily import modules. Thanks to TGMCains answer, is simplified, by using Android Studio itself to import OpenCV as a module.

  1. Download latest OpenCV sdk for Android from OpenCV.org and decompress the zip file.
  2. Import OpenCV to Android Studio, From File -> Import Module, choose sdk/java folder in the unzipped opencv archive.
  3. Update build.gradle under imported OpenCV module to update 4 fields to match your project build.gradle a) compileSdkVersion b) buildToolsVersion c) minSdkVersion and 4) targetSdkVersion.
  4. Add module dependency by Application -> Module Settings, and select the Dependenciestab. Click + icon at bottom, choose Module Dependency and select the imported OpenCV module.
  5. Copy libs folder under sdk/native to Android Studio under app/src/main.
  6. In Android Studio, rename the copied libs directory to jniLibs and we are done.

Step (6) is since Android studio expects native libs in app/src/main/jniLibs instead of older libs folder. For those new to Android OpenCV, don't miss below steps

  • include static{ System.loadLibrary("opencv_java"); }
  • For step(5), if you ignore any platform libs like x86, make sure your device/emulator is not on that platform.

OpenCV written is in C/C++. Java wrappers are

  1. Android OpenCV SDK - OpenCV.org maintained Android Java wrapper. I suggest this one.
  2. OpenCV Java - OpenCV.org maintained auto generated desktop Java wrapper.
  3. JavaCV - Popular Java wrapper maintained by independent developer(s). Not Android specific. This library might get out of sync with OpenCV newer versions.


codejie 2015-04-14 23:54 鍙戣〃璇勮
]]>
SPRING : Handle JSON and Image object in One Requesthttp://www.shnenglu.com/codejie/archive/2015/04/13/210331.htmlcodejiecodejieMon, 13 Apr 2015 15:53:00 GMThttp://www.shnenglu.com/codejie/archive/2015/04/13/210331.htmlhttp://www.shnenglu.com/codejie/comments/210331.htmlhttp://www.shnenglu.com/codejie/archive/2015/04/13/210331.html#Feedback0http://www.shnenglu.com/codejie/comments/commentRss/210331.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/210331.html    浠g爜榪欓噷~

    @RequestMapping(value = "/req", method = RequestMethod.POST)
    @ResponseBody
    public ResponseEntity<Post.Response> post(HttpServletRequest request) {

        Post.Response resp = null;
        
        Post.Request req = null;
        String file = null;
        
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());  

        if (multipartResolver.isMultipart(request)) {  
            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;  
  
            try {
                Collection<Part> parts = multiRequest.getParts();
                
                boolean hasJSON = false;
                boolean hasFile = false;
                
                for (final Part p : parts) {
                    
                    if (hasJSON) {
                        continue;
                    }

                    if (p.getContentType().contains("application/json")) {

                        ObjectMapper mapper = new ObjectMapper();
                        req = mapper.readValue(p.getInputStream(), Post.Request.class);
                        
                        if (req != null) {
                            resp = new Post.Response();
                            resp.setX(100);
                            
                            hasJSON = true;
                        }

                    } else if (p.getContentType().contains("image/jpeg")) {
                        ++ index;
                        file = UPLOAD_ROOT + String.valueOf(index) + ".jpg";
                        
                        InputStream is = p.getInputStream();
                        
                        File localFile = new File(file);                        
                        OutputStream os = new FileOutputStream(localFile);
                        int bytesRead = 0;
                        byte[] buffer = new byte[8192];
                        while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {
                            os.write(buffer, 0, bytesRead);
                        }
                        os.close();
                        
                        hasFile = true;
                    }
                    
                    if (hasJSON && hasFile) {
                        break;
                    }
                }
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (ServletException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        if (req != null && file != null) {
            resp = calc.calc(req, file);
        }
        
        if (resp != null) {
            return new ResponseEntity<Post.Response>(resp, HttpStatus.OK);
        } else {
            return new ResponseEntity<Post.Response>(resp, HttpStatus.BAD_REQUEST);
        }
    }


codejie 2015-04-13 23:53 鍙戣〃璇勮
]]>
OpenCV : build with Maven on Springhttp://www.shnenglu.com/codejie/archive/2015/03/24/210154.htmlcodejiecodejieTue, 24 Mar 2015 14:13:00 GMThttp://www.shnenglu.com/codejie/archive/2015/03/24/210154.htmlhttp://www.shnenglu.com/codejie/comments/210154.htmlhttp://www.shnenglu.com/codejie/archive/2015/03/24/210154.html#Feedback0http://www.shnenglu.com/codejie/comments/commentRss/210154.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/210154.html    涓轟簡(jiǎn)璧舵椂楂︼紝鍑嗗鎶奜penCV鐨勬搷浣滈氳繃WebService鐨勬柟寮廌eploy鍑哄幓錛屽洜姝ゅ仛浜?jiǎn)濡備笅鐨勪簨鎯呭Q?br />
    1. download opencv zip package錛?br />    2. download cmake source zip錛?br />    3. download ant binary package錛?br />    4. install ant binary;
    5. make cmake;
    6. unzip opencv;
    7. cmake opencv source;

#mkdir build
#cd build
#cmake -D BUILD_SHARED_LIBS=OFF ../
#make

    8. install opencv library into Maven;
mvn install:install-file -Dfile=opencv-2411.jar -DgroupId=org.opencv -DartifaceId=opencv -Dversion=2.4.11 -Dpackaging=jar

    9. update pom.xml to add openvn dependency;
    <dependency>
       <groupId>org.opencv</groupId>
       <artifactId>opencv</artifactId>
       <version>2.4.11</version>
       <systemPath>/Users/Jie/Downloads/opencv-2.4.11/build/bin/opencv-2411.jar</systemPath>
       <scope>system</scope>
    </dependency>

    10. run webapp;
mvn spring-boot:run

    11. done;

    緲諱簡(jiǎn)鏃犳暟++鐨勯〉闈紝灝辮繖浜泘


codejie 2015-03-24 22:13 鍙戣〃璇勮
]]>
C++: c++ wrap for libpqhttp://www.shnenglu.com/codejie/archive/2015/01/10/209453.htmlcodejiecodejieFri, 09 Jan 2015 16:49:00 GMThttp://www.shnenglu.com/codejie/archive/2015/01/10/209453.htmlhttp://www.shnenglu.com/codejie/comments/209453.htmlhttp://www.shnenglu.com/codejie/archive/2015/01/10/209453.html#Feedback1http://www.shnenglu.com/codejie/comments/commentRss/209453.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/209453.html
class DBConnection
{
public:
    class TParams
    {
    public:
        TParams(int size);
        virtual ~TParams();
    private:
        TParams(const TParams& params) {}
        TParams& operator = (const TParams& params) { return *this; }
    public:
        void Add(const char* val, int size);
        void Add(int val);
        void Add(unsigned int val);
        void Add(uint64_t val);
        void Add(short val);
        
        void Free();
        
        int Size() const { return _size; }
        const char * const * Value() const { return value; }
        const int* Length() const { return length; }
        const int* Format() const { return format; }
    public:
        char** value;
        int* length;
        int* format;
    private:
        int _size;
        int _pos;
    };
public:
    DBConnection()
    : conn(NULL)
    {
    }
    virtual ~DBConnection();
public:
    int Connect(const char* info);
    void Disconnect();
    
    int ExecCmd(const char* cmd);
    PGresult* ExecQuery(const char* sql);
    int ExecCmdWithParams(const char* cmd, const TParams& params);
    PGresult* ExecQueryWithParams(const char* sql, const TParams& params);
    int BeginTranscation();
    int EndTranscation();
private:
    PGconn* conn;
};



DBConnection::TParams::TParams(int size)
: _size(size), _pos(0)
{
    value = new char*[_size];
    length = new int[_size];
    format = new int[_size];
}

DBConnection::TParams::~TParams()
{
    Free();
}

void DBConnection::TParams::Free()
{
    if (_size == 0)
    {
        return;
    }
    
    for (int i = 0; i < _size; ++ i)
    {
        if (format[i] == 0)
        {
            delete[] value[i];
        }
        else if (length[i] == sizeof(int) || length[i] == sizeof(unsigned int))
        {
            delete (int*)value[i];
        }
        else if (length[i] == sizeof(uint64_t))
        {
            delete (uint64_t*)value[i];
        }
        else
        {
            delete (short*)value[i];
        }
    }
    
    delete[] value, value = NULL;
    delete[] length, length = NULL;
    delete[] format, format = NULL;
    
    _size = 0;
    
    DEBUG(DEBUG_ANY, "<DBConnection::TParams::Free()>"<< std::endl);
}

void DBConnection::TParams::Add(const char* val, int size)
{
    char* char_val = new char[size + 1];
    char_val[size] = '\0';
//    char* char_val = new char[size];
    memcpy(char_val, val, size);
    
    value[_pos] = char_val;
    length[_pos] = size + 1;
    format[_pos] = 0;
    
    ++ _pos;
}

void DBConnection::TParams::Add(int val)
{
#ifdef __OS_MAC__
    int* int_val = new (int)(val);
#else
    int* int_val = new (int)(htonl(val));
#endif
    value[_pos] = (char*)(int_val);
    length[_pos] = sizeof(int);
    format[_pos] = 1;
    
    ++ _pos;
}

void DBConnection::TParams::Add(unsigned int val)
{
#ifdef __OS_MAC__
    unsigned int* int_val = new (unsigned int)(val);
#else
    unsigned int* int_val = new (unsigned int)(htonl(val));
#endif

    value[_pos] = (char*)(int_val);
    length[_pos] = sizeof(int);
    format[_pos] = 1;
    
    ++ _pos;
}

void DBConnection::TParams::Add(uint64_t val)
{
#ifdef __OS_MAC__
    uint64_t* uint64_val = new uint64_t(val);
#else
    uint64_t* uint64_val = new uint64_t(htobe64(val));
#endif
    value[_pos] = (char*)(uint64_val);
    length[_pos] = sizeof(uint64_t);
    format[_pos] = 1;
    
    ++ _pos;
}

void DBConnection::TParams::Add(short val)
{
#ifdef __OS_MAC__
    short* int_val = new (short)(val);
#else
    short* int_val = new (short)(htons(val));
#endif
    value[_pos] = (char*)(int_val);
    length[_pos] = sizeof(short);
    format[_pos] = 1;
    
    ++ _pos;
}

////

DBConnection::~DBConnection()
{
    Disconnect();
}

int DBConnection::Connect(const char* info)
{
    conn = PQconnectdb(info);
    if (PQstatus(conn) != CONNECTION_OK)
    {
        DEBUG(DEBUG_ANY, "PQ connection failed.");
        PQfinish(conn);
        return -1;
    }
    
    return 0;
}

void DBConnection::Disconnect()
{
    if (conn != NULL)
    {
        PQfinish(conn);
        conn = NULL;
    }
}

int DBConnection::ExecCmd(const char* cmd)
{
    PGresult* res = PQexec(conn, cmd);
    if (PQresultStatus(res) != PGRES_COMMAND_OK)
    {
        DEBUG(DEBUG_ANY, "<DBConnection::ExecCmd> failed - " << cmd << std::endl);
        DEBUG(DEBUG_ANY, "DBConnection::ExecCmd> error - " << PQerrorMessage(conn) << std::endl);
        PQclear(res);
        return -1;
    }
    //    int ret = ntohl(*PQcmdTuples(res));
    int ret = *PQcmdTuples(res);
    PQclear(res);
    return ret;
}

PGresult* DBConnection::ExecQuery(const char* sql)
{
    PGresult* res = PQexec(conn, sql);
    if (PQresultStatus(res) != PGRES_TUPLES_OK)
    {
        DEBUG(DEBUG_ANY, "<DBConnection::ExecQuery> failed - " << sql << std::endl);
        DEBUG(DEBUG_ANY, "DBConnection::ExecQuery> error - " << PQerrorMessage(conn) << std::endl);
        PQclear(res);
        return NULL;
    }
    return res;
}

int DBConnection::ExecCmdWithParams(const char* cmd, const DBConnection::TParams& params)
{
    PGresult* res = PQexecParams(conn, cmd, params.Size(), NULL, params.Value(), params.Length(), params.Format(), 0);
    if (PQresultStatus(res) != PGRES_COMMAND_OK)
    {
        DEBUG(DEBUG_ANY, "<DBConnection::ExecCmdWithParams> failed - " << cmd << std::endl);
        DEBUG(DEBUG_ANY, "DBConnection::ExecCmdWithParams> error - " << PQerrorMessage(conn) << std::endl);
        PQclear(res);
        return -1;
    }
//    int ret = ntohl(*PQcmdTuples(res));
    int ret = *PQcmdTuples(res);
    PQclear(res);
    
    DEBUG(DEBUG_ANY, "<DBConnection::ExecCmdWithParams> succ - " << cmd << std::endl);
    
    return ret;
//    return 0;
}

PGresult* DBConnection::ExecQueryWithParams(const char* sql, const TParams& params)
{
    PGresult* res = PQexecParams(conn, sql, params.Size(), NULL, params.Value(), params.Length(), params.Format(), 0);
    if (PQresultStatus(res) != PGRES_TUPLES_OK)
    {
        DEBUG(DEBUG_ANY, "<DBConnection::ExecQueryWithParams> failed - " << sql << std::endl);
        DEBUG(DEBUG_ANY, "DBConnection::ExecQueryWithParams> error - " << PQerrorMessage(conn) << std::endl);
        PQclear(res);
        return NULL;
    }
    return res;
}

int DBConnection::BeginTranscation()
{
    return ExecCmd("BEGIN");
}

int DBConnection::EndTranscation()
{
    return ExecCmd("END");
}







codejie 2015-01-10 00:49 鍙戣〃璇勮
]]>
How to mount Bootcamp disk againhttp://www.shnenglu.com/codejie/archive/2014/12/20/209263.htmlcodejiecodejieSat, 20 Dec 2014 11:33:00 GMThttp://www.shnenglu.com/codejie/archive/2014/12/20/209263.htmlhttp://www.shnenglu.com/codejie/comments/209263.htmlhttp://www.shnenglu.com/codejie/archive/2014/12/20/209263.html#Feedback0http://www.shnenglu.com/codejie/comments/commentRss/209263.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/209263.html    (蹇樿璇翠簡(jiǎn) -- 姝ゆ硶鏈夊嵄闄╋紝璁板緱澶囦喚鎵鏈夎祫鏂欍傘傘?

    OSX鍗囩駭鍒?0.10.1鍚庯紝紿佺劧鍙戠幇鍦∣SX涓嬬湅涓嶅埌Bootcamp璁懼浜?jiǎn)銆傛兂鏉ヨ繖鍗婁釜鏈堝氨鐢ㄨ繃涓夋Win8.1錛岃屼笖涔熸病鍋氬暐榪囧垎鐨勬搷浣滐紝鎬庝箞灝辯湅涓嶈浜?jiǎn)鍛㈠Q?br />     鎶樿吘涓涓嬪崍錛岃繕鏄病鏈夋悶瀹氾紝浣嗗彂鐜頒竴鐗囧ソ鏂?a >https://discussions.apple.com/thread/4871585錛屽叾浠栨彁鍒扮殑闂璺熸垜榪欎竴鏍鳳紝寰堟槸嬈㈠枩銆?br />     “The problem is that the tool you used to resize the NTFS volume updated the MBR but didn't update the GPT. OS X only uses the GPT, and since the partition is invalid in the GPT, the NTFS volume doesn't mount. ”
     娌$湅澶槑鐧斤紝鎰忔濆簲璇ユ槸MBR璺烥PT涓嶄竴鑷翠簡(jiǎn)銆?br />     涓嬮潰鏄甯哥殑gpt鏁版嵁錛?br />
Jies-MacBook-Pro:~ Jie$ sudo gpt -r -vv show disk0
gpt show: disk0: mediasize=1000204886016; sectorsize=512; blocks=1953525168
gpt show: disk0: Suspicious MBR at sector 0
gpt show: disk0: Pri GPT at sector 1
gpt show: disk0: Sec GPT at sector 1953525167
       start        size  index  contents
           0           1         MBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34           6         
          40      409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      409640  1451847864      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  1452257504     1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  1453527040   499996672      4  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
  1953523712        1423         
  1953525135          32         Sec GPT table
  1953525167           1         Sec GPT header

    榪欎釜鏄湁闂鐨勶細(xì)錛堟垜鑷繁鐨勫繕璁拌褰曚簡(jiǎn)錛岃繖閲屾槸copy鏂囩珷閲岄潰鐨勶級(jí)
sudo gpt -r -vv show disk0 
 
gpt show: disk0: mediasize=500107862016; sectorsize=512; blocks=976773168
gpt show: disk0: Suspicious MBR at sector 0
gpt show: disk0: Pri GPT at sector 1
gpt show: disk0: Sec GPT at sector 976773167
      start       size  index  contents
          0          1         MBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6        
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  586340368      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  586750008    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  588019544        168        
  588019712  144130048      4 
  732149760  244623360      4  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
  976773120         15        
  976773135         32         Sec GPT table
  976773167          1         Sec GPT header

    鍙互鍙戠幇GPT鏁版嵁涓嶈繛緇紝瀵艱嚧緋葷粺鏃犳硶姝e父mount鍒嗗尯銆?br />
    闂鏄繖鏍鳳紝浣嗘垜鎼炰笉鎳傛枃绔犱腑鐨勪慨澶嶆柟寮忥紝鏈涙枃鍏村徆浜?jiǎn)鍗婂ぉ銆傚拷鐒舵兂璧鳳紝鏃㈢劧鏄鐩樺垎鍖哄鑷寸殑闂錛岄偅閲嶆柊鍒嗗尯璇ュ氨濂戒簡(jiǎn)銆備簬鏄氨騫茶搗鏉ャ傘傘?br />    褰撶劧鎴戜笉鑳藉垹闄ゅ師鏉ョ殑Bootcamp錛岄偅涓婅繕鏈夊緢澶氬悓瀛﹁鐨凜#浠g爜鍛€傛墍浠ュ憿錛岃蛋涓梺閬?-- 鐢―iskUtil鍏堜粠鍘熸潵Machintosh HD鍒嗗尯鍐嶅垝鍒嗕釜灝忓垎鍖烘潵錛岀劧鍚庡啀鍒犻櫎鎺夎繖涓皬鍒嗗尯錛岃繖鏍風(fēng)郴緇熷氨浼?xì)閲嶆柊鍒锋柊鍒嗗尯鏁版嵁銆?br />    緋葷粺閲嶅惎, sudo mount -t ntfs /dev/disk0s4 /Volumes/BOOTCAMP, 浜庢槸鎴戝張鐪嬭浜?jiǎn)鎴戠殑BOOTCAMP璁懼浜?jiǎn)銆俠ingo錛屾悶瀹氫簡(jiǎn)銆傘傘?br />

<---- 鍥炲ご鍐嶈鐨勫垎鍓茬嚎 ---->
    榪欐鏃ュ瓙錛屽緢闀跨殑涓孌墊棩瀛愯繃鍘諱簡(jiǎn)錛屽彧鏄粖澶╄繕鏄病蹇?jī)鎯呭仛涓鏄庡Q屼笅嬈″惂銆傘傘傚彲浠ヨ鐨?--- 鎴戜緷鐒跺鏂楀湪鏁插瓧鐨勭涓綰褲?br />





codejie 2014-12-20 19:33 鍙戣〃璇勮
]]>
Android DEV : Andriod Studio Shows 'Waiting for device.'http://www.shnenglu.com/codejie/archive/2014/06/30/207472.htmlcodejiecodejieMon, 30 Jun 2014 10:23:00 GMThttp://www.shnenglu.com/codejie/archive/2014/06/30/207472.htmlhttp://www.shnenglu.com/codejie/comments/207472.htmlhttp://www.shnenglu.com/codejie/archive/2014/06/30/207472.html#Feedback2http://www.shnenglu.com/codejie/comments/commentRss/207472.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/207472.html 
    鏄ㄥぉ灝咥ndroid Studio鍗囩駭鍒?.8.1, 绔熺劧娌℃硶鎵цApp浜?jiǎn)~
    Run紿楀彛涓樉紺?

Waiting for device.
Target device: lge-nexus_4-0262fa6d9d51c2e8

 

      Event Log紿楀彛鏄劇ず:

NoSuchMethodError: com.android.builder.model.AndroidArtifact.getOutputs()Ljava/util/Collection;: com.android.builder.model.AndroidArtifact.getOutputs()Ljava/util/Collection;

 

    鎶樿吘浜?jiǎn)寰堜? 涓嶅緱瑕侀. 鍚庢潵鎯寵搗Android Studio鏄噰鐢ㄨВ鍘嬪畨瑁呭寘, 騫惰鐩栧師鏈夌洰褰曟柟寮忓崌綰х殑, 閭d箞鍙兘浼?xì)鏄煇涓枃錃g瀛樺湪'鏂版棫鍐茬獊'鐨勫彲鑳? 浜庢槸涓涓釜媯(gè)鏌ユ枃浠剁殑鏃墮棿鎴? 鍙戠幇鍙鍦ˋndroid Studio鐩綍涓嬪垹闄や笅闈?鏃?鏂囦歡, 閲嶅惎鍗沖彲.

\android-studio\plugins\android\lib\builder-model-0.11.0.jar

 

    鍥犱負(fù)Android Studio 0.8.1鐨凣radle鐢ㄧ殑鏄?.12.+浜?.

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

 

    <---- No Google Service ---->

 

    鍞? 浣曟椂Google Service鎵嶈兘鐣呭揩璁塊棶鍟?..



codejie 2014-06-30 18:23 鍙戣〃璇勮
]]>
LAC : Do you remember it?http://www.shnenglu.com/codejie/archive/2014/06/30/207463.htmlcodejiecodejieMon, 30 Jun 2014 07:24:00 GMThttp://www.shnenglu.com/codejie/archive/2014/06/30/207463.htmlhttp://www.shnenglu.com/codejie/comments/207463.htmlhttp://www.shnenglu.com/codejie/archive/2014/06/30/207463.html#Feedback2http://www.shnenglu.com/codejie/comments/commentRss/207463.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/207463.html 

    鏃╀笂寰堟剰澶栧湴鏀跺埌涓涓暀璦, 璇存槸闇瑕丩AC (LingosHook Android Client)鍜屾暟鎹枃浠? 涓嶇煡澶у鏄惁榪樿寰楄繖涓? LAC鏁插畬鍙戝竷閮藉凡緇忚繃鍘諱袱騫翠簡(jiǎn), 鎬庝箞浣跨敤鐪嬭繖閲?/a>, 闇瑕佺殑灝辮繖閲屼笅杞戒簡(jiǎn).

 

    榪戞鏃墮棿Google鐨勬湇鍔¢兘涓嶅彲璁塊棶, 鎴戞妸榪欎袱涓枃浠墮噸鏂頒紶鍒癘neDrive涓婁簡(jiǎn), 騫墮殢鎵嬫妸鍏朵腑鐨勫箍鍛婄粰鍒犱簡(jiǎn), 鍞? 鍙嶆鍦ˋndroid涓婁竴鐐歸摱瀛愪篃瑙佷笉鍒? 绱㈡х湡闇瑕佺殑灝辨嬁鍘誨惂...

 

    鍞? 瀹為檯閮藉繕璁拌繖涓狶AC浜? 鎯蟲兂鑷繁鍦ˋndroid涔熸暡浜?jiǎn)涓夠q村崐浜? 搴旂敤, 娓告垙鏁蹭簡(jiǎn)鍑犱釜, 浣嗙幇鍦ㄦ兂鎹喚璺烝ndroid鐩稿叧鐨勫伐浣滅珶鐒舵棤鏈? 鍚勭闃村樊闃抽敊瀵艱嚧鎬繪誨け璐? 鐪嬫潵杞榪樻槸涓嶅鍦?..



codejie 2014-06-30 15:24 鍙戣〃璇勮
]]>
Android DEV : Show a window on Baidu Maphttp://www.shnenglu.com/codejie/archive/2014/06/18/207328.htmlcodejiecodejieWed, 18 Jun 2014 12:22:00 GMThttp://www.shnenglu.com/codejie/archive/2014/06/18/207328.htmlhttp://www.shnenglu.com/codejie/comments/207328.htmlhttp://www.shnenglu.com/codejie/archive/2014/06/18/207328.html#Feedback0http://www.shnenglu.com/codejie/comments/commentRss/207328.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/207328.html 

    鍛ㄦ湯鍚屽璇存兂寮勪釜鍩轟簬Baidu鍦板浘鐨勫簲鐢? 浜庢槸灝卞紑濮嬬爺絀惰繖涓猄DK鏉? 鍏朵腑搴旂敤鏈変釜闇姹? 闇瑕佺偣鍑誨湴鍥句笂鐨勬爣璁版椂, 鏄劇ず涓緇勬寜閽? 浜庢槸鎸夌収甯歌鐨勪綔娉曞け涓氫簡(jiǎn)InfoWindow, 濡備笅.

    //panel is a view, some buttons in it.
    final InfoWindow iw = new InfoWindow(panel, marker.getPosition(), null);
    //getMap() return BaiduMap
    activity.getMap().showInfoWindow(iw);
 

 

    鍊掓槸涓嶉毦, 浣嗗鐞嗙偣鍑諱簨浠舵椂鍙戠幇鏈夐棶棰樹簡(jiǎn). 鏍規(guī)嵁鏂囨。, 姝ゆ椂鏄劇ず鍑烘潵鐨処nfoWindow瀹為檯鏄疺iew鐨凚itmap鍥劇墖, 涔熷氨鎰忓懗鐫鏍規(guī)湰娌℃硶鍖哄垎View涓婄殑Buttons浜? 鏇村埆璇磋兘澶勭悊Button鐨勭偣鍑諱簨浠朵簡(jiǎn). 鎬笉寰? 鏂囨。涓浜庢暣涓狪nfoWindow鍙湁涓涓狢lickListener, 榪樹笉鍚湁View淇℃伅.

    榪欐牱鍙兘"鏇茬嚎鏁戝浗"浜? InfoWindow涓嶈兘鐢? 閭e氨鐩存帴鍦∕apView涓脊鍑轟釜PopupWindow鍚? (欏烘墜鏁叉墦嫻嬭瘯浠g爜, 灝辮褰曠敤)

 

    final View panel = UserPanel.make(activity);
    Point p = activity.getMap().getProjection().toScreenLocation(marker.getPosition());

    final PopupWindow pw = new PopupWindow(panel);
    pw.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
    pw.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
    pw.setFocusable(true);
    pw.setOutsideTouchable(true);
    //getMapView() return MapView, not BaiduMap any more
    pw.showAtLocation(activity.getMapView(), Gravity.LEFT | Gravity.BOTTOM,p.x, p.y );

    final Button btn = (Button) panel.findViewById(R.id.button2);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            pw.dismiss();
        }
    });

 

    鎼炲畾,浜洪暱涓剳琚嬫繪槸鏈夌敤鐨?..

 

    嫻嬭瘯涓彂鐜頒釜闂, 濡傛灉鍦板浘鍙戠敓鏀劇緝, Window寮瑰嚭鐨勪綅緗細(xì)涓嶅噯紜? 寰堟槸濂囨? 鎸夌悊MapView鍙戠敓鍙樺寲鏃? 鍏禤rojection搴旇鑳藉瀹炴椂璺熼殢鍙樺寲鐨? 榪欎釜闂鍥炲ご闇瑕佸啀鐪嬬湅.

    <---- 鍥炶繃澶寸殑鍒嗗壊綰?---->
    浣嶇疆涓嶅噯紜殑闂鏄敱浜嶸iew鍜孲creen鍧愭爣緋諱笉鍚? 浠ュ強(qiáng)MapView鑷韓size鍏卞悓褰卞搷鐨? 閿欐簡(jiǎn)Projection浜?.



codejie 2014-06-18 20:22 鍙戣〃璇勮
]]>
I;P : How to Hide System Keyhttp://www.shnenglu.com/codejie/archive/2014/06/12/207268.htmlcodejiecodejieThu, 12 Jun 2014 12:38:00 GMThttp://www.shnenglu.com/codejie/archive/2014/06/12/207268.htmlhttp://www.shnenglu.com/codejie/comments/207268.htmlhttp://www.shnenglu.com/codejie/archive/2014/06/12/207268.html#Feedback0http://www.shnenglu.com/codejie/comments/commentRss/207268.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/207268.html 

    浠婂ぉ紿佺劧縐佷俊闂?I;P鎬庝箞闅愯棌鐨勭郴緇熻櫄鎷熼敭'鐨? 鏍峰瓙灝卞涓嬪浘(瀵規(guī)瘮).

   

12

 

    鍙互鐪嬪埌涓変釜緋葷粺铏氭嫙閿彉鎴愪笁涓瀬灝忕殑鐐逛簡(jiǎn). 瀹為檯I;P騫舵病鏈夎揪鍒?闅愯棌'鐨勬晥鏋? 榪欏簲璇ュ彧鑳界畻鏄?寮卞寲'. 鍘熷洜鍚? 寮濮嬫垜娌℃悶瀹?闅愯棌', 鍚庢潵鎯崇潃濡傛灉鐪熼殣钘忎簡(jiǎn), 鐢ㄦ埛鎬庝箞鎿嶄綔緋葷粺鎸夐挳鍟? 鎵浠? '寮卞寲'瀵逛簬I;P涔熷氨澶熶簡(jiǎn)...榪欎釜涓鐐逛笉闅? 鍦╨ibgdx鐨凙ndroidApplication鐨凮nCreate()涓偣鍑誨涓嬩唬鐮佸嵆鍙?

 

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = false;
        
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
	        WindowManager.LayoutParams params = getWindow().getAttributes();
	        params.systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN;
	        getWindow().setAttributes(params);
        }
        
        initialize(new IPGame(setup, playService), cfg);
        
    }

    '璞嗙摚闃呰'榪欎釜app鍋氬埌浜?jiǎn)闅愯? 涓嶇煡濡備綍鍋氬埌鐨? 鍥犱負(fù)鏍規(guī)嵁Android瀹樻柟鏂囨。涓婄殑鍐呭鐪? 榪欎釜鏄笉寮鏀劇殑. 寰堟槸濂囨? 鍥炲ご鍐嶈瘯璇曞惂..



codejie 2014-06-12 20:38 鍙戣〃璇勮
]]>
Android DEV : setOnClickListener() vs. android:onClickhttp://www.shnenglu.com/codejie/archive/2014/06/06/207213.htmlcodejiecodejieFri, 06 Jun 2014 13:40:00 GMThttp://www.shnenglu.com/codejie/archive/2014/06/06/207213.htmlhttp://www.shnenglu.com/codejie/comments/207213.htmlhttp://www.shnenglu.com/codejie/archive/2014/06/06/207213.html#Feedback0http://www.shnenglu.com/codejie/comments/commentRss/207213.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/207213.html 

    鏅氫笂鏌ョ湅涓孌佃祫婧恱ml鏂囦歡鏃? 鍙戠幇View绔熺劧鏈変釜'android:onClick'灞炴?..榪欏お'闇囨儕'浜?..

    鍒氬紑濮嬫暡Android鏃? 灝辨兂榪囪繖涓棶棰?-- android鎶婅祫婧愭枃浠剁敤鐨勫姝ょ伒媧? 涓哄暐View鎺т歡涓嶈兘鍦ㄨ祫婧愭枃浠朵腑鐩存帴瀹氫箟鍚勭被浜嬩歡鍥炶皟鍑芥暟鍛? 鍚庢潵鏁插浜? 鍙戠幇濡傛灉鐩存帴鍦ㄨ祫婧愭枃浠朵腑瀹氫箟浜嬩歡澶勭悊灞炴? 榪欎細(xì)闄愬埗璧勬簮鏂囦歡鐨勪嬌鐢? 鍍忔槸鍚屼竴浠借祫婧愭枃浠跺鏋滆涓や釜涓嶅悓鐨凙ctivity浣跨敤, 閭e氨蹇呴』鍚勮嚜鍐欎竴涓簨浠跺洖璋冨鐞嗗嚱鏁? 濡傛灉娌℃湁, 涓鏃︿簨浠惰瑙﹀彂, 閭e氨鏄紓甯稿晩; 鍙﹀, 濡傛灉璧勬簮鏂囦歡琚竴涓狥ragment浣跨敤, 涓斿湪Fragment瀹炵幇浜?jiǎn)浜嬩欢澶勭悊鍑芥? 閭e綋Fragment鍔犲叆鍒癆ctivity鍚? 鎬曠郴緇熷氨鎵句笉鍒拌繖涓嚱鏁頒簡(jiǎn). 鍥犳, 瑙夊緱娌℃湁'android:onClick'榪欐牱鐨勫睘鎬ц鏄甯哥殑, 鍚庨潰涔熷氨娌″啀鎯寵繃榪欎釜浜? 姣忔閮藉緢鑰佸疄鐨勪嬌鐢╒iew.setOnClickListener()浜?..

    浣? 鐜板湪榪欎釜灞炴х珶鐒剁湡鏄瓨鍦? 鑰屼笖涓鐩撮兘鍦? 榪欏お璁╂垜'宕╂簝'浜?..閭f劅瑙夊氨鍍忚蛋鍦ㄥぇ琛椾笂, 紿佺劧鐪嬪埌鏈変漢鍦ㄩ仜 --- 鎭愰緳涓鏍?..

 

    浜庢槸, 璧剁揣鍐欎簡(jiǎn)浠g爜嫻嬭瘯浜?jiǎn)涓媬

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onButtonClick"
        android:text="Button" />
 
	public void onButtonClick(View view) {
		Log.d(Tag, "onButtonClick()");		
	}

    鏋滅劧濂界敤...浣嗙獊鐒舵兂鍒? 濡傛灉榪欎釜璺烿iew.setOnClickListener()鍏卞瓨鏃? 璋冪敤榪囩▼璇ユ槸濡備綍鍛?

 

		Button btn = (Button) this.findViewById(R.id.button1);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Log.d(Tag, "onClickListener - onClick()");
			}
			
		});

 

    嫻嬭瘯緇撴灉鏄?OnClilckListener()涓殑onClick()浼?xì)琚皟鐢? 鑰宎ndroid:onClick瀹氫箟鐨刼nButtonClick()瀹屽叏琚拷鐣ヤ簡(jiǎn).

    灝卞鍓嶉潰鎻愬埌鐨? 榪欑灞炴ц緗殑鏂瑰紡鏈変簺緙洪櫡, 榪樻槸浣跨敤setOnClickListener()姣旇緝鍙帶闈犺氨, 褰撶劧濡傛灉鍦ㄥ竷灞鏂囦歡浣跨敤姣旇緝鍥哄畾鐨勬儏鍐典笅, 榪欑灞炴у畾涔夋柟寮忕‘瀹炲彲浠ュ皯鏁插緢澶氫唬鐮?

 

    鍩轟簬嫻嬭瘯緇撴灉, 紿佺劧'鎶栨満鐏?鍦版兂鍒頒竴孌典唬鐮佹潵 -- 濡傛灉鍦╫nButtonClick()涓皟鐢╯etOnClickListener()浼?xì)鎬庢牱鍛?

 

	public void onButtonClick(View view) {
		Log.d(Tag, "onButtonClick()");
		
		Button btn = (Button) this.findViewById(R.id.button1);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Log.d(Tag, "onClickListener - onClick()");
			}
			
		});		
	}


    榪欐牱絎竴嬈$偣鍑?yán)L椂, 鎵цonButtonCllick(), 騫跺皢View鐨勭偣鍑諱簨浠跺鐞嗛氳繃setOnClickListener()浼犲埌OnClickListener()涓? 褰撳啀嬈¤鐐瑰嚮鏃? 灝變細(xì)鎵цonClick()浜? 榪欏氨鍙互瀹炵幇涓縐嶉渶姹?-- 鐐逛竴嬈℃病浜? 鍐嶇偣灝卞穿婧?..鏍規(guī)湰涓嶇敤鍔犱粈涔堝垽鏂彉閲忓拰璇彞浜? 鍢垮樋, 澶?鏈烘櫤'鍟?..

 

 

<---- 鎷栧歡鐥囦篃浼?xì)迤堝彂鐨勫垎鍓簿U?---->

 

    榪戞鏃墮棿, 鍚勭鍊熷彛瀵艱嚧鍚勭鎷栧歡鐥囧茍鍙? 浣垮緱SnakeGo鏁茬殑鐢氭槸緙撴參..涓嶈〃浜?..



codejie 2014-06-06 21:40 鍙戣〃璇勮
]]>
SnakeGo : Scaling Screen on Stage IIhttp://www.shnenglu.com/codejie/archive/2014/05/21/207048.htmlcodejiecodejieWed, 21 May 2014 15:59:00 GMThttp://www.shnenglu.com/codejie/archive/2014/05/21/207048.htmlhttp://www.shnenglu.com/codejie/comments/207048.htmlhttp://www.shnenglu.com/codejie/archive/2014/05/21/207048.html#Feedback0http://www.shnenglu.com/codejie/comments/commentRss/207048.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/207048.html 

    鏄ㄦ櫄鎶夿aseScreen灝辨暡濂戒簡(jiǎn), 涔熸壘鍒頒簡(jiǎn)灞忓箷鏀劇緝鐨勬渶浼樺拰鏈綆鏂瑰紡. 涓嶅璇? 鐪嬩唬鐮?

	public BaseScreen(final SnakeGo game) {
		super(new ScalingViewport(Scaling.fit, CommonConsts.Screen.WIDTH, CommonConsts.Screen.HEIGHT, new OrthographicCamera()), new SpriteBatch());		

		this.game = game;
		
		Gdx.input.setInputProcessor(this);
	}

    BaseScreen鐩存帴緇ф壙涓嶴tage鏄釜濂芥柟娉? 寰堟柟渚夸嬌鐢⊿tage鎵鎻愪緵鐨勫悇縐嶆覆鏌?杈撳叆鐩稿叧鐨勫嚱鏁? 浣嗚繖鏍峰鏋滆冭檻MVC椋庢牸鐨勮瘽, M鍜孋浼間箮灝變笉璇ュ湪Screen瀛樺湪, 浣嗗嵈鍙堟病鍦版柟鏀劇疆...褰撶劧榪欐牱鍙兘鏈変簺姝昏剳絳嬩簡(jiǎn). (鎴戝湪Snake瀵硅薄涓垎紱諱簡(jiǎn)M鍜孋).

    鍦ㄦ瀯閫犲嚱鏁頒腑, 浣跨敤Scaling鐨刦it鏂瑰紡鏉ュ垵濮婼tage, 鍙互淇濊瘉灞忓箷'灞呬腑鏀劇緝', 騫跺湪resize()鏃? 鏇存柊灝哄鍗沖彲.

	@Override
	public void resize(int width, int height) {
		this.getViewport().update(width, height, true);
	}

    榪欐柟娉曟湁浜涚畝鍗曠殑璁╀漢涓嶆暍鐩鎬俊...

 

<---- LIBGDX灝忎紬鐨勫垎鍓茬嚎 ---->

    榪欎袱澶╃暀鎰忎簺Game鐩稿叧鐨勬嫑鑱樹俊鎭? 鍙戠幇Libgdx鐪熸槸灝忎紬鍟? 涓涓兘娌℃湁, 闅鵑亾鐪熺殑鍍忔湅鍙嬭鐨?-- "涔熷氨浣犺嚜宸辯帺鐜╁惂...".  LIBGDX鐩稿姣旇緝'娼?, 鐢ㄨ搗鏉ヨ櫧璇存湁浜?澶嶆潅', 浣嗗浜庣爺絀朵釜'鏋舵瀯'浠涔堢殑, 鐪熺殑寰堜笉閿欑殑....鍞? 闅鵑亾鎴戜篃杞悜cocos2d-x鍘?



codejie 2014-05-21 23:59 鍙戣〃璇勮
]]>
SnakeGo : Scaling Screen on Stagehttp://www.shnenglu.com/codejie/archive/2014/05/19/207024.htmlcodejiecodejieMon, 19 May 2014 15:11:00 GMThttp://www.shnenglu.com/codejie/archive/2014/05/19/207024.htmlhttp://www.shnenglu.com/codejie/comments/207024.htmlhttp://www.shnenglu.com/codejie/archive/2014/05/19/207024.html#Feedback0http://www.shnenglu.com/codejie/comments/commentRss/207024.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/207024.html 

   鍒氭墠浣跨敤LIBGDX鐨凷tage鏃? 鍙戠幇1.0.1璺?.99鐨勪竴涓彉鏇?-- Stage鍐呯疆Camera鍜孷iewport(濂界敤鐨凷calingViewport綾?. 濡傛榪欐牱, 閭f斁緙╁睆騫曟洿鏂逛究浜?..

 

	@Override
	public void resize(int width, int height) {
		
		Vector2 size = Scaling.fit.apply(CommonConsts.Screen.WIDTH, CommonConsts.Screen.HEIGHT, width, height);	
		this.getViewport().update((int)size.x, (int)size.y, true);
 
//		Vector2 screenScaling = new Vector2((size.x / CommonConsts.Screen.WIDTH), (size.y / CommonConsts.Screen.HEIGHT));
//		this.getRoot().setScale(screenScaling.x, screenScaling.y);
	}

  45

 

    Stage鍐呯疆鐨凜amera鍜孷iewport鎶?鍘熺偣'鏀懼湪宸︿笅瑙? 鑰屼笉鏄父浣跨敤鐨?灞呬腑', 鍙﹀榪欎釜榪樻湁涓棶棰? 褰撳睆騫曠緝鏀炬椂, Viewport涔熶笉鏄竴鑸範(fàn)鎯?灞呬腑'鏄劇ず, 涔熸槸鏄潬宸︿笅. 鎴戠畝鍗曟煡鐪嬩簡(jiǎn)涓嬬浉搴旂殑Viewport綾? 娌℃湁鍙戠幇濡備綍璁劇疆榪欎釜鍋忕Щ閲? 鍙槸SnakeGo'绔栧睆'妯″紡鍦∟4涓婃濂?閾烘弧', 榪欎釜闂鍐嶈鍚? 濡傛灉闇瑕? 鑳介浼版渶楹葷儲(chǔ)鐨勫氨鏄噸杞絊calingViewport綾諱簡(jiǎn).

    浠g爜涓? 鍚庨潰娉ㄩ噴鎺夌殑涓ゅ彞鏄敤浜庣瓑姣斾緥鏀劇緝鍥懼艦鐨? 榪樻病璁ょ湡綆楄繃, 浼間箮涓嶉渶瑕佷篃鍙互鐨? 闇瑕佸啀鐪嬬湅Viewport綾?.



codejie 2014-05-19 23:11 鍙戣〃璇勮
]]>
SnakeGo : Scaling Screen and Moving Camerahttp://www.shnenglu.com/codejie/archive/2014/05/18/207007.htmlcodejiecodejieSun, 18 May 2014 11:24:00 GMThttp://www.shnenglu.com/codejie/archive/2014/05/18/207007.htmlhttp://www.shnenglu.com/codejie/comments/207007.htmlhttp://www.shnenglu.com/codejie/archive/2014/05/18/207007.html#Feedback2http://www.shnenglu.com/codejie/comments/commentRss/207007.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/207007.html 

    鏁蹭簡(jiǎn)鍑犳櫄SnakeGo, 鍘熷瀷鍑烘潵浜? 澶у鏉ョ湅鐪嬩笉...

 

123

 

    涓嶉敊, 榪欒揣灝辨槸---璐悆铔?..鍝堝搱...鍒? 榪欒繕鏄師鍨? 濂界帺鐨勫湪鍚庨潰鍛?..(浠ユ垜鏁插瓧閫熷害, 澶х害鍐嶇瓑涓嶅埌鍏釜鏈堝簲璇ュ彲浠ュ畬鎴愪簡(jiǎn)...)

 

    浠婂ぉ榪欓噷璁板綍涓嬩嬌鐢↙IBGDX榪囩▼涓鍒扮殑涓や釜闂:

        1. 璋冩暣灞忓箷姣斾緥;

        2. 縐誨姩瑙傚療闀滃ご;

 

涓, 璋冩暣灞忓箷姣斾緥

    LIBGDX鏄法騫沖彴鐨? 涓澶уソ澶勫氨鏄洿鎺ュ湪PC涓婃祴璇? 閭f槸闈炲父鐨勬柟渚? 浣嗚繖鏈変袱涓棶棰橀渶瑕佽冭檻, 涓, 鎵嬫満鏄?280x768, 浣嗘垜PC鍙湁1280x1024鐨? 鑰屼笖鐪熻寮涓窡鎵嬫満涓鏍峰ぇ灝忕殑涓鏍峰ぇ灝忕殑灞忓箷, 閭h繕鎬庝箞鐪媗og杈撳嚭鍛? 浜屽氨鏄笉鍚岀殑鎵嬫満鏈夌潃涓嶅悓鐨勫垎杈ㄧ巼, 闀垮姣斾篃涓嶄竴鑷? 閭f庝箞淇濊瘉鍥懼艦涓嶅彉褰㈠憿?

    榪欎釜闂涓嶉毦瑙e喅, 鍙渶瑕佸湪灞忓箷灝哄鍙戠敓鍙樺寲鏃? 鍗硆esize()(絎竴嬈″惎鍔ㄤ篃浼?xì)璋冪敤姝ゅ嚱鏁?涓? 閲嶆柊璋冩暣闀滃ご(Camera)鐨勫弬鏁板嵆鍙? 濡備笅浠g爜:

	@Override
	public void resize(int width, int height) {
		Vector2 size = Scaling.fit.apply(WIDTH, HEIGHT, width, height);
		
		camera = new OrthographicCamera(size.x, size.y);
		camera.update();

		batch.setProjectionMatrix(camera.combined);
	    
              int viewportX = (int)(width - size.x) / 2;
	       int viewportY = (int)(height - size.y) / 2;
	       int viewportWidth = (int)size.x;
	       int viewportHeight = (int)size.y;
	    
		Gdx.gl.glViewport(viewportX, viewportY, viewportWidth, viewportHeight);

		super.resize(width, height);
	}

    榪欓噷閲囩敤鐨勬槸閲嶆柊鍒涘緩camera瀹炰緥鐨勬柟寮? 鍙﹀鐢ㄦ敼鍙樺凡鏈塩amera瀹炰緥鐨勫弬鏁版柟寮忎篃鏄竴鏍風(fēng)殑. 寰堢畝鍗? 鑰屼笖榪欐牱涓嬈″氨瑙e喅浜?jiǎn)涓婇潰涓や釜闂?-- PC鏈轟笂浣跨敤浠諱綍灝哄鐨勭獥鍙? 閮藉彲浠ヨ幏寰楄窡璁劇疆絳夋瘮渚嬬殑紿楀彛, 鎵嬫満涓婁害鏄姝? 鍍?a href="http://www.shnenglu.com/codejie/category/20828.html">I;P灝辨槸閲囩敤鐨勮繖縐嶆柟寮忔潵淇濇寔鍏跺湪浠繪剰鎵嬫満涓婇兘鏄?280:768鐨勬瘮渚?

    榪欑鏂規(guī)硶鍙槸鏀瑰彉浜?瑙嗗浘'鐨勫ぇ灝? 浣嗗茍涓嶄細(xì)鏀瑰彉鍏朵腑鐨勫浘褰㈢殑澶у皬, 榪欐牱涓轟簡(jiǎn)淇濇寔鍥懼艦鏄劇ず姣斾緥, 闇瑕佸湪杈撳嚭鍥懼艦鏃跺仛鐩稿簲鐨勬瘮渚嬫斁緙? 鍙互鍦╮esize()鑾峰緱榪欎釜姣斾緥, 鏌撳湪鍥懼艦杈撳嚭鏃朵嬌鐢ㄨ繖涓瘮渚?

              screenScaling = new Vector2((size.x / WIDTH), (size.y / HEIGHT));
              ...
              ...
              batch.draw(img, (- WIDTH / 2) * screenScaling.x, (- HEIGHT / 2) * screenScaling.y, WIDTH * screenScaling.x, HEIGHT * screenScaling.y);
 

浜? 縐誨姩瑙傚療闀滃ご

    鍦⊿nakeGo涓? 涓轟簡(jiǎn)涓嶈Snake'璺戝嚭'灞忓箷, 闇瑕侀暅澶碿amera璺烻nake鏈韓淇濇寔'鍚屾'縐誨姩, 榪欐牱鐪嬭搗鏉nake淇濇寔鍦ㄥ睆騫曠殑涓棿, 浣嗗叾瀹僌bject鏄Щ鍔ㄧ殑. 鏍規(guī)嵁'鐩稿榪愯'鍘熺悊, 浣挎暣涓湅璧鋒潵鍍忔槸Snake鍦∣bject涓┛琛? 鎵浠? 縐誨姩camaera鏄繀欏葷殑, 浠g爜涔熺畝鍗? 濡備笅:

              ...
		final OrthographicCamera camera = game.getCamera();
		camera.translate(0.0f, 32.0f, 0.0f);
		camera.update();
		game.getSpriteBatch().setProjectionMatrix(camera.combined);
              ...

 

<----蹇?jī)鐑?chǔ)鎰忎貢鐨勫垎鍓茬嚎---->

    榪欏嚑澶╁湪鎵懼伐浣? 鍓嶉潰鍘婚潰浜?jiǎn)涓嬈? 鍏朵腑娌′竴涓狝pp鎴栬匞ame鐨勯棶棰? 鍊掑叏鏄疌++鐩稿叧鐨? 鐧繪椂灝卞偦鐪間簡(jiǎn)...铏借鍜變篃鏄疌++'鍑鴻韓'鐨?涓嶇劧Blog涔熶笉浼?xì)鍦q欓噷涓嶆槸), 浣嗕篃璁哥湡鐨勬槸'鑰?浜? 鎵嶄笁騫翠笉鐢–++,绔熺劧蹇樿鐨勫彧鍓╀笅涓猘uto_ptr浜?..鏇存?zhèn)插墽鐨勬槸鍜辩敤鐨凜++98鏍囧噯宸茬粡鍙樻垚C++11浜? auto_ptr鍙樻垚smart_ptr浜?..

    閮借鐜板湪鏄釜'璺ㄧ晫'鐨勬椂浠? 浣嗗挶榪欒繕娌℃湁璺ㄧ晫, 鍙槸鍚岃杞釜鏂瑰悜鑰屽凡, 涓哄暐灝辮繖涔堟?zhèn)插墽浜?jiǎn)...濂藉惂, 浼拌瀛﹁壓涓嶇簿鎵嶆槸鏍規(guī)湰...

    鍚屽"'澶ф暟鎹?鐨勫崥澹?鍛ㄤ簲鏉ョ數(shù), 闂垜瑕佷笉瑕佽窡濂逛竴璧峰仛涓?鍥懼儚鎼滅儲(chǔ)', 鏈変簺鐘硅鮑, 瑕佽涓夊勾鍓? 涔熻灝卞共浜? 浣嗙幇鍦?..鍐嶈漿嬈″槢...

    鎭伴;P鏁插畬, 蹇?jī)鐑?chǔ)鎰忎貢鐨勪竴鍛? 鍙ソ璧剁揣鎶撹搗SnakeGo鏉? 澶滃鐤暡, 鏉ュ畨鎶氱牥鐮拌簛鍔ㄧ殑蹇?..鏄殑, 鑷沖皯鏁插瓧鍙互璁╄嚜宸卞鉤闈?rùn)浜?..

 

    鍚愭Ы鑰屽凡, 榪欓噷鎯寵 ---- 紼嬪簭鍛樹滑鍟? 杞瑕佽秮鐫騫磋交璧剁揣鍟?..



codejie 2014-05-18 19:24 鍙戣〃璇勮
]]>
I;P : Classes Diagramhttp://www.shnenglu.com/codejie/archive/2014/05/14/206962.htmlcodejiecodejieWed, 14 May 2014 12:36:00 GMThttp://www.shnenglu.com/codejie/archive/2014/05/14/206962.htmlhttp://www.shnenglu.com/codejie/comments/206962.htmlhttp://www.shnenglu.com/codejie/archive/2014/05/14/206962.html#Feedback0http://www.shnenglu.com/codejie/comments/commentRss/206962.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/206962.html 

    SnakeGo鐨勫熀鏈ā鏍峰湪鑴戣涓嬀鐢葷殑宸笉澶氫簡(jiǎn), 鐜板湪闇瑕佹斁鍒?灞忓箷'涓婄敾涓師鍨嬪嚭鏉ヤ簡(jiǎn), 浣嗙獊鐒跺氨蹇樿璇ユ庝箞鐢╨ibgdx妗嗘灦鏉ョ敾浜?..

    鏁插畬I;P榪欐墠鍑犲ぉ鍟?..璧剁揣鎵撳紑宸ョ▼鍐嶇湅, 灝辨兂璧蜂互鍓嶈窡浜鴻榪?-- "libgdx涓嶈兘鍙?寮曟搸', 欏跺鏄竴涓?綾誨爢'", 鏄晩, libgdx浼間箮灝辨病涓浐瀹氱殑鏋跺瓙鍢?.. 浣跨敤涓? 鐢ㄨ搗libgdx鏉ョ湡鐨勬槸瑕佷笢鎷胯タ鍑? 鎸夌収鍏朵腑鍚勭被鐨勫姛鑳? 鑷繁鏉ユ惌寤鴻嚜宸辯殑妗嗘灦... 浜庢槸, 瓚佺潃鑴戣榪樼儹, 璧剁揣鐢諱簡(jiǎn)涓嬮潰鐨勭被鍥? 鐪佺殑鍙堝繕璁?..

 

classes

   

    濡備綍, 涔變笉?

    BaseScreen鐢ㄥ埌鐨凷creenCanvas鍜孉ctorStage鍔熻兘鏄浉鍚岀殑, 鍙槸鍓嶈呯敤浜庢斁緗甋prite, 鑰屽悗鑰呯敤浜庢斁緗瓵ctor/Group; 綆鍗曡, ScreenCanvas閲岄潰鏀劇殑鏄?鑳屾櫙鍥?璐村浘', 鑰孉ctorStage鏀劇疆鏄彲浠ュ搷搴擳ouch鐨凙ctors.

    Screen涓嬮潰鐨凪anager鍜孯ender鍦ㄦ瘡涓猄creen瀹炰緥閲岄潰閮芥湁涓濂楃殑, 鍓嶈呯敤浜庡瓨鏀懼拰澶勭悊'鏁版嵁', 鑰孯ender鍒欐牴鎹墠鑰呯殑鏁版嵁鏉ユ覆鏌撶晫闈? 涓ょ涔嬮棿閫氳繃鐩鎬簰娉ㄥ唽鐨凩istener鏉ヤ氦鎹㈡暟鎹拰浜嬩歡. 榪欐灦瀛愬儚涓嶅儚MVC椋庢牸? 鍢垮樋...



codejie 2014-05-14 20:36 鍙戣〃璇勮
]]>
闅忕瑪 : Do you remember Turbo Basic?http://www.shnenglu.com/codejie/archive/2014/05/13/206952.htmlcodejiecodejieTue, 13 May 2014 15:29:00 GMThttp://www.shnenglu.com/codejie/archive/2014/05/13/206952.htmlhttp://www.shnenglu.com/codejie/comments/206952.htmlhttp://www.shnenglu.com/codejie/archive/2014/05/13/206952.html#Feedback6http://www.shnenglu.com/codejie/comments/commentRss/206952.htmlhttp://www.shnenglu.com/codejie/services/trackbacks/206952.html 

    鑰佺埛瀛愬績(jī)涓嶈? 渚濈劧鍦ㄥ嫟鍕ゆ伋鎭沖湴鏁茬潃涔﹀拰浠g爜...娌¢敊, 灝辨槸source code. 鍍忚佺埛瀛愯繖鏍風(fēng)殑鑰佷竴杈堜細(xì)鐢ㄧ數(shù)鑴戠殑閮戒笉澶? 鑰屾垜浜茬埍鐨勮佺埛瀛愰偅鏄細(xì)Turbo Basic鐨勯《灝栭珮鎵嬪晩...姣忔鎯沖埌榪欎釜, 鍐呭績(jī)閮藉嶆劅鑷豹...

    褰撳勾鐨?紿楀彛"緙栫▼鏋佸叾綣佺悙, 濡傛灉涓嶇湅鐪嬮偅涓濂?lt;Win32 API澶у叏>, 鍐嶅姞涓婁釜<Visual C++鎶鏈唴騫?gt;, 閮戒笉淇濊瘉鑳芥暡涓猈indow鍑烘潵, 浠涔圚WND, hInstance, 浠ュ強(qiáng)涔變竷鍏碂鐨勫悇綾葷獥鍙e拰娑堟伅鐨剆truct...鍙嶆鎴戞槸鏃╂棭灝卞繕鍏夊厜浜?..鎯蟲兂鐜板湪鍦ㄧ殑Android涓婂紕涓?紿楀彛"鍑烘潵, 閭?閭g湡鏄?澶皬鍎跨"浜?..

    鍛? 璺戣繙浜?..鎴戞剰鎬濇槸 ---- 鑰佺埛瀛愭姝ヤ簬Windows緙栫▼, 鍚勭被浠g爜鍏ㄩ儴榪愯鍦―OS涓? 闅忕潃Windows鐨勪笉鏂敼榪? 緇堜簬, Windows涓嬪啀涔熶笉鑳借繍琛岃佺埜鎵嬩腑鐨勬棤鏁岀鍣?-- Turbo Basic浜?..

    鏇捐窡鑰佺埛瀛愯榪? 灝嗕粬鐨勪唬鐮侀兘縐昏嚦鍒癆ndroid涓? 浣嗚佺埛瀛愪笉鍚屾剰, 鍥犱負(fù), 浠栬佷漢瀹惰繕瑕佹敼浜涘弬鏁扮殑, 鏀逛簺鍙傛暟, 浜涘弬鏁? 鍙傛暟...鐪嬬潃鑰佺埛瀛愬湪Win7涓婅涓猇M璺慩P鍐嶆墦寮Command紿楀彛榪愯Turbo Basic, 鐢氭槸杈涜嫤. 浣滀負(fù)鐭ュ師鐞? 浼?xì)Google鐨勭▼搴忓憳鎴戞潵璇? 甯佺埛瀛愬紕涓狣OS铏氭嫙鐜鏉ヨ窇TB.EXE, 閭f槸蹇呴』鐨?..

    浜庢槸灝辨湁浜?jiǎn)涓嬮潰鐨勬埅鍥?

 

dos tb

 

   DosBox



codejie 2014-05-13 23:29 鍙戣〃璇勮
]]>
国产福利电影一区二区三区,免费久久久久久久精 | 国产精品久久国产精品99盘| 欧美国产成人久久精品| 91精品国产高清久久久久久国产嫩草| 亚洲精品高清国产一线久久| 波多野结衣久久一区二区| 欧美日韩成人精品久久久免费看| 99久久精品免费看国产免费| 久久精品国产亚洲网站| 国产精品久久久久国产A级| 久久久久国产精品熟女影院 | 2021国产精品久久精品| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 久久久亚洲裙底偷窥综合| 色老头网站久久网| 久久午夜福利无码1000合集| 久久人妻AV中文字幕| 97精品伊人久久久大香线蕉| 久久精品国产2020| 久久精品夜夜夜夜夜久久| 久久精品无码专区免费东京热| 久久久久亚洲av无码专区| 大伊人青草狠狠久久| 伊人色综合久久| 人妻中文久久久久| 中文字幕久久精品无码| 久久国产精品成人片免费| 91麻豆精品国产91久久久久久| 国产日韩久久久精品影院首页| 日本久久中文字幕| 久久婷婷五月综合国产尤物app| 久久精品国产精品国产精品污| 99国内精品久久久久久久 | 狠狠色婷婷久久一区二区| 亚洲精品无码久久久久去q| 久久福利青草精品资源站| 国产精品热久久无码av| 久久人人爽人人爽人人片av麻烦| 久久久久亚洲AV无码永不| 精品久久久久久久久久久久久久久| 久久久久久综合网天天|