当前位置:  编程技术>综合
本页文章导读:
    ▪struts配置文件l中使用include 标签 引入另外一个在jar中的struts文件      最近遇到了一个需求:有一个master struts.xml, 该文件中需要引入若该子模块中struts.xml. 但是这些子模块都以jar包的方式放入主模块的classpath中,当然它们的struts.xml也在jar中, 这种情形主模.........
    ▪cocos2d-x CCScrollView和CCTableView的使用      在游戏和应用中经常要实现左右滑动展示游戏帮助、以列表显示内容的UI效果,就像android中的Gallery和ListView。本文通过CCScrollView和CCTableView分别来实现这两个效果,基于cocos2d-x 2.0.4版本。 首先.........
    ▪jQuery编辑器KindEditor4.1.4代码高亮显示设置      编辑器KindEditor官网: http://www.kindsoft.net/ 1、需要加载的JS和CSS文件为: <script src=/blog_article/"kindeditor-4.1.4/kindeditor.js" type="text/javascript" charset="utf-8"></script> <script src=/blog_article/&quo........._/font/index.html>

[1]struts配置文件l中使用include 标签 引入另外一个在jar中的struts文件
    来源: 互联网  发布时间: 2013-11-10

最近遇到了一个需求:有一个master struts.xml, 该文件中需要引入若该子模块中struts.xml.

但是这些子模块都以jar包的方式放入主模块的classpath中,当然它们的struts.xml也在jar中, 这种情形主模块的struts还能引入吗?

首先问问google,结果是可行, 如下来自struts官方网站:

<!DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <include file="Home.xml"/>
    <include file="Hello.xml"/>
    <include file="Simple.xml"/>
    <include file="/util/POJO.xml"/>
    <include file="/com/initech/admin/admin-struts.xml"/>
</struts>
Each included file must be in the same format as struts.xml, including the DOCTYPE. The include files can be placed anywhere on the classpath and should be referred to by that path by the "file" attribute.

开始尝试:

子模块的struts配置文件 名为test-struts.xml, 路径为com/strutsTest/myTest/

1. 在主struts配置文件中使用include标签,并填入全路径, 如下。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<include file="struts-default.xml" />
	<include file="com/strutsTest/myTest/test-struts.xml" />
</struts>
结果:扑街

2. 在主struts配置文件中使用include标签,只填入文件名, 如下。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<include file="struts-default.xml" />
	<include file="test-struts.xml" />
</struts>
结果:扑街

3. 在主struts配置文件中使用include标签,只填入文件名 并将子模块中的struts配置文件放入jar的顶级路径中, 即:

childModule.jar
-com
        --strutsTest
              --.....
test-struts.xml

主struts配置文件与2相同

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<include file="struts-default.xml" />
	<include file="test-struts.xml" />
</struts>
结果: 成功!

可是为什么呢,暂记录,等有时间解释,并期待大牛的答疑。


作者:pushme_pli 发表于2013-1-8 23:14:45 原文链接
阅读:30 评论:0 查看评论

    
[2]cocos2d-x CCScrollView和CCTableView的使用
    来源: 互联网  发布时间: 2013-11-10
在游戏和应用中经常要实现左右滑动展示游戏帮助、以列表显示内容的UI效果,就像android中的Gallery和ListView。本文通过CCScrollView和CCTableView分别来实现这两个效果,基于cocos2d-x 2.0.4版本。
首先来简单了解一下这两个东东,CCScrollView本身是一个CCLayer,而CCTableView是CCScrollView的子类,这是引擎已经帮我们封装好了的,CCTableView可以设置成横向和纵向,用它可以实现类似于Gallery和ListView的效果。
1. 首先实现游戏帮助界面
(1) 创建头文件GalleryLayer.h
#ifndef GALLERY_LAYER_H
#define GALLERY_LAYER_H

#include "cocos2d.h"
#include "SimpleAudioEngine.h"
#include "cocos-ext.h"

USING_NS_CC;
USING_NS_CC_EXT;


class GalleryLayer : public cocos2d::CCLayer ,public CCScrollViewDelegate
{
public:
    virtual bool init();  

    void menuCloseCallback(CCObject* pSender);

    CREATE_FUNC(GalleryLayer);

public:
	//scrollview滚动的时候会调用
	void scrollViewDidScroll(CCScrollView* view);
	//scrollview缩放的时候会调用
	void scrollViewDidZoom(CCScrollView* view);

