GVKun编程网logo

cocos2dx中onExitTransitionDidStart、onExit和onEnter、onEnterTransitionDidFinish处理机制

7

关于cocos2dx中onExitTransitionDidStart、onExit和onEnter、onEnterTransitionDidFinish处理机制的问题就给大家分享到这里,感谢你花时间

关于cocos2dx中onExitTransitionDidStart、onExit和onEnter、onEnterTransitionDidFinish处理机制的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.、android – ActivityOptions.makeSceneTransitionAnimation似乎不存在、android – `setEnterTransition`仅适用于`ActivityCompat.startActivity`、android-如何在ActionBarSherlock中将“ setOnEditorActionListener”设置为EditText?等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

cocos2dx中onExitTransitionDidStart、onExit和onEnter、onEnterTransitionDidFinish处理机制

cocos2dx中onExitTransitionDidStart、onExit和onEnter、onEnterTransitionDidFinish处理机制

进入Node::addChildHelper定义发现如下代码

if( _running )

{

child->onEnter();

// prevent onEnterTransitionDidFinish to be called twice when a node is added in onEnter

if (_isTransitionFinished) {

child->onEnterTransitionDidFinish();

}

}

也就是说,只有父节点已经在running的情况下,添加子节点时才会调用子节点的onEnter,由此可见,在scene中的添加的子节点,如果scene没有被渲染,那么之前在scene中添加的子节点(包括layer,sprite)时不会立刻调用子节点的onEnter。那么scene的onEnter()在什么时候调用呢?查看Director中的DrawScene()定义,发现如下代码:

/* to avoid flickr,nextScene MUST be here: after tick and before draw.

XXX: Which bug is this one. It seems that it can't be reproduced with v0.9 */

if (_nextScene)

{

setNextScene();

}

查看setNextScene定义发现

void Director::setNextScene()

{

bool runningIsTransition = dynamic_cast<TransitionScene*>(_runningScene) != nullptr;

bool newIsTransition = dynamic_cast<TransitionScene*>(_nextScene) != nullptr;


// If it is not a transition,call onExit/cleanup

if (! newIsTransition)

{

if (_runningScene)

{

_runningScene->onExitTransitionDidStart();

_runningScene->onExit();

}

// issue #709. the root node (scene) should receive the cleanup message too

// otherwise it might be leaked.

if (_sendCleanupToScene && _runningScene)

{

_runningScene->cleanup();

}

}


if (_runningScene)

{

_runningScene->release();

}

_runningScene = _nextScene;

_nextScene->retain();

_nextScene = nullptr;


if ((! runningIsTransition) && _runningScene)

{

_runningScene->onEnter();

_runningScene->onEnterTransitionDidFinish();

}

}

在场景类型不是TransitionScene类型时,当当前场景不为null时,先退出当前场景,先调用当前场景的onExitTransitionDidStart、onExit并释放当前场景,接着讲下一个场景赋值给当前场景_runningScene = _nextScene;接着调用当前场景的onEnter()、onEnterTransitionDidFinish(),进行自身以及已添加子节点的onEnter调用,每个节点会在自身的onEnter中设置_running = true;这样后续在已有场景中添加子节点时,会直接调用子节点的onEnter。

在已渲染场景中,子节点动态从父类中移除时,会调用onExitTransitionDidStart以及onExit

void Node::detachChild(Node *child,ssize_t childindex,bool doCleanup)

{

// IMPORTANT:

// -1st do onExit

// -2nd cleanup

if (_running)

{

child->onExitTransitionDidStart();

child->onExit();

}

#if CC_USE_PHYSICS

child->removeFromPhysicsWorld();

#endif


// If you don't do cleanup,the child's actions will not get removed and the

// its scheduledSelectors_ dict will not get released!

if (doCleanup)

{

child->cleanup();

}


// set parent nil at the end

child->setParent(nullptr);


_children.erase(childindex);

}

.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
    at sun.reflect.GeneratedConstructorAccessor65.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
    at com.mysql.jdbc.ConnectionImpl.throwConnectionClosedException(ConnectionImpl.java:1311)
    at com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1303)
    at com.mysql.jdbc.ConnectionImpl.createStatement(ConnectionImpl.java:2683)
    at com.mysql.jdbc.ConnectionImpl.createStatement(ConnectionImpl.java:2665)
    at security.view.util.SqlUtils.insert(SqlUtils.java:315)
    at security.view.util.SqlUtils.processKill(SqlUtils.java:109)
    at security.view.util.SqlUtils.sql(SqlUtils.java:148)
    at security.view.util.SqlUtils.sqlJsonObj(SqlUtils.java:418)
    at security.view.util.SqlUtils.processKill(SqlUtils.java:97)
    at security.view.util.SqlUtils.sql(SqlUtils.java:148)
 

