我是Java编程的新手,试图掌握OOP.
所以我构建了这个抽象类:
public abstract class Vehicle{....}
Run Code Online (Sandbox Code Playgroud)
和2个子类:
public class Car extends Vehicle{....}
public class Boat extends Vehicle{....}
Run Code Online (Sandbox Code Playgroud)
Car并且Boat还包含一些不常见的唯一字段和方法(不具有相同的名称,因此我无法在Vehicle中为它们定义抽象方法).
现在在mainClass我设置了我的新车库:
Vehicle[] myGarage= new Vehicle[10];
myGarage[0]=new Car(2,true);
myGarage[1]=new Boat(4,600);
Run Code Online (Sandbox Code Playgroud)
在我尝试访问Car独有的一个字段之前,我对多态性非常满意,例如:
boolean carIsAutomatic = myGarage[0].auto;
Run Code Online (Sandbox Code Playgroud)
编译器不接受.我使用cast来解决这个问题:
boolean carIsAutomatic = ((Car)myGarage[0]).auto;
Run Code Online (Sandbox Code Playgroud)
这有效......但它对方法没有帮助,只是字段.意思是我做不到
(Car)myGarage[0].doSomeCarStuff();
Run Code Online (Sandbox Code Playgroud)
所以我的问题是 - 我的车库里到底有什么?我试图获得直觉以及了解"幕后"发生了什么.
为了将来的读者,请简要总结以下答案:
Car在myGarage[]Vehicle myGarage[])我有一个描绘人体的几何节点。物体的材质是透明的
let node = newScene.rootNode.childNode(withName: "man_mesh", recursively: true)
let nodeMaterial = node?.geometry?.firstMaterial
nodeMaterial?.emission.contents = UIColor(red: 0.0, green: 0.0, blue: 1.0, alpha: 1.0)
nodeMaterial?.transparencyMode = .rgbZero
nodeMaterial?.transparent.contents = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
Run Code Online (Sandbox Code Playgroud)
我试图获得的效果是对象在面向相机的区域完全透明,但当多边形面向侧面时变得更加不透明......这会产生一种闪亮的蓝色边缘。像这样:
知道如何创建这种效果吗?
谢谢
编辑:另一个有趣的点:看起来 SceneKit 确实支持菲涅耳效应。该效果会影响反射贴图 - 然而,一旦将透明度应用于对象,它也会影响反射率(完全透明也会使反射率消失) - 我相信这是 Apple 的一个概念错误 - 一种材料可以是透明的,仍然反射光!
我有以下代码从mySQL数据库中获取信息.DB包括几个表,其中包括一个Activity表,具有channelId字段,Channel具有userId字段的User表和具有userName字段的表.该函数getAllProjectACtivities(user,project)返回一个Activity对象数组的promise ,每个对象包括所有Activity表字段.该函数findChannel(channelId)返回单个Channel对象的承诺,包括所有Channel表字段.该函数findUser(userId)返回单个User对象的承诺,包括所有User表字段.所有3个函数都会向数据库隐藏JSON Ajax请求,并且已经过测试,可以独立运行.
我在这里要做的是获取活动列表,为每个活动获取频道,为每个频道获取用户.然后我构建一个包含2个活动字段和一个用户字段的活动表.
为此,我需要一个3阶段DB访问,产生对象数组.以下是代码:
$(document).ready(function(){
var projNum=1;
var userNum=1;
var globalActivityList; //this global array will store data from the beginning of the promise chain to be used at the end of the chain
$('#tableContainer').append('<table border="0" style="background-color: lightblue;"></table>');
var table = $('#tableContainer').children();
//here goes:
getUserProjectActivities(userNum,projNum)
.then(function (activityList){
table.append("<tr><th>Number</th><th>Description</th><th>Employee</th></tr>");
globalActivityList=activityList;
return Promise.all(activityList.map(function(activity){
//alert(activity.activityChannelId);//******** shows the right stuff …Run Code Online (Sandbox Code Playgroud)