	virtual void onEnter();
	virtual void onExit();

	virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
	virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
	virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
	virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);

private:
	//根据手势滑动的距离和方向滚动图层
	 void adjustScrollView(float offset);
	 CCScrollView *m_pScrollView;
	 CCPoint m_touchPoint;
	 int m_nCurPage;
};

#endif  


类GalleryLayer继承了CCScrollViewDelegate,实现了它的两个纯虚函数,主要是为了当scrollview滚动和缩放时回调这两函数,这样我们就可以在这两函数中做相关操作了。

(2) 看源文件GalleryLayer.cpp

#include "GalleryLayer.h"
#include "ListViewLayer.h"
 
using namespace cocos2d;
using namespace cocos2d::extension;
 
bool GalleryLayer::init()
{
    bool bRet = false;
    do
    {
       CC_BREAK_IF( !CCLayer::init() );
 
       m_nCurPage = 1;
       CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
       CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
 
       CCLayer *pLayer = CCLayer::create();
       char helpstr[30] = {0};
       for (int i = 1; i <= 3; ++ i)
       {
           memset(helpstr, 0, sizeof(helpstr));
           sprintf(helpstr,"bg_%02d.png",i);
           CCSprite *pSprite = CCSprite::create(helpstr);
           pSprite->setPosition(ccp(visibleSize.width * (i-0.5f), visibleSize.height / 2));
           pLayer->addChild(pSprite);
       }
 
       m_pScrollView = CCScrollView::create(CCSizeMake(960, 640), pLayer);
       m_pScrollView->setContentOffset(CCPointZero);
       m_pScrollView->setTouchEnabled(false);
       m_pScrollView->setDelegate(this);
       m_pScrollView->setDirection(kCCScrollViewDirectionHorizontal);
       pLayer->setContentSize(CCSizeMake(960*3, 640));
 
       this->addChild(m_pScrollView);
 
       CCSpriteFrameCache *pCache =  CCSpriteFrameCache::sharedSpriteFrameCache();
 
       pCache->addSpriteFrame(CCSpriteFrame::create("button_normal.png",CCRectMake(0, 0, 64, 64)),"button_normal.png");
       pCache->addSpriteFrame(CCSpriteFrame::create("button_selected.png",CCRectMake(0, 0, 64, 64)),"button_selected.png");
       for (int i = 1; i <= 3; ++ i)
       {
           CCSprite *pPoint = CCSprite::createWithSpriteFrameName("button_normal.png");
           pPoint->setTag(i);
           pPoint->setPosition(ccp( origin.x + (visibleSize.width - 3 * pPoint->getContentSize().width)/2 + pPoint->getContentSize().width * (i-1), origin.y + 30));
           this->addChild(pPoint);
       }
        CCSprite *pPoint = (CCSprite *)this->getChildByTag(1);
        pPoint->setDisplayFrame(pCache->spriteFrameByName("button_selected.png"));
 
        bRet = true;
    }while(0);
 
    return bRet;
 
}
 
void GalleryLayer::menuCloseCallback(CCObject* pSender)
{
 
}
 
void GalleryLayer::scrollViewDidScroll(cocos2d::extension::CCScrollView *view)
{
    CCLOG("scroll");
}
 
void GalleryLayer::scrollViewDidZoom(cocos2d::extension::CCScrollView *view)
{
    CCLOG("zoom");
}
 
void GalleryLayer::onEnter()
{
    CCLayer::onEnter();
    CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 1, false);
}
 
void GalleryLayer::onExit()
{
    CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
    CCLayer::onExit();
    CCSpriteFrameCache::sharedSpriteFrameCache()->removeUnusedSpriteFrames();
}
 
bool GalleryLayer::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
    m_touchPoint = CCDirector::sharedDirector()->convertToGL(pTouch->getLocationInView());
    return true;
}
 
void GalleryLayer::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)
{
 
}
 
void GalleryLayer::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
    CCPoint endPoint = CCDirector::sharedDirector()->convertToGL(pTouch->getLocationInView());
    float distance = endPoint.x - m_touchPoint.x;
    if(fabs(distance) > 50)
    {
        adjustScrollView(distance);
    }
}
 