android – ActivityOptions.makeSceneTransitionAnimation似乎不存在

android – ActivityOptions.makeSceneTransitionAnimation似乎不存在

Android L引入了一个新的动画功能:在不同活动中的类似视图之间进行动画制作.记录了 here.

我曾尝试使用ActivityOptions.makeSceneTransitionAnimation,但它似乎在SDK中(或在jar中看不到),所以我尝试使用反射,它返回一个空值.

有没有其他人得到它的工作?

解决方法

好的,我搞定了.

似乎现在完全忽略了设置styles.xml中的值.

您需要在每个Activity的onCreate中执行此操作,直到修复为止

getwindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Transition transition = // load transition here.
getwindow().setSharedElementEnterTransition(transition);
getwindow().setSharedElementExitTransition(transition);

根据ViewAnimationUtils所遇到的相同错误,你会在Android Studio中看到错误,但它会编译并运行正常.

android – `setEnterTransition`仅适用于`ActivityCompat.startActivity`

android – `setEnterTransition`仅适用于`ActivityCompat.startActivity`

我想在下一个活动中添加一个输入转换.

所以我做了:

getwindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
window.setEnterTransition(new Slide());

这似乎不起作用.在做了一些试验和错误之后(因为我将这个转换用于其他活动)我发现它在调用后确实有效

ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(activity,view,"some_name");
ActivityCompat.startActivity(activity,new Intent(TourAndLoginActivity.this,LoginActivity.class),activityOptionsCompat.toBundle());

但我没有共享元素(我添加了一个视图来测试它).
无法将“null”添加为共享元素.

这样做真的是强制性的吗?我的解决方法是添加一个不可见的共享元素.

解决方法

取自Android开发者文档:

Start an activity using transitions
If you enable transitions and set an exit transition for an activity,the transition is activated when you launch another activity as follows:

startActivity(intent,ActivityOptions.makeSceneTransitionAnimation(this).toBundle());

If you have set an enter transition for the second activity,the transition is also activated when the activity starts. To disable transitions when you start another activity,provide a null options bundle.

https://developer.android.com/training/material/animations.html

因此,首先启用转换,如下所示:

getwindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
window.setEnterTransition(new Slide());

然后开始活动如下:

startActivity(intent,ActivityOptions.makeSceneTransitionAnimation(this).toBundle());

android-如何在ActionBarSherlock中将“ setOnEditorActionListener”设置为EditText?

android-如何在ActionBarSherlock中将“ setOnEditorActionListener”设置为EditText?

我已使用此代码在ActionBarSherlock中放置可折叠视图(EditText):

public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.activity_main, menu);

    //Used to put dark icons on light action bar
    boolean isLight = false;

    menu.add("Search")
        .setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.ic_search)
        .setActionView(R.layout.collapsible_edittext)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
    return true;
}

当我尝试在视图上通过其ID设置setonEditorActionListener时,应用程序崩溃:

EditText editText = (EditText) findViewById(R.id.search);

editText.setonEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            performSearch(v.getText().toString(), 3);
            return true;
        }
        return false;
    }
});

我需要在ActionBar中具有SearchField并在用户按下键盘上的“搜索”键时执行搜索,但是我不知道如何将setonEditorActionListener绑定到视图.

解决方法:

我假设R.id.search在您的R.layout.collapsible_edittext布局内?您在哪里调用findViewById()?例如,您是在onCreate()还是onResume()中调用它?您确定此时已创建菜单吗?

我建议将其包含在onCreateOptionsMenu()中.这样的事情可能会起作用:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.activity_main, menu);
    boolean isLight = false;
    int menuItemId = 
        menu.add("Search")
            .setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.ic_search)
            .setActionView(R.layout.collapsible_edittext)
            .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS |
                MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW)
            .getItemId();
    EditText editText =
        (EditText) menu.findItem(menuItemId).getActionView().findViewById(R.id.search);
    editText.setonEditorActionListener(...);
}

另一个选择是在调用MenuItem.setActionView(actionView)之前,扩大视图并附加侦听器.

(顺便说一句,如果您希望人们确定崩溃原因,则包含异常和堆栈跟踪会很有帮助.)

关于cocos2dx中onExitTransitionDidStart、onExit和onEnter、onEnterTransitionDidFinish处理机制的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.、android – ActivityOptions.makeSceneTransitionAnimation似乎不存在、android – `setEnterTransition`仅适用于`ActivityCompat.startActivity`、android-如何在ActionBarSherlock中将“ setOnEditorActionListener”设置为EditText?等相关知识的信息别忘了在本站进行查找喔。

本文标签: