- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
一段时间以来,我一直在使用 Java 创建适用于 Android 的游戏引擎。不幸的是,我遇到了这个问题,似乎没有调用 onResume() 方法。我正在使用线程来运行所有内容,当我最小化应用程序然后返回应用程序时,它只会给我一个空白的黑屏。但是当我关闭屏幕然后再打开时它确实有效。
我在 Activity 中使用的代码:
package org.simplecorporation.myengine.core.android;
import org.simplecorporation.myengine.core.Settings;
import org.simplecorporation.myengine.core.android.input.AndroidInput;
import org.simplecorporation.myengine.core.game.BaseGame;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.Window;
import android.view.WindowManager;
public abstract class AndroidActivity extends Activity {
/* The abstract methods*/
public abstract void activityCreated();
public abstract void activityPaused();
public abstract void activityResumed();
public abstract void activityStopped();
public abstract void activityRestarted();
public abstract void activityDestroy();
/* The android display */
public AndroidDisplay androidDisplay;
/* The onCreate method */
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Set the title
this.setTitle(Settings.Window.Title);
//Check the orientation and set it
if (AndroidSettings.ScreenOrientation == AndroidSettings.SCREEN_ORIENTATION_PORTRAIT)
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
else if (AndroidSettings.ScreenOrientation == AndroidSettings.SCREEN_ORIENTATION_LANDSCAPE)
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//Check if the activity should be fullscreen
if (Settings.Window.Fullscreen) {
//Get rid of the title bar
this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
//Make the activity fullscreen
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN , WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
/* The onCreate method */
protected void onCreate(BaseGame androidGame , Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Set the title
this.setTitle(Settings.Window.Title);
//Check the orientation and set it
if (AndroidSettings.ScreenOrientation == AndroidSettings.SCREEN_ORIENTATION_PORTRAIT)
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
else if (AndroidSettings.ScreenOrientation == AndroidSettings.SCREEN_ORIENTATION_LANDSCAPE)
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//Check if the activity should be fullscreen
if (Settings.Window.Fullscreen) {
//Get rid of the title bar
this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
//Make the activity fullscreen
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN , WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
//Create the display
androidDisplay = new AndroidDisplay(this , androidGame);
//Set the content view
this.setContentView(androidDisplay);
//Call the activity create method
this.activityCreated();
}
/* Called when the activity is paused */
public void onPause() {
super.onPause();
//Pause the thread
this.androidDisplay.androidGameThread.paused = true;
//Call the method
this.activityPaused();
}
/* Called when the activity is resumed */
public void onResume() {
super.onResume();
//Resume the thread
this.androidDisplay.androidGameThread.paused = false;
//Call the method
this.activityResumed();
}
/* Called when the activity is stopped */
public void onStop() {
super.onStop();
//Call the method
this.activityStopped();
}
/* Called when the activity is restarted */
public void onRestart() {
super.onRestart();
//Call the method
this.activityRestarted();
}
/* Called when the activity is destroyed */
public void onDestroy() {
super.onDestroy();
//Call the method
this.activityDestroy();
//Destroy
this.finish();
}
}
我在线程中使用的代码:
package org.simplecorporation.myengine.core.android;
import org.simplecorporation.myengine.core.game.BaseGame;
import org.simplecorporation.myengine.core.input.InputManager;
import android.util.Log;
import android.view.SurfaceHolder;
public class AndroidGameThread extends Thread {
/* Is the thread running */
public boolean running;
/* Is the thread paused */
public boolean paused;
/* The surface holder */
public SurfaceHolder surfaceHolder;
/* The android game */
public BaseGame androidGame;
/* The constructor */
public AndroidGameThread(SurfaceHolder surfaceHolder , BaseGame androidGame) {
//Set running to false
this.running = false;
//Set paused to false
this.paused = false;
//Assign the surface holder
this.surfaceHolder = surfaceHolder;
//Assign the android game
this.androidGame = androidGame;
}
/* The method to set the running variable */
public void setRunning(boolean running) {
this.running = running;
}
/* Returns whether the thread is running */
public boolean isRunning() {
return this.running;
}
/* The run method */
public void run() {
//Start the game
this.androidGame.create();
//Run while the variable running is true
while (running) {
//Check if the thread is paused
if (! this.paused) {
//Check the input
InputManager.checkInput();
//Set the game canvas to null
AndroidStore.gameCanvas = null;
//Try statement
try {
//Set the game canvas
AndroidStore.gameCanvas = this.surfaceHolder.lockCanvas();
synchronized (this.surfaceHolder) {
//Update/Render the game
this.androidGame.tick();
}
} finally {
//Check that the canvas isn't null
if (AndroidStore.gameCanvas != null) {
this.surfaceHolder.unlockCanvasAndPost(AndroidStore.gameCanvas);
}
}
}
}
}
}
另外,启动我使用的线程
import org.simplecorporation.myengine.core.Settings;
import org.simplecorporation.myengine.core.game.BaseGame;
import org.simplecorporation.myengine.core.input.InputManager;
import org.simplecorporation.myengine.utils.ScreenUtils;
import android.app.Activity;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class AndroidDisplay extends SurfaceView implements SurfaceHolder.Callback {
/* The android game */
public BaseGame androidGame;
/* The android game thread */
public AndroidGameThread androidGameThread;
/* The constructor */
public AndroidDisplay(Activity gameActivity , BaseGame androidGame) {
//Call the super constructor
super(gameActivity);
//Add the callback
this.getHolder().addCallback(this);
//Set the game activity in the AndroidStore
AndroidStore.gameActivity = gameActivity;
//Set the android game
this.androidGame = androidGame;
//Create the android game thread
this.androidGameThread = new AndroidGameThread(this.getHolder(), this.androidGame);
//Set the surface view focusable
this.setFocusable(true);
}
/* Called when the surface is created */
public void surfaceCreated(SurfaceHolder surfaceHolder) {
//Create the input
InputManager.create();
//Set the size of the screen in the settings if full screen
if (Settings.Window.Fullscreen) {
Settings.Window.Size.Width = ScreenUtils.getScreenWidth();
Settings.Window.Size.Height = ScreenUtils.getScreenHeight();
} else {
//Set the size of the screen in the settings
Settings.Window.Size.Width = this.getWidth();
Settings.Window.Size.Height = this.getHeight();
}
//Set the game resources
AndroidStore.gameResources = this.getResources();
//Create the game
this.androidGame.gameCreated();
//Create the paint object
AndroidStore.gamePaint = new Paint();
//Start the android game thread
this.androidGameThread.setRunning(true);
this.androidGameThread.start();
}
/* Called when the surface is changed */
public void surfaceChanged(SurfaceHolder surfaceHolder , int format , int width , int height) {
//Set the size of the screen in the settings
Settings.Window.Size.Width = ScreenUtils.getScreenWidth();
Settings.Window.Size.Height = ScreenUtils.getScreenHeight();
}
/* Called when the surface is destroyed */
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
//Should the loop continue
boolean retry = true;
while(retry) {
//Try and catch statement
try {
//Stop the game
this.androidGame.gameStopped();
//Close the game
this.androidGame.gameClosing();
//Join the thread
this.androidGameThread.join();
//Stop the while loop
retry = false;
} catch (InterruptedException e) {
}
}
}
}
为了运行所有这些,我有一个“扩展”AndroidActvity 并使用以下方法的类:
protected void onCreate(Bundle savedInstanceState) {
Settings.Window.Title = "MyEngine Android Tests";
Settings.Android = true;
Settings.Video.OpenGL = false;
Settings.Audio.SoundEffectVolume = 10;
AndroidSettings.ScreenOrientation = 1;
Settings.Window.Fullscreen = true;
this.onCreate(new FileTest() , savedInstanceState);
}
测试类:
import org.simplecorporation.myengine.core.Settings;
import org.simplecorporation.myengine.core.android.AndroidActivity;
import org.simplecorporation.myengine.core.android.AndroidSettings;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AndroidActivity {
protected void onCreate(Bundle savedInstanceState) {
Settings.Window.Title = "MyEngine Android Tests";
Settings.Android = true;
Settings.Video.OpenGL = false;
Settings.Audio.SoundEffectVolume = 10;
AndroidSettings.ScreenOrientation = 1;
Settings.Window.Fullscreen = true;
this.onCreate(new FileTest() , savedInstanceState);
}
@Override
public void activityCreated() {
// TODO Auto-generated method stub
}
@Override
public void activityPaused() {
// TODO Auto-generated method stub
Log.d("HELLO", "I HAVE BEEN PAUSED");
}
@Override
public void activityResumed() {
// TODO Auto-generated method stub
Log.d("HELLO", "I HAVE BEEN RESUMED");
}
@Override
public void activityStopped() {
// TODO Auto-generated method stub
Log.d("HELLO", "I HAVE BEEN STOPPED");
}
@Override
public void activityRestarted() {
// TODO Auto-generated method stub
Log.d("HELLO", "I HAVE BEEN RESTARTED");
}
@Override
public void activityDestroy() {
// TODO Auto-generated method stub
Log.d("HELLO", "I HAVE BEEN DESTROYED");
}
}
文件测试:
package com.simplecorporation.myengine.android.tests;
import java.util.List;
import org.simplecorporation.myengine.core.Settings;
import org.simplecorporation.myengine.core.audio.clip.AndroidAudio;
import org.simplecorporation.myengine.core.game.BaseGame;
import org.simplecorporation.myengine.core.game2d.entity.ImageEntity2D;
import org.simplecorporation.myengine.core.gui.GUIButton;
import org.simplecorporation.myengine.core.gui.GUICheckBox;
import org.simplecorporation.myengine.core.gui.GUIRenderer;
import org.simplecorporation.myengine.core.gui.GUIScrollBar;
import org.simplecorporation.myengine.core.gui.GUISlider;
import org.simplecorporation.myengine.core.gui.GUITextDisplayArea;
import org.simplecorporation.myengine.core.gui.font.GUIFont;
import org.simplecorporation.myengine.core.gui.font.bitmap.BitmapFont;
import org.simplecorporation.myengine.core.image.Image;
import org.simplecorporation.myengine.core.input.event.TouchEvent;
import org.simplecorporation.myengine.core.render.basic.BasicRenderer;
import org.simplecorporation.myengine.core.render.colour.Colour;
import org.simplecorporation.myengine.utils.AndroidFileUtils;
import org.simplecorporation.myengine.utils.ArrayUtils;
import org.simplecorporation.myengine.utils.FileUtils;
import org.simplecorporation.myengine.utils.font.FontUtils;
import android.os.Environment;
import android.util.Log;
public class FileTest extends BaseGame {
public ImageEntity2D image;
public Colour colour;
public GUIButton button;
public GUICheckBox checkBox;
public AndroidAudio audio;
public GUIFont bitmapFont;
public GUIScrollBar scrollBar;
public GUIScrollBar verticalslider;
public GUIScrollBar horizontalslider;
public GUITextDisplayArea textDisplayArea;
public FileTest() {
createGame();
}
@Override
public void gameCreated() {
// TODO Auto-generated method stub
image = new ImageEntity2D(new Image(R.drawable.menubutton));
image.position.x = 200;
image.position.y = 200;
image.width = 200;
image.height = 60;
image.rotationVelocity = 1;
colour = new Colour(0d, 0d, 0d, 1d);
button = new GUIButton("AndroidGUIButton" , "Click Me" , new GUIRenderer(new Colour[] {
Colour.LIGHT_BLUE , Colour.ORANGE , Colour.BLUE
} , FontUtils.buildGUIFont("Arial" , Colour.WHITE , 46f)));
button.position.x = 300;
button.position.y = 200;
button.width = 300;
button.height = 60;
button.visible = true;
checkBox = new GUICheckBox("AndroidCheckBox" , new GUIRenderer(new Colour[] { Colour.WHITE , Colour.BLUE }));
checkBox.position.x = 500;
checkBox.position.y = 300;
checkBox.width = 100;
checkBox.height = 100;
checkBox.visible = true;
bitmapFont = new GUIFont(new BitmapFont(new Image(R.drawable.test) , 40, 16));
GUIButton verticalsliderButton = new GUIButton("Button2" , "" , new GUIRenderer(new Colour[] {
Colour.ORANGE ,
Colour.LIGHT_BLUE ,
Colour.BLUE
} , FontUtils.buildGUIFont("Segoe UI" , Colour.WHITE , 20f)));
verticalsliderButton.width = 100;
verticalsliderButton.height = 20;
verticalsliderButton.visible = true;
verticalslider = new GUIScrollBar("Slider1" , verticalsliderButton , GUISlider.DIRECTION_VERTICAL , 1, new GUIRenderer(new Colour[] { Colour.RED }));
verticalslider.visible = true;
verticalslider.position.x = 200;
verticalslider.position.y = 200;
verticalslider.width = 30;
verticalslider.height = 100;
GUIButton horizontalsliderButton = new GUIButton("Button2" , "" , new GUIRenderer(new Colour[] {
Colour.ORANGE ,
Colour.LIGHT_BLUE ,
Colour.BLUE
} , FontUtils.buildGUIFont("Segoe UI" , Colour.WHITE , 20f)));
horizontalsliderButton.width = 20;
horizontalsliderButton.height = 100;
horizontalsliderButton.visible = true;
horizontalslider = new GUIScrollBar("Slider2" , horizontalsliderButton , GUISlider.DIRECTION_HORIZONTAL , 1, new GUIRenderer(new Colour[] { Colour.RED }));
horizontalslider.visible = true;
horizontalslider.position.x = 300;
horizontalslider.position.y = 300;
horizontalslider.width = 100;
horizontalslider.height = 30;
audio = new AndroidAudio(R.raw.encode , false , false);
List<String> text = ArrayUtils.toStringList(new String[] {
"Hello, this test application was made using MyEngine " + Settings.EngineVersion,
"with the build " + Settings.EngineBuild + ". Below this message you should find",
"a bitmap font:"
});
this.textDisplayArea = new GUITextDisplayArea("TextArea", text, FontUtils.buildGUIFont("Arial" , Colour.WHITE , 40f), Settings.Window.Size.Width);
this.textDisplayArea.position.x = 0;
this.textDisplayArea.position.y = 500;
this.textDisplayArea.visible = true;
AndroidFileUtils.writeToInternalStorage("hello.txt", ArrayUtils.toStringList(new String[] {
"Hello World, From hello.txt"
}));
this.textDisplayArea.setText(AndroidFileUtils.readFromInternalStorage("hello.txt"));
AndroidFileUtils.writeToExternalStorage("hello.txt", ArrayUtils.toStringList(new String[] {
"Hello World, From hello.txt in an External Storage file :)"
}));
this.textDisplayArea.setText(FileUtils.read("eclipse.txt", false));
Log.d("HELLO", "" + AndroidFileUtils.isExternalStorageWritable() + " " + Environment.getExternalStorageDirectory());
}
public void gameRender() {
BasicRenderer.setColour(colour);
BasicRenderer.renderFilledRectangle(0 , 0 , Settings.Window.Size.Width , Settings.Window.Size.Height);
BasicRenderer.setColour(Colour.BLUE);
BasicRenderer.renderFilledRectangle(100 , 100 , 100 , 100);
BasicRenderer.setColour(Colour.WHITE);
verticalslider.render();
horizontalslider.render();
image.render();
button.render();
checkBox.render();
textDisplayArea.render();
BasicRenderer.setColour(Colour.WHITE);
bitmapFont.render("This is a bitmap font :)" , 10 , 700);
}
public void gameUpdate() {
button.update();
checkBox.update();
image.update();
verticalslider.update();
horizontalslider.update();
if (button.clicked) {
colour = new Colour(0d , 0d , 0d , 1d);
audio.play();
}
textDisplayArea.update();
}
public void onTouch(TouchEvent e) {
this.colour = new Colour(this.colour.getR() + 0.01, this.colour.getG() + 0.01, this.colour.getB() + 0.01);
}
}
非常感谢。
最佳答案
谢谢大家:)我花了一整天的时间试图解决这个问题,我刚刚解决了这个问题。
我找到了这个 Android onResume not called ,然后我添加了一些对 Log.d() 的调用以尝试弄清楚发生了什么。通过将它们添加到 AndroidDisplay 和 AndroidActvity 中的每个方法,我注意到当我关闭和打开屏幕时,我得到了输出:'ACTIVITY PAUSED'、'ACTIVITY STOPPED'、'ACTIVITY RESTARTED' 和 'ACTIVITY RESUMED' 这是正如我所料,然后当点击菜单按钮时,有一个额外的输出,“SURFACE DESTROYED”,所以我更改了 AndroidDisplay,以阻止线程在表面被破坏时停止,所以我将该代码移动到一个名为 stopThread 的方法中() 然后我发现由于 AndroidDisplay 中的 surfaceCreated() 方法,我重新创建了同一个线程两次,所以我在调用 androidGameThread.start() 之前做了一个 if 语句,它使用androidGameThread.isAlive() 因此解决了这个问题。
新的AndroidDisplay代码:
package org.simplecorporation.myengine.core.android;
import org.simplecorporation.myengine.core.Settings;
import org.simplecorporation.myengine.core.game.BaseGame;
import org.simplecorporation.myengine.core.input.InputManager;
import org.simplecorporation.myengine.utils.ScreenUtils;
import android.app.Activity;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class AndroidDisplay extends SurfaceView implements SurfaceHolder.Callback {
/* The android game */
public BaseGame androidGame;
/* The android game thread */
public AndroidGameThread androidGameThread;
/* The boolean that states whether this has been created */
public boolean created;
/* The constructor */
public AndroidDisplay(Activity gameActivity , BaseGame androidGame) {
//Call the super constructor
super(gameActivity);
//Add the callback
this.getHolder().addCallback(this);
//Set the game activity in the AndroidStore
AndroidStore.gameActivity = gameActivity;
//Set the android game
this.androidGame = androidGame;
//Create the android game thread
this.androidGameThread = new AndroidGameThread(this.getHolder(), this.androidGame, this);
//Set created to false
this.created = false;
//Set the surface view focusable
this.setFocusable(true);
}
/* Called when the surface is created */
public void surfaceCreated(SurfaceHolder surfaceHolder) {
//Set created to true
this.created = true;
//Create the input
InputManager.create();
//Set the size of the screen in the settings if full screen
if (Settings.Window.Fullscreen) {
Settings.Window.Size.Width = ScreenUtils.getScreenWidth();
Settings.Window.Size.Height = ScreenUtils.getScreenHeight();
} else {
//Set the size of the screen in the settings
Settings.Window.Size.Width = this.getWidth();
Settings.Window.Size.Height = this.getHeight();
}
//Set the game resources
AndroidStore.gameResources = this.getResources();
//Create the game
this.androidGame.gameCreated();
//Create the paint object
AndroidStore.gamePaint = new Paint();
//Start the android game thread if it has not already started
this.androidGameThread.setRunning(true);
if (! this.androidGameThread.isAlive())
this.androidGameThread.start();
}
/* Called when the surface is changed */
public void surfaceChanged(SurfaceHolder surfaceHolder , int format , int width , int height) {
//Set the size of the screen in the settings
Settings.Window.Size.Width = ScreenUtils.getScreenWidth();
Settings.Window.Size.Height = ScreenUtils.getScreenHeight();
//Reassign the surface holder
this.androidGameThread.surfaceHolder = surfaceHolder;
}
/* Called when the surface is destroyed */
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
//Set created to false
this.created = false;
}
/* The method used to stop the thread */
public void stopThread() {
//Should the loop continue
boolean retry = true;
while(retry) {
//Try and catch statement
try {
//Stop the game
this.androidGame.gameStopped();
//Close the game
this.androidGame.gameClosing();
//Join the thread
this.androidGameThread.join();
//Stop the while loop
retry = false;
} catch (InterruptedException e) {
}
}
}
}
关于java - Android onResume() 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22914536/
为了让我的代码几乎完全用 Jquery 编写,我想用 Jquery 重写 AJAX 调用。 这是从网页到 Tomcat servlet 的调用。 我目前情况的类似代码: var http = new
我想使用 JNI 从 Java 调用 C 函数。在 C 函数中,我想创建一个 JVM 并调用一些 Java 对象。当我尝试创建 JVM 时,JNI_CreateJavaVM 返回 -1。 所以,我想知
环顾四周,我发现从 HTML 调用 Javascript 函数的最佳方法是将函数本身放在 HTML 中,而不是外部 Javascript 文件。所以我一直在网上四处寻找,找到了一些简短的教程,我可以根
我有这个组件: import {Component} from 'angular2/core'; import {UserServices} from '../services/UserService
我正在尝试用 C 实现一个简单的 OpenSSL 客户端/服务器模型,并且对 BIO_* 调用的使用感到好奇,与原始 SSL_* 调用相比,它允许一些不错的功能。 我对此比较陌生,所以我可能会完全错误
我正在处理有关异步调用的难题: 一个 JQuery 函数在用户点击时执行,然后调用一个 php 文件来检查用户输入是否与数据库中已有的信息重叠。如果是这样,则应提示用户确认是否要继续或取消,如果他单击
我有以下类(class)。 public Task { public static Task getInstance(String taskName) { return new
嘿,我正在构建一个小游戏,我正在通过制作一个数字 vector 来创建关卡,该数字 vector 通过枚举与 1-4 种颜色相关联。问题是循环(在 Simon::loadChallenge 中)我将颜
我有一个java spring boot api(数据接收器),客户端调用它来保存一些数据。一旦我完成了数据的持久化,我想进行另一个 api 调用(应该处理持久化的数据 - 数据聚合器),它应该自行异
首先,这涉及桌面应用程序而不是 ASP .Net 应用程序。 我已经为我的项目添加了一个 Web 引用,并构建了各种数据对象,例如 PayerInfo、Address 和 CreditCard。但问题
我如何告诉 FAKE 编译 .fs文件使用 fsc ? 解释如何传递参数的奖励积分,如 -a和 -target:dll . 编辑:我应该澄清一下,我正在尝试在没有 MSBuild/xbuild/.sl
我使用下划线模板配置了一个简单的主干模型和 View 。两个单独的 API 使用完全相同的配置。 API 1 按预期工作。 要重现该问题,请注释掉 API 1 的 URL,并取消注释 API 2 的
我不确定什么是更好的做法或更现实的做法。我希望从头开始创建目录系统,但不确定最佳方法是什么。 我想我在需要显示信息时使用对象,例如 info.php?id=100。有这样的代码用于显示 Game.cl
from datetime import timedelta class A: def __abs__(self): return -self class B1(A):
我在操作此生命游戏示例代码中的数组时遇到问题。 情况: “生命游戏”是约翰·康威发明的一种细胞自动化技术。它由一个细胞网格组成,这些细胞可以根据数学规则生存/死亡/繁殖。该网格中的活细胞和死细胞通过
如果我像这样调用 read() 来读取文件: unsigned char buf[512]; memset(buf, 0, sizeof(unsigned char) * 512); int fd;
我用 C 编写了一个简单的服务器,并希望调用它的功能与调用其他 C 守护程序的功能相同(例如使用 ./ftpd start 调用它并使用 ./ftpd stop 关闭该实例)。显然我遇到的问题是我不知
在 dos 中,当我粘贴此命令时它会起作用: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
在 dos 中,当我粘贴此命令时它会起作用: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
我希望能够从 cmd 在我的 Windows 10 计算机上调用 python3。 我已重新安装 Python3.7 以确保选择“添加到路径”选项,但仍无法调用 python3 并使 CMD 启动 P
我是一名优秀的程序员,十分优秀!