void GalleryLayer::ccTouchCancelled(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
{
    CCPoint endPoint = CCDirector::sharedDirector()->convertToGL(pTouch->getLocationInView());
    float distance = endPoint.x - m_touchPoint.x;
    if(fabs(distance) > 50)
    {
        adjustScrollView(distance);
    }
}
 
void GalleryLayer::adjustScrollView(float offset)
{
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
    CCSpriteFrameCache *pCache =  CCSpriteFrameCache::sharedSpriteFrameCache();
    CCSprite *pPoint = (CCSprite *)this->getChildByTag(m_nCurPage);
    pPoint->setDisplayFrame(pCache->spriteFrameByName("button_normal.png"));
    if (offset<0)
    {
        m_nCurPage ++;
    }else
    {
        m_nCurPage --;
    }
 
    if (m_nCurPage <1)
    {
        m_nCurPage = 1;
    }
 
    if(m_nCurPage > 3)
    {
        CCLayer *pLayer = ListViewLayer::create();
        CCScene *pScene = CCScene::create();
        pScene->addChild(pLayer);
        CCDirector::sharedDirector()->replaceScene(pScene);
    }
    else
    {
        pPoint = (CCSprite *)this->getChildByTag(m_nCurPage);
        pPoint->setDisplayFrame(pCache->spriteFrameByName("button_selected.png"));
        CCPoint  adjustPos = ccp(origin.x - visibleSize.width * (m_nCurPage-1), 0);
        m_pScrollView->setContentOffset(adjustPos, true);
    }
}

这里一共有三张图,是从捕鱼达人中拿出来的背景图,当滚完三张图时就跳转到ListViewLayer场景去,上面的代码比较容易懂。
首先创建一个CCLayer,包含三张背景图,设置CCLayer的ContentSize,并设置三张图片的位置
然后设置CCLayer为CCScrollview的内容,并设置CCScrollView的显示区域。
最后根据用户滑动的方向和距离,通过设置scrollview的setContentOffset,滚动视图。
CCScrollview.h文件中封装了一个枚举类型,一共有四个方向,常用横向和纵向,这里使用了横向。
typedef enum {
    kCCScrollViewDirectionNone = -1,
    kCCScrollViewDirectionHorizontal = 0,
    kCCScrollViewDirectionVertical,
    kCCScrollViewDirectionBoth
} CCScrollViewDirection;

下面来

    
[3]jQuery编辑器KindEditor4.1.4代码高亮显示设置
    来源: 互联网  发布时间: 2013-11-10

编辑器KindEditor官网: http://www.kindsoft.net/


1、需要加载的JS和CSS文件为:

<script src=/blog_article/"kindeditor-4.1.4/kindeditor.js" type="text/javascript" charset="utf-8"></script>
<script src=/blog_article/"kindeditor-4.1.4/plugins/code/prettify.js" type="text/javascript"></script>
<link href=/blog_article/"kindeditor-4.1.4/plugins/code/prettify.css" rel="stylesheet" type="text/css" />

2、编辑器初始化设置后,在里面加prettyPrint():
 

KindEditor.ready(function (K) {
    window.EditorObject = K.create('#txtBody', {
        cssPath: 'plugins/code/prettify.css',
        resizeType: 1,
        allowPreviewEmoticons: false,
        allowImageUpload: false,
        items: [
				'code', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
				'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
				'insertunorderedlist', '|', 'emoticons', 'image', 'link']
    });
    prettyPrint();
});


假如要高亮的代码一开始是隐藏的,要显示出来,则需要调用prettyPrint();

function Show(i) {       
    var id = '#divBody' + i;  
    if($(id).is(":hidden")){
        $('#divIntro' + i).hide();  
        $(id).slideDown();       
        $(id).next("a").text("收缩...");   
        prettyPrint();      
    }
    else{
        $('#divIntro' + i).show(); 
        $(id).slideUp();       
        $(id).next("a").text("详细...");        
    }     
}

3、默认代码是不换行的,要自动换行可以修改prettify.css,把white-space原来的值pre修改为pre-wrap:

pre.prettyprint {
	border: 0;
	border-left: 3px solid rgb(204, 204, 204);
	margin-left: 2em;
	padding: 0.5em;
	font-size: 110%;
	display: block;
	font-family: "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace;
	margin: 1em 0px;
	white-space: pre-wrap; /* 原来的值是 pre;*/
}



作者:gdjlc 发表于2013-1-8 23:07:31 原文链接
阅读:41 评论:0 查看评论

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
数据库 iis7站长之家
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3